0

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

結果セットには毎年の列が必要です。

これは可能ですか?もしそうならどのように?

ありがとう

4

3 に答える 3

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 にはピボット機能がなく、項目をピボットする唯一の方法は手動です。

いくつかの創造的な解決策がありますが、それらはすべて手動の解決策、つまり必要な列とロジックを提供することを中心に展開しています。この結果、年が追加されるたびに手動でクエリに追加する必要があります。

より良い解決策があれば、私は喜んで聞いています.私はまだ自分自身を探しています.

ところで、評価関数にはブラケットは必要ないので、個人的にはブラケットを使用するのではなく、それぞれ独自に使用します。

于 2015-08-12T11:42:04.570 に答える