首页 > 解决方案 > DAX 仅聚合查找表中的值

问题描述

我的示例源数据如下两个表

key

|           key           |
|-------|---------|-------|
| site  | service | month |
|-------|---------|-------|
| site1 | serv1   | 1     |
| site1 | serv1   | 2     |
| site1 | serv1   | 3     |
| site1 | serv1   | 4     |
| site1 | serv1   | 5     |
| site2 | serv1   | 1     |
| site2 | serv1   | 2     |
| site2 | serv1   | 3     |
| site2 | serv1   | 4     |
| site3 | serv1   | 1     |
| site3 | serv1   | 2     |
| site3 | serv1   | 3     |
| site3 | serv1   | 4     |
| site3 | serv1   | 5     |
| site3 | serv1   | 6     |
| site3 | serv1   | 7     |
| site4 | serv1   | 1     |
| site4 | serv1   | 2     |
| site4 | serv1   | 3     |
| site4 | serv1   | 4     |

lookup

| Lookup |
|--------|
| site   |
|--------|
| site1  |
| site3  |
| site4  |

我正在构建一个矩阵,即通过从关键 tbl 中获取站点、服务、月份并计算每个站点服务的总月数,但我只想显示仅出现在 Lookup 中的站点的聚合。

我想要的结果如下,即site2没有出现lookup,我不希望为此返回任何聚合。

|            Result                |
|--------|---------|-------|-------|
| site   | service | month | Count |
|--------|---------|-------|-------|
| site1  | serv1   | 1     | 5     |
| site1  | serv1   | 2     | 5     |
| site1  | serv1   | 3     | 5     |
| site1  | serv1   | 4     | 5     |
| site1  | serv1   | 5     | 5     |
| site3  | serv1   | 1     | 7     |
| site3  | serv1   | 2     | 7     |
| site3  | serv1   | 3     | 7     |
| site3  | serv1   | 4     | 7     |
| site3  | serv1   | 5     | 7     |
| site3  | serv1   | 6     | 7     |
| site3  | serv1   | 7     | 7     |
| site4  | serv1   | 1     | 4     |
| site4  | serv1   | 2     | 4     |
| site4  | serv1   | 3     | 4     |
| site4  | serv1   | 4     | 4     |

到目前为止,我已经尝试过这两种措施

countSiteService =
CALCULATE ( COUNT ( 'key'[month] ), REMOVEFILTERS ( 'key'[month] ) )

countSiteServiceLookup =
CALCULATE (
    [countSiteService],
    TREATAS ( VALUES ( Lookup[site] ), 'key'[site] )
)

但他们没有给我我想要的

当前

这两个表目前都是disconnected. 但即使我在现场连接它们,结果也没有什么不同。

如何使用当前模型而不是通过在过滤器窗格上放置任何硬编码过滤器来实现最终结果?

标签: powerbidax

解决方案


5 + 7 + 4 = 16自从您覆盖站点过滤器上下文以来,您所拥有的总和。

我怀疑你想要更像这样的东西:

countSiteServiceLookup =
CALCULATE (
    [countSiteService],
    KEEPFILTERS ( 'key'[site] IN VALUES ( Lookup[site] ) )
)

结果:

截屏


推荐阅读