DAX分组和总和

时间:2014-01-07 16:36:49

标签: ssas dax

我对Adventure Works DB有以下DAX查询:

evaluate
(
   summarize
   (
      'Internet Sales',
      'Product Category'[Product Category Name],
      'Product Subcategory'[Product Subcategory Name],
      'Product'[Product Name],
      'Date'[Calendar Year],
      "Total Sales Amount", sum('Internet Sales'[Sales Amount])
   )
)
order by 'Product Category'[Product Category Name],
         'Product Subcategory'[Product Subcategory Name],
         'Product'[Product Name]

以此格式返回数据:

Accessories Bike Racks  Hitch Rack - 4-Bike 2008    22920
Accessories Bike Racks  Hitch Rack - 4-Bike 2007    16440
Accessories Bike Stands All-Purpose Bike Stand  2008    20670

我想将其归还:

CATEGORY        SUB CATEGORY    PRODUCT                 2007     2008      2009     2010
Accessories Bike Racks  Hitch Rack - 4-Bike 22920    16440     22920    16440
Accessories Bike Stands All-Purpose Bike Stand  20850    20670     22920    16440

结果集中每年应该有一列。

这可能吗?如果是这样的话?

由于

3 个答案:

答案 0 :(得分:1)

类似的东西:

EVALUATE
ADDCOLUMNS(
    SUMMARIZE(
        'Internet Sales',
        'Product Category'[Product Category Name],
        'Product Subcategory'[Product Subcategory Name],
        'Product'[Product Name]
        ),
"Total Sales Amount", CALCULATE(SUM('Internet Sales'[Sales Amount])),
"2007", CALCULATE(SUM('Internet Sales'[Sales Amount]), 'Date'[Calendar Year] = 2007)
"2008", CALCULATE(SUM('Internet Sales'[Sales Amount]), 'Date'[Calendar Year] = 2008)
"2009", CALCULATE(SUM('Internet Sales'[Sales Amount]), 'Date'[Calendar Year] = 2009)
)
ORDER BY 'Product Category'[Product Category Name],
    'Product Subcategory'[Product Subcategory Name],
    'Product'[Product Name]

DAX对解决问题的解决方案并不友好。像SQL这样的其他语言。在DAX中不存在枢轴功能,并且是手动转动项目的唯一方法。

有一些创造性的解决方案,但它们都围绕手动解决方案,即提供您需要的列和逻辑。这样做的结果是,每次添加一年,您都必须手动将其添加到查询中。

如果有更好的解决方案,我会很高兴听到,我仍在寻找自己。

顺便说一句,你不需要评价函数的括号,所以我个人不打扰使用它们,而是每个人都使用它们。

答案 1 :(得分:0)

您可能需要ADDCOLUMNS()函数,但不太确定

http://technet.microsoft.com/en-us/library/gg492204.aspx

答案 2 :(得分:0)

这是不可能的,因为这不是它应该如何工作。或者更确切地说,当您从DAX Studio移动到实际测量时,它会自动运行。

假设您在数据透视表中使用年份作为行标题,他们会自动对您的度量中的汇总结果强加过滤器(实际上过滤器已经应用于汇总的输入表)。

因此,只有相应年份的结果才会出现在您的汇总表中(即您也可以逐年删除该组的列。)