问题描述
我试图了解Treatas DAX功能。有两个表资产和 Ticket 。 票证表具有父子关系。对于Asset [AssetKey]的每个值,我想计算故障单表中的子代数。这些表之间有两个关系。一活跃和一非活跃。
问题:当我使用Treatas函数完成度量时,孩子数被空白。我用的公式-
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
要复制该方案,请执行以下步骤:
步骤1:创建表资产:
Asset = DATATABLE("AssetKey",INTEGER,"Name",STRING,{{1,"Australia"},{2,"Belgium"},{3,"Canada"},{4,"Denmark"},{5,"England"}})
创建表格门票
Tickets = DATATABLE("AssetKey","ParentId","TicketKey",{{3,1,1},{1,Blank(),3},4},2,5},6},7},8},9},10}})
第2步:在AssetKey列上的Assets和Ticket表之间建立关系(一对多)。
Step3:现在创建以下度量-
Number Of Tickets = COUNT(Tickets[TicketKey])
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),Tickets[ParentId]))
现在的问题:为什么孩子数列为空白。
预期输出为:
解决方法
您的问题不是TREATAS,而是汇总。 TREATAS需要表输入,因此您可以进行总结。
尝试以下操作:
summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])
这将返回1,2,3,4,5。逻辑,因为这就是您要执行的操作。现在TREATAS将在票务表上执行相同的操作。因此,它返回一个表,该表的一列值为“ empty”,1,2。正是我们可以期望的。 接下来,您在AssetKey上执行COUNT,此刚创建的表没有此列,因此返回空。
您要查找的是一个列,用于计算子项:
Number of Child =
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]),filter(Tickets,Akey = Tickets[ParentId]))
PS:10分,您在提问的问题上做得很出色,易于他人复制。你是专业人士!!