Ssas DAX分组与求和

Ssas DAX分组与求和,ssas,dax,Ssas,Dax,我对AdventureWorks数据库有以下DAX查询: evaluate ( summarize ( 'Internet Sales', 'Product Category'[Product Category Name], 'Product Subcategory'[Product Subcategory Name], 'Product'[Product Name], 'Date'[Calendar Year],

我对AdventureWorks数据库有以下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
在结果集中,每年都应该有一列

这可能吗?如果是,怎么做


谢谢

您可能需要ADDCOLUMNS()函数,但不确定是否退出


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

假设在透视表中使用年份作为行标题,它们将自动对度量值中的汇总结果应用过滤器(实际上过滤器已应用于汇总的输入表)

因此,只有相应年份的结果才会出现在您的汇总表中(即,您不妨删除该年份的“按列分组”。

类似于:

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中不存在透视功能,透视项目的唯一方法是手动

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

如果有更好的解决办法,我会很高兴听到,我仍然在寻找自己

顺便说一句,evaluate函数不需要括号,所以我个人不需要麻烦使用括号,而是每个括号都有自己的括号。

未来的观众注意——DAX的新版本意味着这个构造要容易得多——使用SummaryColumns()代替。