创建自定义列并附加到矩阵

问题描述 投票:0回答:1

我想基于多个表创建一个自定义矩阵

给定这样的数据集:

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

powerbi dax
1个回答
0
投票

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
中。

Output Matrix

(我建议将

Product
移至矩阵的
Rows
部分,以获得更清晰的外观。)

© www.soinside.com 2019 - 2024. All rights reserved.