Treatas DAX関数が期待どおりに機能せず、完全な空白の列を返しています
TreatasDAXの機能を理解しようとしています。AssetsとTicketの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]))
ここで問題が発生します。「子の数」列が空白になるのはなぜですか。
期待される出力は次のとおりです。
回答
あなたの問題は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ポイント、あなたは質問に対して素晴らしい仕事をしました。他の人が簡単に再現できます。あなたはプロとして働いています!