【问题标题】:Power BI relativity measure with mutiple groups具有多个组的 Power BI 相关性度量
【发布时间】:2019-05-28 19:00:06
【问题描述】:

我有一个简单创建的数据:

Col1      Col2   Col3   Col4    
2014/1/1  A      Y      10  
2014/4/1  A      Y      15  
2015/1/1  A      Z      15   
2015/4/1  A      Z      30  
2014/1/1  B      Y      20  
2014/4/1  B      Y      30   
2015/1/1  B      Z      40   
2015/4/1  B      Z      80   

我想在Power BI 中创建一个measure,以便创建交互式可视化。上面的数据是例如创建的,所以我们需要假设col2col3有多个因素。

我想要的measurerelativityCol4中的值除以Col1Col2下的第一个值。

我想的结果,但我在数据表中不需要这个,因为当我创建可视化并为其他列添加过滤器时,Col5Col6 等我没有在此示例中显示:

Col1      Col2   Col3   Col4   relativity_Col3ALL   relativity_Col3EqualsYorZ
2014/1/1  A      Y      10     1                    1
2014/4/1  A      Y      15     1.5                  1.5
2015/1/1  A      Z      15     1.5                  1
2015/4/1  A      Z      30     3                    2
2014/1/1  B      Y      20     1                    1
2014/4/1  B      Y      30     1.5                  1.5
2015/1/1  B      Z      40     2                    1
2015/4/1  B      Z      80     4                    2

所以我绘制它并在绘图旁边添加过滤器。当我在过滤器Col3 中选择 Y 时,绘图将自动更改。

我在R中提供我认为的代码:

dt <- data.table::as.data.table(dt)
dt[, relativity := Col4 / Col4[1], by = .(Col1, Col2)]

但上面的代码是不正确的,因为它没有考虑Col3。我只想提Col4 / Col4[1]Col4 / first(Col4)

我在 Power BI 中尝试过测量:

relativity = CALCULATE(DIVIDE(dt[Col4], dt[AnotherMeasure]), MIN(dt[Col1]))

我知道这是假的。
任何人都可以帮忙吗?

更新
我尝试了@Alexis Olson 的代码并修改为:

relativity = 
VAR YR = MIN(dt[Col1].[Year])
VAR QT = MIN(dt[Col1].[Quarter])
VAR PF = CALCULATE(TOTALQTD(SUM(dt[Col4]), dt[Col1].[Date]), dt[Col1].[Year] = YR, dt[Col1].[Quarter] = QT) 
RETURN
    DIVIDE(SUM(dt[Col4]), PF)

但是,当我在报告中进行可视化时,它都显示1

我也试过这个:

relativity = 
VAR YR = CALCULATE(MIN(dt[Col1].[Year]), ALLEXCEPT(dt, dt[Col2]))
VAR QT = CALCULATE(MIN(dt[Col1].[Quarter]), ALLEXCEPT(dt, dt[Col2]))
VAR PFQTD = TOTALQTD(SUM(dt[Col4]), dt[Col1].[Date])
VAR MPFQTD = CALCULATE(MAX(PFQTD), FILTER(dt, dt[Col1].[Year] = YR), FILTER(dt, dt[Col1].[Quarter] = QT)) 
RETURN
    MPFQTD

失败了

【问题讨论】:

  • 你只提供Col4,那它会如何考虑Col3
  • 这里的困难部分是查找要除以的内容,但这可能会对您有所帮助:stackoverflow.com/questions/52525377/…
  • 我的意思是如果Col3下有两个因子YZ,那么当我过滤它们时,相对性就会改变。
  • @PeterChen the value in Col4 divide the first value under Col1 and Col2., 'Col3' 你想怎么改 如果是其他因素,放在by = .(Col1, Col2, Col3)
  • @akrun 如果我只想创建一个按Col1~Col3 分组的表,我可以简单地使用by。但是,如果我在Col3 中过滤不同的因素后,相对性发生了变化,那么这种方式是不正确的

标签: r powerbi dax measure


【解决方案1】:

使用来自this Q&A 的逻辑,您可以创建一个计算列,如下所示:

relativity =
VAR FirstCol1 = CALCULATE ( MIN ( dt[Col1] ), ALLEXCEPT ( dt, dt[Col2], dt[Col3] ) )
VAR FirstCol4 = CALCULATE ( VALUES ( dt[Col4] ), dt[Col1] = FirstCol1 )
RETURN
    DIVIDE ( dt[Col4], FirstCol4 )

这会查找Col2Col3 相同值的第一个日期,然后找到第一个日期的Col4 值,最后将当前Col4 值除以第一个Col4 值.

ALLEXCEPT 删除除您指定的列之外的行上下文。如果您想要relativity_Col3_All,则只需从ALLEXCEPT 规范中删除该列即可。

【讨论】:

  • 你能在ALLEXCEPT上解释更多吗?
  • 此外,当我在报告中可视化时,是否可以计算FirstCol1。澄清一下,这意味着如果我在报告中创建一个表格,相对性将根据我选择放入此表格的内容以及日期层次结构自动更改。谢谢。
  • 我搜索了ALLEXCEPT,但仍然有点困惑。似乎当我添加ALLEXCEPT 时,我得到relativity_Col3EqualsYorZ。但是,一旦我在报告选项卡中全选并创建表格,这不会自动更改为获取 relativity_Col3_All 的值。
  • 如果您正在寻找动态的东西,那么它不能是计算列,而是一个度量,需要以不同的方式编写。
  • 是的。这就是我想为动态测量创建的。上面的答案符合标准吗?我在报告选项卡中没有得到正确的结果。
猜你喜欢
  • 2021-12-18
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2020-10-20
相关资源
最近更新 更多