DAX 将过滤后的 table 传递给基于查找表中存在的所有不同月份的聚合

DAX to pass on a filtered table to aggregation based on all distinct months present in lookup tbl

我有一个 keyTbl 和 factTbl 如下,其中包含年-站点-服务-月组合的详细信息。

键包含 年-站点-服务-月

所有可能的唯一组合

事实包含 非唯一交易 年站点服务月

基于 pk

的 1 到多的关键过滤器事实

key tbl

|                       key                            |
|------|-------|---------|-------|---------------------|
| year | site  | service | month | pk                  |
|------|-------|---------|-------|---------------------|
| 2021 | site1 | serv1   | 1     | 2021-site1-serv1-1  |
| 2021 | site1 | serv1   | 2     | 2021-site1-serv1-2  |
| 2021 | site1 | serv1   | 3     | 2021-site1-serv1-3  |
| 2021 | site1 | serv1   | 4     | 2021-site1-serv1-4  |
| 2021 | site1 | serv1   | 5     | 2021-site1-serv1-5  |
| 2021 | site1 | serv1   | 6     | 2021-site1-serv1-6  |
| 2021 | site1 | serv1   | 7     | 2021-site1-serv1-7  |
| 2021 | site1 | serv1   | 8     | 2021-site1-serv1-8  |
| 2021 | site1 | serv1   | 9     | 2021-site1-serv1-9  |
| 2021 | site1 | serv1   | 10    | 2021-site1-serv1-10 |
| 2021 | site1 | serv1   | 11    | 2021-site1-serv1-11 |
| 2021 | site1 | serv1   | 12    | 2021-site1-serv1-12 |
| 2021 | site1 | serv2   | 1     | 2021-site1-serv2-1  |
| 2021 | site1 | serv2   | 2     | 2021-site1-serv2-2  |
| 2021 | site1 | serv2   | 3     | 2021-site1-serv2-3  |
| 2021 | site1 | serv2   | 4     | 2021-site1-serv2-4  |
| 2021 | site1 | serv2   | 5     | 2021-site1-serv2-5  |
| 2021 | site1 | serv2   | 6     | 2021-site1-serv2-6  |
| 2021 | site1 | serv2   | 7     | 2021-site1-serv2-7  |
| 2021 | site1 | serv2   | 8     | 2021-site1-serv2-8  |
| 2021 | site1 | serv2   | 9     | 2021-site1-serv2-9  |
| 2021 | site1 | serv2   | 10    | 2021-site1-serv2-10 |
| 2021 | site1 | serv2   | 11    | 2021-site1-serv2-11 |
| 2021 | site1 | serv2   | 12    | 2021-site1-serv2-12 |
| 2021 | site2 | serv1   | 1     | 2021-site2-serv1-1  |
| 2021 | site2 | serv1   | 2     | 2021-site2-serv1-2  |
| 2021 | site2 | serv1   | 3     | 2021-site2-serv1-3  |
| 2021 | site2 | serv1   | 4     | 2021-site2-serv1-4  |
| 2021 | site2 | serv1   | 5     | 2021-site2-serv1-5  |
| 2021 | site2 | serv1   | 6     | 2021-site2-serv1-6  |
| 2021 | site2 | serv1   | 7     | 2021-site2-serv1-7  |
| 2021 | site2 | serv1   | 8     | 2021-site2-serv1-8  |
| 2021 | site2 | serv1   | 9     | 2021-site2-serv1-9  |
| 2021 | site2 | serv1   | 10    | 2021-site2-serv1-10 |
| 2021 | site2 | serv1   | 11    | 2021-site2-serv1-11 |
| 2021 | site2 | serv1   | 12    | 2021-site2-serv1-12 |
| 2021 | site2 | serv2   | 1     | 2021-site2-serv2-1  |
| 2021 | site2 | serv2   | 2     | 2021-site2-serv2-2  |
| 2021 | site2 | serv2   | 3     | 2021-site2-serv2-3  |
| 2021 | site2 | serv2   | 4     | 2021-site2-serv2-4  |
| 2021 | site2 | serv2   | 5     | 2021-site2-serv2-5  |
| 2021 | site2 | serv2   | 6     | 2021-site2-serv2-6  |
| 2021 | site2 | serv2   | 7     | 2021-site2-serv2-7  |
| 2021 | site2 | serv2   | 8     | 2021-site2-serv2-8  |
| 2021 | site2 | serv2   | 9     | 2021-site2-serv2-9  |
| 2021 | site2 | serv2   | 10    | 2021-site2-serv2-10 |
| 2021 | site2 | serv2   | 11    | 2021-site2-serv2-11 |
| 2021 | site2 | serv2   | 12    | 2021-site2-serv2-12 |

fact tbl

