Treatas DAX関数が期待どおりに機能せず、完全な空白の列を返しています

Aug 16 2020

TreatasDAXの機能を理解しようとしています。AssetsTicketの2つのテーブルがあります。チケットテーブルには親子関係があります。Asset [AssetKey]の値ごとに、チケットテーブルの子の数を計算したいと思います。これらのテーブルの間には2つの関係があります。1つはアクティブでもう1つは非アクティブです。

問題:Treatas関数を使用すると、完全測度の子の数が空白になります。私は式を使用しました-

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))

シナリオを複製するには、以下の手順に従います。

ステップ1:テーブルAssetを作成します:

Asset = DATATABLE("AssetKey",INTEGER,"Name",STRING,{{1,"Australia"},
{2,"Belgium"},
{3,"Canada"},
{4,"Denmark"},
{5,"England"}})

テーブルチケットを作成する

Tickets = DATATABLE("AssetKey",INTEGER,"ParentId",INTEGER,"TicketKey",INTEGER,{{3,1,1},
{1,Blank(),1},
{3,1,3},
{2,Blank(),4},
{4,2,5},
{3,1,6},
{2,Blank(),7},
{4,2,8},
{1,Blank(),9},
{5,2,10}})

ステップ2:AssetsKey列にAssetsとTicketテーブル(1対多)の関係を作成します。

ステップ3:以下のメジャーを作成します-

Number Of Tickets = COUNT(Tickets[TicketKey])

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))

ここで問題が発生します。「数」列が空白になるのはなぜですか。

期待される出力は次のとおりです。

回答

1 Aldert Aug 16 2020 at 23:23

あなたの問題はTREATASではなくSUMMARIZEです。TREATASはテーブル入力を期待しているので、要約します。

次のことを試してください。

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

これにより、1,2,3,4,5が返されます。これがあなたがそれをするように頼んだことだからです。今、TREATASはテーブルチケットで同じことをするつもりです。したがって、1つの列の値が「空」のテーブルを返します1,2。まさに私たちが期待できること。次にAssetKeyでCOUNTを実行すると、作成されたばかりのこのテーブルにはこの列がないため、空が返されます。

あなたが探しているのは、子供たちを計算しているです:

Number of Child = 
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))

これにより、探しているものが正確に返されます。

PS:10ポイント、あなたは質問に対して素晴らしい仕事をしました。他の人が簡単に再現できます。あなたはプロとして働いています!