Powerbi 给定日期2个表的幂双加权平均收益率
我想计算给定日期的两个关系表之间的平均收益率Powerbi 给定日期2个表的幂双加权平均收益率,powerbi,Powerbi,我想计算给定日期的两个关系表之间的平均收益率 Table1 Table2 +-------------------------------+ +-------------------------------+ | ID TradeDate Amount | | ID TradeDate Yield | +-------------------------------+ +---
Table1 Table2
+-------------------------------+ +-------------------------------+
| ID TradeDate Amount | | ID TradeDate Yield |
+-------------------------------+ +-------------------------------+
| 1 2018/11/30 100 | | 1 2018/11/8 2.2% |
| 1 2018/11/8 101 | | 1 2018/8/8 2.1% |
| 1 2018/10/31 102 | | 1 2018/5/8 2.0% |
| 1 2018/9/30 103 | | 2 2018/9/8 1.7% |
| 2 2018/11/30 200 | | 2 2018/6/8 1.6% |
| 2 2018/10/31 203 | | 2 2018/3/8 1.5% |
| 2 2018/9/30 205 | | 3 2018/10/20 1.7% |
| 3 2018/11/30 300 | | 3 2018/7/20 1.6% |
| 3 2018/10/31 300 | | 3 2018/4/20 1.6% |
| 3 2018/9/30 300 | +-------------------------------+
+-------------------------------+
我创建了一个名为“DateList”的表,并使用切片器选择指定的日期
屏幕截图日期列表。
我希望取得以下成果:
as of *11/9/2018*
+-----------------------------------------------------------------+
| ID LastDate Value LatestYieldDate LastYield |
+-----------------------------------------------------------------+
| 1 2018/11/8 101 2018/11/8 2.2% |
| 2 2018/10/31 203 2018/9/8 1.7% |
| 3 2018/10/31 300 2018/10/20 1.7% |
+-----------------------------------------------------------------+
| Total 604 1.7836% |
+-----------------------------------------------------------------+
目前,我使用以下公式来实现部分结果
在表1中创建两个度量
LastDate =
VAR SlicerDate = MIN(DateList[Date])
VAR MinDiff =
MINX(FILTER(ALL(Table1),Table1[ID] IN VALUES(Table1[ID])),
ABS(SlicerDate - Table1[TradeDate]))
RETURN
MINX(FILTER(ALL(Table1),Table1[ID] IN VALUES(Table1[ID])
&& ABS(SlicerDate - Table1[TradeDate]) = MinDiff),
Table1[TradeDate])
Value = CALCULATE(SUM(Table1[Amount]), FILTER(Table1, Table1[TradeDate] = [LastDate]))
在表2中创建两个度量
LastYieldDate =
VAR SlicerDate = MIN(DateList[Date])
VAR MinDiff =
MINX(FILTER(ALL(Table2),Table2[ID] IN VALUES(Table2[ID])),
ABS(SlicerDate - Table2[TradeDate]))
RETURN
MINX(FILTER(ALL(Table2),Table2[ID] IN VALUES(Table2[ID])
&& ABS(SlicerDate - Table2[TradeDate]) = MinDiff),
Table2[TradeDate])
LastYield = CALCULATE(SUM(Table2[Yield]), FILTER(Table2,
Table2[TradeDate] = [LastYieldDate]))
我不知道如何计算两个表之间的正确平均收益率
这是我目前的结果
屏幕截图当前结果。
首先需要为
ID
值创建一个桥接表,以便更轻松地使用这两个表
IDList = VALUES(Table1[ID])
现在,我们将在我们的可视化应用程序中使用IDList[ID]
,而不是从另一个表中使用ID
我们用于衡量最后平均收益率的指标是基本和积平均值:
LastYieldAvg =
DIVIDE(
SUMX(IDList, [Value] * [LastYield]),
SUMX(IDList, [Value])
)
注意,当只有一个ID
值时,它简化为
[Value] * [LastYield] / [Value] = [LastYield]
再次感谢亚历克西斯。我可以直接使用DAX而不是创建桥接表吗?嗨,Alexis,如果我在表1和表2中有一个名为[company]的附加列(如a、B、C等),我如何在桥接表[IDList]中组合[company]和[ID]?谢谢,还有一些。