powerbi - 处理 DAX 函数未按预期工作,它返回完整的空白列

标签 powerbi dax

我试图了解 Treatas DAX 函数。有两张表 Assets 票务 . 票务 表具有父子关系。对于 Asset[AssetKey] 的每个值,我想计算 Ticket 表中的 child 数。这些表之间有两种关系。一个活跃,一个不活跃。
问题:当我使用 Treatas 函数完成测量 child 人数返回空白。我用的公式 -

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
要复制场景,请按照以下步骤操作:
第一步:创建表 Assets :
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}})
Step2:在AssetKey列上创建Assets和Ticket表(一对多)之间的关系。
enter image description here
第3步:现在创建以下措施 -
Number Of Tickets = COUNT(Tickets[TicketKey])

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
现在的问题:为什么 child 人数列出来是空白的。
enter image description here
预期的输出是:
enter image description here

最佳答案

您的问题不是 TREATAS,而是 SUMMARIZE。 TREATAS 需要表格输入,因此您可以进行汇总。
请尝试以下操作:

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])
这将返回 1、2、3、4、5。逻辑,因为这是你要求它做的。现在 TREATAS 将对表 Ticket 执行相同的操作。所以它返回一个表,其中一列值为“空”,1,2。正是我们可以期待的。
接下来您对 AssetKey 执行 COUNT,刚刚创建的这个表没有此列,因此它返回空。
您要找的是栏目什么是计算 child :
Number of Child = 
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))
这将返回您正在寻找的内容。
enter image description here
PS:10分,你答题做的很好,方便别人复现。你是专业人士!!

关于powerbi - 处理 DAX 函数未按预期工作,它返回完整的空白列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63428597/

相关文章:

azure - 如何获取powerbi中工作区上所有数据集的刷新历史记录

powerbi - Power BI - 您看不到此报表的内容,因为您没有基础数据集的权限

powerbi - 电力商业智能 |从 YYYY Q 格式的日期类型列创建计算列。例如,2018 年第三季度

powerbi - 向下钻取 Power Bi 矩阵表

powerbi - Power BI - 根据前 N 个选择计算百分比度量

excel - 添加自定义和动态列

powerbi - 对多年数据集中的月份文本(一月、二月等)进行排序

azure - 使用 DirectQuery 在 PowerBi 中运行总和

azure - 如何在突触分析工作区的日志分析工作区中获取错误详细信息日志

powerbi - Power bi 计算比率