【发布时间】: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,以便创建交互式可视化。上面的数据是例如创建的,所以我们需要假设col2,col3有多个因素。
我想要的measure是relativity,Col4中的值除以Col1和Col2下的第一个值。
我想的结果,但我在数据表中不需要这个,因为当我创建可视化并为其他列添加过滤器时,Col5、Col6 等我没有在此示例中显示:
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下有两个因子Y和Z,那么当我过滤它们时,相对性就会改变。 -
@PeterChen
the value in Col4 divide the first value under Col1 and Col2., 'Col3' 你想怎么改 如果是其他因素,放在by = .(Col1, Col2, Col3) -
@akrun 如果我只想创建一个按
Col1~Col3分组的表,我可以简单地使用by。但是,如果我在Col3中过滤不同的因素后,相对性发生了变化,那么这种方式是不正确的