DAX Power BI - 根据日期过滤器显示最新记录
DAX Power BI - Show latest record according to date filter
我在 Power BI 模型中有 2 个表,[日期] 和 [配额]
- 'Date'[YYYYMM] 用作报告的期间过滤器
- 我想根据所选时间段的最大日期显示最新配额
如何在 DAX/计算列中写入?
Example:
If I select YYYYMM = "202005" in filter.
Below table should show:
|product|quota|
|A |10 |
|B |20 |
Quota Table:
|product|quota|effectiveDate|
|A |10 |2020-01-01 |
|B |20 |2020-01-01 |
|A |25 |2021-01-01 |
Date Table:
|Date |YYYYMM|
|2020-01-01|202001|
|2020-01-02|202001|
...
|2021-06-09|202106|
要获得最新的配额,在 SQL 中它将是:
SELECT TOP (1) q.Quota
FROM [Quota] q
LEFT JOIN [Date] d on d.[Date] >= q.effectiveDate
ORDER BY q.effectiveDate desc
DAX 中的度量:
FlagToFilter =
var __ChoicedDate = CALCULATE(MAX(DateTable[Date ]), FILTER(ALL(DateTable), SELECTEDVALUE(DateTable[YYYYMM]) = DateTable[YYYYMM] ))
var __MaxFor = CALCULATE(max(QuotaTable[effectiveDate]), FILTER(ALL(QuotaTable), QuotaTable[effectiveDate] <= __ChoicedDate && SELECTEDVALUE(QuotaTable[product])= QuotaTable[product] ))
return
CALCULATE( countrows(VALUES(QuotaTable[product])), FILTER(ALL(QuotaTable[effectiveDate]), SELECTEDVALUE(QuotaTable[effectiveDate]) = __MaxFor))
我在 Power BI 模型中有 2 个表,[日期] 和 [配额]
- 'Date'[YYYYMM] 用作报告的期间过滤器
- 我想根据所选时间段的最大日期显示最新配额
如何在 DAX/计算列中写入?
Example:
If I select YYYYMM = "202005" in filter.
Below table should show:
|product|quota|
|A |10 |
|B |20 |
Quota Table:
|product|quota|effectiveDate|
|A |10 |2020-01-01 |
|B |20 |2020-01-01 |
|A |25 |2021-01-01 |
Date Table:
|Date |YYYYMM|
|2020-01-01|202001|
|2020-01-02|202001|
...
|2021-06-09|202106|
要获得最新的配额,在 SQL 中它将是:
SELECT TOP (1) q.Quota
FROM [Quota] q
LEFT JOIN [Date] d on d.[Date] >= q.effectiveDate
ORDER BY q.effectiveDate desc
DAX 中的度量:
FlagToFilter =
var __ChoicedDate = CALCULATE(MAX(DateTable[Date ]), FILTER(ALL(DateTable), SELECTEDVALUE(DateTable[YYYYMM]) = DateTable[YYYYMM] ))
var __MaxFor = CALCULATE(max(QuotaTable[effectiveDate]), FILTER(ALL(QuotaTable), QuotaTable[effectiveDate] <= __ChoicedDate && SELECTEDVALUE(QuotaTable[product])= QuotaTable[product] ))
return
CALCULATE( countrows(VALUES(QuotaTable[product])), FILTER(ALL(QuotaTable[effectiveDate]), SELECTEDVALUE(QuotaTable[effectiveDate]) = __MaxFor))