|                          fact                               |
|------|-------|---------|-------|---------------------|------|
| year | site  | service | month | pk                  | val  |
|------|-------|---------|-------|---------------------|------|
| 2021 | site1 | serv1   | 1     | 2021-site1-serv1-1  | 100  |
| 2021 | site1 | serv1   | 2     | 2021-site1-serv1-2  | 200  |
| 2021 | site1 | serv1   | 3     | 2021-site1-serv1-3  | 300  |
| 2021 | site1 | serv1   | 4     | 2021-site1-serv1-4  | 400  |
| 2021 | site1 | serv1   | 5     | 2021-site1-serv1-5  | 500  |
| 2021 | site1 | serv1   | 6     | 2021-site1-serv1-6  | 600  |
| 2021 | site1 | serv1   | 7     | 2021-site1-serv1-7  | 700  |
| 2021 | site1 | serv1   | 8     | 2021-site1-serv1-8  | 800  |
| 2021 | site1 | serv1   | 9     | 2021-site1-serv1-9  | 900  |
| 2021 | site1 | serv1   | 10    | 2021-site1-serv1-10 | 1000 |
| 2021 | site1 | serv1   | 11    | 2021-site1-serv1-11 | 1100 |
| 2021 | site1 | serv1   | 12    | 2021-site1-serv1-12 | 1200 |
| 2021 | site1 | serv1   | 12    | 2021-site1-serv1-12 | 1300 |
| 2021 | site1 | serv1   | 12    | 2021-site1-serv1-12 | 1400 |
| 2021 | site1 | serv2   | 2     | 2021-site1-serv2-2  | 1500 |
| 2021 | site1 | serv2   | 3     | 2021-site1-serv2-3  | 1600 |
| 2021 | site1 | serv2   | 4     | 2021-site1-serv2-4  | 1700 |
| 2021 | site1 | serv2   | 5     | 2021-site1-serv2-5  | 1800 |
| 2021 | site1 | serv2   | 4     | 2021-site1-serv2-4  | 1900 |
| 2021 | site1 | serv2   | 5     | 2021-site1-serv2-5  | 2000 |
| 2021 | site2 | serv1   | 1     | 2021-site2-serv1-1  | 2100 |
| 2021 | site2 | serv1   | 2     | 2021-site2-serv1-2  | 2200 |
| 2021 | site2 | serv1   | 3     | 2021-site2-serv1-3  | 2300 |
| 2021 | site2 | serv1   | 2     | 2021-site2-serv1-2  | 2400 |
| 2021 | site2 | serv1   | 3     | 2021-site2-serv1-3  | 2500 |
| 2021 | site2 | serv2   | 1     | 2021-site2-serv2-1  | 2600 |
| 2021 | site2 | serv2   | 2     | 2021-site2-serv2-2  | 2700 |
| 2021 | site2 | serv2   | 3     | 2021-site2-serv2-3  | 2800 |
| 2021 | site2 | serv2   | 4     | 2021-site2-serv2-4  | 2900 |
| 2021 | site2 | serv2   | 5     | 2021-site2-serv2-5  | 3000 |
| 2021 | site2 | serv2   | 6     | 2021-site2-serv2-6  | 3100 |
| 2021 | site2 | serv2   | 7     | 2021-site2-serv2-7  | 3200 |
| 2021 | site2 | serv2   | 8     | 2021-site2-serv2-8  | 3300 |
| 2021 | site2 | serv2   | 9     | 2021-site2-serv2-9  | 3400 |
| 2021 | site2 | serv2   | 10    | 2021-site2-serv2-10 | 3500 |
| 2021 | site2 | serv2   | 11    | 2021-site2-serv2-11 | 3600 |
| 2021 | site2 | serv2   | 12    | 2021-site2-serv2-12 | 3700 |
| 2021 | site2 | serv2   | 9     | 2021-site2-serv2-9  | 3800 |
| 2021 | site2 | serv2   | 10    | 2021-site2-serv2-10 | 3900 |
| 2021 | site2 | serv2   | 11    | 2021-site2-serv2-11 | 4000 |
| 2021 | site2 | serv2   | 12    | 2021-site2-serv2-12 | 4100 |

我正在构建一个矩阵即 通过从 key tbl 中获取 site-service-month 和 显示 fact[val] 的总和,其中 (site-service-month) 的总不同月数为 12。 因此,据此,只有 site1-serv1 和 site2-serv2 符合条件。

我写了以下度量,但它只给出了小计级别的汇总值,因为我也需要汇总以用于站点服务月级别

Measure =
VAR _monthsToCheck = 12
VAR _baseTbl =
    ADDCOLUMNS (
        SUMMARIZE ( 'fact', 'fact'[site], 'fact'[service], 'fact'[month] ),
        "@UniqueMonthCount", CALCULATE ( DISTINCTCOUNT ( 'fact'[month] ), REMOVEFILTERS ( 'fact'[month] ) )
    )
VAR _filtTbl =
    FILTER ( _baseTbl, [@UniqueMonthCount] = _monthsToCheck )
VAR _sum =
    CALCULATE ( SUM ( 'fact'[val] ), _filtTbl )
RETURN
    _sum

Measure2 = 
CALCULATE (
    SUM ( 'fact'[val] ),
    FILTER (
        ADDCOLUMNS (
            'fact',
            "X",
                CALCULATE (
                    DISTINCTCOUNT ( 'fact'[month] ),
                    ALLEXCEPT ( 'fact', 'fact'[site], 'fact'[service] )
                )
        ),
        [X] = 12
    )
)