我想基于多个表创建一个自定义矩阵
给定这样的数据集:
Counterparty Product Deal Date Value
foo bar Buy 01/01/24 10.00
foo bar Buy 01/01/24 10.00
foo bar Sell 01/01/24 10.00
foo bar Sell 01/01/24 10.00
fizz bar Buy 01/01/24 10.00
fizz bar Buy 01/01/24 10.00
fizz buzz Sell 01/01/24 10.00
fizz buzz Sell 01/01/24 10.00
我创建了一个这样的矩阵:
Counterparty Bar Buzz Total
foo 40 0 40
fizz 20 20 40
Total 60 20 80
使用
Counterparty
作为行,Product
作为列,TotalValue
作为值:
--Create Table in model
Combinations =
CROSSJOIN(
VALUES('table1'[Counterparty]),
VALUES('table1'[Product])
)
--Create Measure for calculated totals
TotalValue =
VAR CurrentCounterparty = SELECTEDVALUE(Combinations[Counterparty])
VAR CurrentProduct = SELECTEDVALUE(Combinations[Product])
VAR TotalValue = CALCULATE(
SUM('table1'[Value]),
'table1'[Counterparty] = IF(HASONEVALUE(Combinations[Counterparty]), CurrentCounterparty, 'table1'[Counterparty]),
'table1'[product] = IF(HASONEVALUE(Combinations[Product]), CurrentProduct, 'table1'[Product])
)
RETURN IF(ISBLANK(TotalValue), FIXED(0, 0), TotalValue)
我还有一个具有不同值的类似表,我需要使用它来创建自定义列:
Counterparty Product Deal Date Value
foo bar Buy 01/01/24 11.00
foo bar Buy 01/01/24 09.00
foo bar Sell 01/01/24 09.00
foo bar Sell 01/01/24 10.00
fizz bar Buy 01/01/24 12.00
fizz bar Buy 01/01/24 08.00
fizz buzz Sell 01/01/24 09.00
fizz buzz Sell 01/01/24 10.00
最终矩阵应如下所示:
Counterparty Bar Buzz Total col1 col2
foo 40 0 40 39 1
fizz 20 20 40 39 1
Total 60 20 80 78 2
我认为我必须从两个表中创建一个新表,以便有正确的值来填充我的列,然后相应地创建度量,但我不确定如何继续。或者我愿意听取不同方法的建议。
编辑:我使用 this 作为参考,但在示例中,他们正在 excel 中创建所有内容,我不想那样处理,因为我需要使用我的表格动态填充
Products
。
Combinations
表需要包含 Table2
值,但删除任何重复项:
Combinations =
VAR t1 = CROSSJOIN(
VALUES('Table1'[Counterparty]),
VALUES('Table1'[Product])
)
VAR t2 = CROSSJOIN(
VALUES('Table2'[Counterparty]),
VALUES('Table2'[Product])
)
VAR u1 = UNION(
t1
,t2
)
RETURN DISTINCT(u1)
您的
c1
测量将反映 TotalValue
测量,但指向 Table2
:
c1 =
VAR CurrentCounterparty = SELECTEDVALUE(Combinations[Counterparty])
VAR CurrentProduct = SELECTEDVALUE(Combinations[Product])
VAR TotalValue = CALCULATE(
SUM('Table2'[Value]),
'Table2'[Counterparty] = IF(HASONEVALUE(Combinations[Counterparty]), CurrentCounterparty, 'Table2'[Counterparty]),
'Table2'[product] = IF(HASONEVALUE(Combinations[Product]), CurrentProduct, 'Table2'[Product])
)
RETURN IF(ISBLANK(TotalValue), FIXED(0, 0), TotalValue)
c2
测量将从 c1
中减去 TotalValue
:
c2 = [TotalValue] - [c1]
然后
c1
和 c2
可以添加到矩阵的 Values
中。
(我建议将
Product
移至矩阵的 Rows
部分,以获得更清晰的外观。)