我正在處理涉及 DAX 變數范圍的問題。我的代碼定義了雇員的雇用日期和終止日期,他們根據結果實施邏輯。我的問題是我的變數的范圍不在每個員工的行背景關系中,而是顯示所有員工的最低雇用日期和最高雇用日期。
Employment Cases =
VAR PeriodStart =
DATE ( 2022, 01, 01 )
VAR PeriodEnd =
DATE ( 2022, 03, 31 )
VAR Hire =
MIN ( attr_Tkpr_vw[TkprDateHire] ) // How do I define this variable so that it results in each employees hire date?
VAR Term =
MIN ( attr_Tkpr_vw[TkprDateTerm] ) // How do I define this variable so that it results in each employees term date?
VAR ReportPeriod =
DATEDIFF ( PeriodStart, PeriodEnd, MONTH )
VAR S3 =
DATEDIFF ( Hire, PeriodEnd, MONTH ) / ReportPeriod
VAR S4 =
DATEDIFF ( Hire, Term, MONTH )
RETURN
SELECTCOLUMNS (
attr_Tkpr_vw,
"EmpID", attr_Tkpr_vw[TkprNumber],
"Hire", attr_Tkpr_vw[TkprDateHire],
"Term", attr_Tkpr_vw[TkprDateTerm],
"Hire Test", Hire,
"Term Test", Term,
"Employment Period",
SWITCH (
TRUE (),
AND (
AND (
attr_Tkpr_vw[TkprDateHire] >= PeriodStart,
attr_Tkpr_vw[TkprDateHire] <= PeriodEnd
),
attr_Tkpr_vw[TkprDateTerm] >= PeriodEnd
), S3,
AND (
AND (
attr_Tkpr_vw[TkprDateHire] >= PeriodStart,
attr_Tkpr_vw[TkprDateHire] <= PeriodEnd
),
AND (
attr_Tkpr_vw[TkprDateTerm] >= PeriodStart,
attr_Tkpr_vw[TkprDateTerm] <= PeriodEnd
)
), S4
)
)
我懷疑缺少迭代器函式。我嘗試用 CALCULATETABLE 將 SELECTCOLUMNS 運算式括起來。這沒有用。
結果集顯示,在每種情況下,Hire 和 Term 日期都是針對整個表計算的,而不是針對每個人計算的。
在此處輸入影像描述
uj5u.com熱心網友回復:
您需要將變數范圍移動到 SELECTCOLUMNS 內部:
SELECTCOLUMNS (
attr_Tkpr_vw,
"EmpID", attr_Tkpr_vw[TkprNumber],
"Hire", attr_Tkpr_vw[TkprDateHire],
"Term", attr_Tkpr_vw[TkprDateTerm],
"Hire Test", VAR Hire = attr_Tkpr_vw[TkprDateHire]
RETURN Hire,
如果您想執行 MIN 函式,那么我相信您需要一個 CALCULATE 陳述句來將行背景關系轉換為篩選器背景關系:
SELECTCOLUMNS (
attr_Tkpr_vw,
"EmpID", attr_Tkpr_vw[TkprNumber],
"Hire", attr_Tkpr_vw[TkprDateHire],
"Term", attr_Tkpr_vw[TkprDateTerm],
"Hire Test", VAR Hire = CALCULATE(MIN(attr_Tkpr_vw[TkprDateHire]))
RETURN Hire,
uj5u.com熱心網友回復:
感謝你們倆。將變數嵌套在 SELECTCOLUMN 函式中(但在定義表的第一個引數“attr_Tkpr_vw”之后)解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536639.html
標籤:变量范围达克斯
