Power BI - 用于引用值列表的 DAX 度量。计算每个经纪人的净营业额 - 更优雅的解决方案?

Power BI - DAX measure to reference a list of values. Calculate net turnover per broker - more elegant solution?

以下是股票交易数据的简化版本。

StockData = 
DATATABLE (
    "STOCK", STRING,
    "Date", DATETIME,
    "Buyer", STRING,
    "Seller", STRING,
    "Turnover", INTEGER,
    {
         { "AAPL", "2019/04/07", "GSI", "BRC", 100 },
         { "AAPL", "2019/04/07", "CITI", "JPM", 500 },
         { "AAPL", "2019/04/07", "JPM", "GSI", 700 },
         { "AAPL", "2019/04/08", "GSI", "JPM", 300 },
         { "AAPL", "2019/04/08", "GSI", "CITI", 800 },
         { "AAPL", "2019/04/08", "JPM", "BRC", 400 },
         { "MSFT", "2019/04/07", "GSI", "GSI", 500 },
         { "MSFT", "2019/04/07", "JPM", "BRC", 700 },
         { "MSFT", "2019/04/07", "BRC", "GSI", 800 },
         { "MSFT", "2019/04/08", "GSI", "BRC", 500 },
         { "MSFT", "2019/04/08", "GSI", "JPM", 600 },
         { "MSFT", "2019/04/08", "CITI", "BRC", 500 }
    }
)

目标是计算经纪人每天的净营业额。

我可以通过以下 DAX 指标来实现这一目标

Test BRC Net Turnover = 
VAR TotalBuy = CALCULATE(SUM(StockData[Turnover]),StockData[Buyer] = "BRC")
VAR TotalSell = CALCULATE(SUM(StockData[Turnover]),StockData[Seller] = "BRC")
Return TotalBuy - TotalSell

然而,为了获得上面示例数据中所有(四)经纪人的净营业额,我必须用不同的标准重写四次度量,即,而不是使用 "BRC" 我必须使用 "GSI"等...

真实数据集由 50 个不同的经纪人代码组成,因此具有 50 个不同度量的解决方案是不可行的。

如何让这个 DAX 函数遍历我的数据集中的所有 Broker 代码。考虑到股票的过滤器。即,如果 MSFT 不存在典型的经纪人代码,但 AAPL 则该措施将考虑到这一点。

我已经尝试 values 函数 return 所有经纪人的列表,但没有成功。

以上是我想通过一项措施实现的。

非常感谢

问题写得很好!


为此,我们首先创建一个独立的计算 table 用于不同的买家和卖家。

Brokers = VALUES( StockData[Buyer] )

现在我们可以将 Brokers[Buyer] 放入 Legend 字段并编写一个读取该值的度量。

Net Turnover =
VAR Broker = SELECTEDVALUE ( Brokers[Buyer] )
VAR TotalBuy = CALCULATE ( SUM ( StockData[Turnover] ), StockData[Buyer] = Broker )
VAR TotalSell = CALCULATE ( SUM ( StockData[Turnover] ), StockData[Seller] = Broker )
RETURN
    TotalBuy - TotalSell