我對 DAX 和 PowerBi 有點陌生,我需要將我的 SQLIF陳述句翻譯成 PowerBi 上的任何語法,以實作我想要的輸出。
我要翻譯的sql代碼:
IF (Payment.payment>0) AND (Account.PV = Account.GV) THEN 1 ELSE 0
我想在Payment表上創建一個計算列,該列將回傳1或0,以便我可以使用它來過濾滿足我條件的所有記錄
account_id就是這兩張表的關系
這是一個示例資料供參考:帳戶表
| 帳戶ID | 光伏 | gv | 截止日期 |
|---|---|---|---|
| 123 | 100 | 200 | 2022 年 8 月 8 日 |
| 124 | 200 | 200 | 2022 年 8 月 9 日 |
| 125 | 300 | 800 | 2022 年 8 月 10 日 |
| 126 | 400 | 670 | 2022 年 8 月 11 日 |
| 127 | 500 | 500 | 2022 年 8 月 12 日 |
| 128 | 600 | 600 | 2022 年 8 月 13 日 |
| 129 | 700 | 1000 | 2022 年 8 月 14 日 |
| 130 | 800 | 760 | 2022 年 8 月 15 日 |
| 131 | 900 | 900 | 2022 年 8 月 16 日 |
| 132 | 1000 | 1000 | 2022 年 8 月 17 日 |
| 133 | 1100 | 2300 | 2022 年 8 月 9 日 |
這是一個示例資料供參考:付款表
| 付款ID | 付款號碼 | 支付 | 付款日期 | 帳戶ID | _測驗 |
|---|---|---|---|---|---|
| 101 | 554321 | 1000 | 2022 年 3 月 1 日 | 123 | 0 |
| 102 | 554322 | 1200 | 2022 年 3 月 21 日 | 124 | 1 |
| 103 | 554322 | 1100 | 2022 年 4 月 28 日 | 124 | 1 |
| 104 | 554323 | 2500 | 2022 年 5 月 4 日 | 131 | 1 |
| 105 | 554324 | 3000 | 2022 年 5 月 14 日 | 133 | 0 |
| 106 | 554325 | 3000 | 2022 年 5 月 14 日 | 132 | 1 |
| 107 | 554322 | 1200 | 2022 年 3 月 21 日 | 124 | 1 |
| 108 | 554323 | 2500 | 2022 年 4 月 5 日 | 131 | 1 |
| 109 | 554328 | 3100 | 2022 年 4 月 5 日 | 128 | 0 |
我嘗試過的代碼,但我無法幫助自己找到正確的方法來正確執行并回傳我需要的輸出
_test = IF(Payments[payment]>0 && RELATED('Account'[PV])=RELATED('Account'[GV]), 1)_test = IF(AND(Payments[payment])>0, RELATED('Account'[PV])=RELATED('Account'[GV])),1,0)
任何建議都非常感謝。請推薦應該使用什么樣的語法/函式來實作輸出,或者除了IF陳述句之外可以使用什么解決方法
uj5u.com熱心網友回復:
您面臨的問題RELATED是 RELATED 僅適用于從一側到多側。
這意味著,如果您將軸從一側帶入并在多側執行計算,則過濾器將完美運行。看看下面過濾器的方向。過濾器的方向告訴您,在正常情況下,您應該將您的軸帶上,并且無論您在“付款Account表”上執行什么計算,它都會起作用。

但你正在做的正是reverse. 您正在將軸從Payment并希望RELATED作業。它不會導致方向如此。
然而,DAX is much more dynamic than that. 如果出于某種原因,您需要將軸從需要在一側過濾的多側引入,您可以即時定義反向過濾器方向(因為 DAX 很神奇) ,而無需更改資料中的任何內容使用CROSSFILTER 建模。使用CROSSFILTER,您可以自定義過濾器方向
CROSSFILTER(<LEFtblcolumnName1>, <RIGHTtblcolumnName2>, <direction>)
這就是(使用您給定的資料集)
Column =
VAR cond1 =
CALCULATE (
MAX ( Account[Account.pv] ),
CROSSFILTER ( Payment[Payment.account_id], Account[Account.account_id], BOTH )
)
- CALCULATE (
MAX ( Account[Account.gv] ),
CROSSFILTER ( Payment[Payment.account_id], Account[Account.account_id], BOTH )
)
RETURN
IF ( cond1 == 0 && Payment[Payment.payment] > 0, 1, 0 )

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492717.html
標籤:tsql 力比 达克斯 powerbi-桌面
