gpt4 book ai didi

两个不同表上的 PowerBI 切片器/过滤器

转载 作者:行者123 更新时间:2023-12-04 15:25:59 25 4
gpt4 key购买 nike

在 PowerBI 中,是否可以在两个不同的表上使用两个过滤器或切片器,以便我可以过滤其中一个表或两个表并在显示中连接数据?

 create table person(
id int not null,
name char(30) not null,
grp char(1) not null)
create table time(
person_id int not null,
state char(10) not null,
date datetime not null,
hours int not null)
go
insert person values (1,'PersonA1','A')
insert person values (2,'PersonA2','A')
insert person values (3,'PersonA3','A')
insert person values (4,'PersonB1','B')
insert person values (5,'PersonB2','B')
insert person values (6,'PersonB3','B')
insert time values(1,'Work','2020-02-01',8)
insert time values(2,'Work','2020-02-02',8)
insert time values(1,'Vacation','2020-03-01',8)
insert time values(1,'Sick','2020-03-02',8)
insert time values(3,'Work','2020-03-04',8)
insert time values(4,'Work','2020-02-01',8)
insert time values(2,'Sick','2020-02-02',8)
insert time values(1,'Vacation','2020-03-01',8)
insert time values(2,'Sick','2020-03-02',8)
insert time values(2,'Work','2020-03-04',8)
insert time values(4,'Vacation','2020-02-01',8)
insert time values(5,'Work','2020-02-02',8)
insert time values(1,'Vacation','2020-03-01',8)
insert time values(2,'Sick','2020-03-02',8)
insert time values(3,'Work','2020-03-04',8)

在 PowerBI 中,我想显示以下版本的表格。在这里,我在时间表上使用 Pivoted Column 并使用托管关系将输出连接成表格格式:

没有过滤器

|   person_id |   id | name     | grp   |   Sick |   Vacation |   Work |
|-------------|------|----------|-------|--------|------------|--------|
| 0 | 1 | PersonA1 | A | 0 | 0 | 0 |
| 1 | 2 | PersonA2 | A | 8 | 24 | 8 |
| 2 | 3 | PersonA3 | A | 24 | 0 | 16 |
| 3 | 4 | PersonB1 | B | 0 | 0 | 16 |
| 4 | 5 | PersonB2 | B | 0 | 8 | 8 |
| 5 | 6 | PersonB3 | B | 0 | 0 | 8 |

date less than 2020-03-01 添加时间片或过滤器

|   person_id |   id | name     | grp   |   Sick |   Vacation |   Work |
|-------------|------|----------|-------|--------|------------|--------|
| 0 | 1 | PersonA1 | A | 0 | 0 | 0 |
| 1 | 2 | PersonA2 | A | 0 | 0 | 8 |
| 2 | 3 | PersonA3 | A | 8 | 0 | 8 |
| 3 | 4 | PersonB1 | B | 0 | 0 | 0 |
| 4 | 5 | PersonB2 | B | 0 | 8 | 8 |
| 5 | 6 | PersonB3 | B | 0 | 0 | 8 |

添加时间片或过滤器 date for greater than 2020-03-01

|   person_id |   id | name     | grp   |   Sick |   Vacation |   Work |
|-------------|------|----------|-------|--------|------------|--------|
| 0 | 1 | PersonA1 | A | 0 | 0 | 0 |
| 1 | 2 | PersonA2 | A | 8 | 24 | 0 |
| 2 | 3 | PersonA3 | A | 16 | 0 | 8 |
| 3 | 4 | PersonB1 | B | 0 | 0 | 16 |
| 4 | 5 | PersonB2 | B | 0 | 0 | 0 |
| 5 | 6 | PersonB3 | B | 0 | 0 | 0 |

与 grp 上的过滤器一起显示 A 和 B 的组合或仅显示 A 或 B。

使用两个过滤器,例如 Grp = A and date < 2020-03-01过滤器

|   person_id |   id | name     | grp   |   Sick |   Vacation |   Work |
|-------------|------|----------|-------|--------|------------|--------|
| 0 | 1 | PersonA1 | A | 0 | 0 | 0 |
| 1 | 2 | PersonA2 | A | 0 | 0 | 8 |
| 2 | 3 | PersonA3 | A | 8 | 0 | 8 |

或者,Grp = B and date > 2020-03-1过滤器

|   person_id |   id | name     | grp   |   Sick |   Vacation |   Work |
|-------------|------|----------|-------|--------|------------|--------|
| 3 | 4 | PersonB1 | B | 0 | 0 | 16 |
| 4 | 5 | PersonB2 | B | 0 | 0 | 0 |
| 5 | 6 | PersonB3 | B | 0 | 0 | 0 |

或者两个过滤器的任意组合?

最佳答案

它看起来是 Power BI 的基础知识。创建关系

Relationship

这会让一切如您所愿。

没有过滤器

Visual 1

按日期和组使用切片器

Visual 2

将空白显示为零

*根据 OP 的评论添加

在上面的示例中,矩阵可视化中缺少没有值的数据(例如第二个图中的“PersonA3”和“Vacation”)。

这是因为,默认的“Sum”汇总对于没有数据返回 BLANK,而“Matrix”视觉对象对于 BLANK 不显示任何内容。

如果您想要“零”而不是空白,则需要显式定义一个 DAX 度量,该度量在没有数据时返回零。

有很多方法可以做到这一点,但这里可能是最简单的方法。

1。为切片器创建单独的表。

将 States 维度分解为单独的维度表,然后与原始 Times 表建立关系。

Relationship 2

这是确保矩阵视觉显示所有状态所必需的,无论该状态是否存在于受过滤器/切片器影响的时间表中。

2。定义 DAX 度量。

如果没有数据落入当前过滤器上下文,则默认总和度量返回空白。您需要定义一个在没有数据时返回零的新度量。这可能是最简单的公式。

Total Hours = SUM ( Times[Hour] ) + 0

矩阵用零填充,“PersonA3”和“Vacation”回来了。

Result

关于两个不同表上的 PowerBI 切片器/过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62226311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com