【问题标题】:DAX: Use measure outcome to populate calculated column without recalculating measure per rowDAX:使用度量结果填充计算列,而无需重新计算每行的度量
【发布时间】:2017-07-10 03:02:27
【问题描述】:

我在 PowerBI 中有两个表。一个名为“Fact_WorstInstance”的文件包含 (Index,Instance) 行。例如:

1,2
2,1
3,2

一个名为“Fact_AllInstances”的行包含 (Index,Instance,Value) 行。例如:

1,1,'Red'
1,2,'Green'
2,1,'Amber'
2,2,'Red'
2,3,'Brown'
3,1,'Green'
3,2,'Blue'

第一个表本质上是一个指针,指向第二个表中给定索引的最差条目(由某些外部系统分类)。

有一个切片器,用户可以在其中看到索引。

我要做的是在“Fact_WorstInstance”表中找到最高可见索引的最差实例值,然后从“Fact_AllInstances”表中获取该实例的所有索引和值行。

例如,如果切片器未过滤,则 (3,2) 应该是来自“Fact_WorstInstance”表的活动行,并且应该用于从“Fact_AllInstances”表中获取实例 2

1,2,'Green'
2,2,'Red'
3,2,'Blue'

来自“Fact_AllInstances”表。

我尝试通过许多不同的方式来做到这一点,方法是在“Fact_WorstInstance”上创建一个度量,它给出了最高的可见行。然后使用此度量在“Fact_AllInstances”上创建一个计算列,其中 1 表示最差,0 表示不是最差。然后将此计算列用作 PowerBI 中的过滤器。

度量本身给出期望值。我遇到的问题是,当度量用于创建计算列时,我无法找到一种方法来停止根据计算列的行过滤索引 - 因此每一行的度量结果都会发生变化。

我的衡量标准:

Worst Entry = CALCULATE(FIRSTNONBLANK(Fact_WorstInstance[Instance],1),filter(ALLSELECTED(Fact_WorstInstance),Fact_WorstInstance[Index]=MAX(Fact_WorstInstance[Index])))

我的专栏:

  WorstColumn = if(Fact_AllInstances[Instance]=[Worst Entry],1,0) 

所以我没有得到上面的输出,而是得到

1,2,'Green'
2,1,'Amber' --> because for Index 2, the measure gives index 1 as worst
3,2,'Blue'

【问题讨论】:

    标签: dax


    【解决方案1】:

    这是您可能想要实施的解决方案。

    首先,计算列不受切片器/页面过滤器的影响,您需要为此创建一个度量,因此您解决问题的方式将不起作用。

    创建一个包含唯一实例值的附加计算表。在 Power BI 的“建模”选项卡中,有一个用于创建 New Table 的图标,您可以在其中使用表达式来生成表格。

    使用这个表达式:

    IsntancesCalcTable = VALUES(Fact_WorstInstance[Instance])
    

    现在您的模型中有一个名为 InstancesCalcTable 的表。

    InstancesCalcTable 中的Instance 列拖放到Fact_WorstInstanceInstance 列中,这将在InstancesCalcTableFact_WorstInstance 之间通过Instance 创建关系。在Relationships 视图中将在两个表之间绘制一条线,双击该线,您将看到Edit Relationship 窗口。

    确保它看起来像这样:

    然后做同样的事情来创建InstancesCalcTableFact_AllInstances 之间的关系。

    你将以这样的模型结束:

    然后您可以在切片器中使用Fact_WorstInstance 表中的Index 列,它将过滤Fact_AllInstances 表以仅获取选定的实例。

    但是,如果您没有任何过滤器,则会显示 Fact_AllInstances 中的所有行。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      相关资源
      最近更新 更多