簡體   English   中英

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函數來返回所有代理的列表,但沒有任何成功。 在此輸入圖像描述

以上是我想用一個單一措施實現的目標。

非常感謝

示例寫得很好的問題!


為此,我們首先創建一個獨立的計算表,用於不同的買家和賣家。

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

圖表與傳奇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM