【发布时间】:2021-10-26 13:20:39
【问题描述】:
浏览了许多帖子后,我仍在努力为我试图从 MS Excel 转换到 PowerBI 的报告找到解决方案。
问题
在 PowerBI 的报告部分创建一个表格,该表格具有唯一的货币列表(基于 2 列)及其对应的 FXexposure,它们是基于 2 列中的每个货币边定义的。下面我展示了我在 Excel 中使用的源数据和工作原理,我正在尝试复制它们。
源数据(来自数据库表)
| a | b | d | d | e | f | g |
|---|---|---|---|---|---|---|
| Instrument | Currency 1 | Currency 2 | FX nominal 1 | FX nominal 2 | FXNom1 - Gross | FXNom2 - Gross |
| FWD EUR/USD | EUR | USD | -7.965264529 | 7.90296523 | 7.97 | 7.90 |
| FWD USD/JPY | USD | JPY | 1.030513307 | -1.070305687 | 1.03 | 1.07 |
| Instrument 1 | USD | 1.75862819 | 1.76 | 0.00 | ||
| Instrument 2 | USD | TRY | 0 | 3.45E-04 | 0.00 | 0.00 |
| Instrument 3 | JPY | 1.121782037 | 1.12 | 0.00 | ||
| Instrument 4 | EUR | 6.2505079 | 6.25 | 0.00 | ||
| FWD EUR/CNH | EUR | CNH | 0.007591392 | 3.00E-09 | 0.01 | 0.00 |
| Instrument 5 | RUB | 6.209882675 | 6.21 | 0.00 |
F2 = ABS(FX 标称 1) G2 = ABS(FX 标称 2)
在 excel 中报告输出
| a | b | c | d | e |
|---|---|---|---|---|
| FX | Long | Short | Net | **Gross ** |
| 0 | 0.00 | 0.00 | 0.00 | 0.00 |
| RUB | 6.21 | 0.00 | 6.21 | 6.21 |
| EUR | 6.26 | -7.97 | -1.71 | 14.22 |
| JPY | 1.12 | -1.07 | 0.05 | 2.19 |
| USD | 10.69 | 0.00 | 10.69 | 10.69 |
| CNH | 0.00 | 0.00 | 0.00 | 0.00 |
| TRY | 0.00 | 0.00 | 0.00 | 0.00 |
下面是我的 Excel 公式,用于重新创建我正在寻找的内容。
A2: =IFERROR(LOOKUP(2, 1/(COUNTIF(Report!$A$1:A1,Data!$B$2:$B$553)=0), Data!$B$2:$B$553), LOOKUP(2, 1/(COUNTIF(Report!$A$1:A1, Data!$C$2:$C$553)=0), Data!$C$2:$C$553))
B2: =((SUMIFS(Data!$D$2:$D$553, Data!$B$2:$B$553, Report!$A2, Data!$D$2:$D$553, ">0"))+(SUMIFS(Data!$E$2:$E$553, Data!$C$2:$C$553, Report!$A2, Data!$E$2:$E$553, ">0")))
C2: =((SUMIFS(Data!$D$2:$D$553, Data!$B$2:$B$553, Report!$A3, Data!$D$2:$D$553, "<0"))+(SUMIFS(Data!$E$2:$E$553, Data!$C$2:$C$553, Report!$A3, Data!$E$2:$E$553, "<0")))
D2: =(SUMIF(Data!$B$1:$B$553,Report!$A3,Data!$D$1:$D$553)+SUMIF(Data!$C$1:$C$553,Report!$A3,Data!$E$1:$E$553))
E2: =(SUMIF(Data!$B$1:$B$554,Report!$A3,Data!$F$1:$F$554)+SUMIF(Data!$C$1:$C$554,Report!$A3,Data!$G$1:$G$554))
现在我相信我已经设法通过使用 UNIQUE/SELECTCOLUMNS 函数找到了一个 hack,但是当您尝试绘制输出图形时,它非常小(就好像它试图在幕后找到其他数据一样) .请注意,我倾向于过滤日期以获得我需要的输出(这是使用跨其他数据表的关系映射的)。
FX =
DISTINCT (
UNION (
SELECTCOLUMNS ( DATA, "Date", [DATE], "Currency", [CURRENCY1], "FXNom", [FXNOMINAL1] ),
SELECTCOLUMNS ( DATA, "Date", [DATE], "Currency", [CURRENCY2], ,"FXNom", [FXNOMINAL2] )
)
)
如果有人有任何想法,我将非常感激,因为我仍然觉得我的解决方法更像是一个幸运的黑客。
谢谢!
【问题讨论】:
-
那么,它是在寻找“幕后的其他数据”还是其他什么问题?
-
嘿山姆。我不是更多的“幕后数据”,更可能是我让它工作的尝试并不完美。因此看看其他人是否会尝试另一种方式。
-
那么,D 或 E 中的负数是空头,D 或 E 中的正数是多头,净 = 空头 + 多头,毛 = 绝对值(空头)+ 绝对值(多头)?
-
您的方法在我看来是正确的。我不认为你会想要 DISTINCT。尽管重复值不太可能具有如此高的精度,但您不希望将两个相同的位置压缩为一个。我想知道您的图表是否看起来很小,因为您期望跨日期的累积值?您需要为这样的聚合值创建另一个度量。
标签: excel powerbi dax powerbi-desktop