Powerbi 基于切片器选择创建计算表
我有一个包含ID、名称和日期列的表,如下所示:Powerbi 基于切片器选择创建计算表,powerbi,dax,powerquery,Powerbi,Dax,Powerquery,我有一个包含ID、名称和日期列的表,如下所示: +----+------+-----------------+ | ID | Name | Days | +----+------+-----------------+ | 1 | A | 30 days or less | | 1 | A | 30 days or less | | 1 | A | 30 days or less | | 1 | A | 31 to 60 days | |
+----+------+-----------------+
| ID | Name | Days |
+----+------+-----------------+
| 1 | A | 30 days or less |
| 1 | A | 30 days or less |
| 1 | A | 30 days or less |
| 1 | A | 31 to 60 days |
| 2 | B | 30 days or less |
| 2 | B | 31 to 60 days |
| 2 | B | 61 to 90 days |
| 2 | B | 61 to 90 days |
| 3 | C | 90+ days |
| 3 | C | 61 to 90 days |
+----+------+-----------------+
我旁边有两个切片器,来自两个不同的表,每个表都有这样一列
我在这里试图做的是,基于用户切片器选择,我希望对表进行筛选,只输出第一个切片器选择中不存在的“Name”,还需要对ID列执行反连接
因此,对于上述切片器选择,即。30天或更少与31到60天相比,结果应该是一个列为“Name”的表,只记录“C”作为唯一在“30天或更少”中不存在,但在“31到60天”中存在的名称。我发现你的解释不匹配,因为你说“31到60天”中有C,但实际上“31到60天”中没有C在您的示例数据中。尽管存在上述困惑,我还是试图根据您的解释来找出流程,忽略了您的样本数据不匹配。如果我接近正确理解,您可以尝试以下步骤,如果您的要求有点不同,也可以进行调整 第1步:创建两个不同的(非关系)表,该表具有属于切片器的相同值。这两个表将具有相同的值,但您只需要从2个表创建2个切片器,并确保没有如下所示的关系- 第二步:创建以下度量-
show_hide =
VAR current_name = MIN('your_base_table_name'[Name])
VAR selected_range_1 = SELECTEDVALUE('day range 1'[range])
VAR selected_range_2 = SELECTEDVALUE('day range 2'[range])
VAR chk_not_in =
IF(
COUNTROWS(
FILTER(
ALL('your_base_table_name'),
'your_base_table_name'[Name] = current_name && 'your_base_table_name'[Days] = selected_range_1
)
) = 0,
1,
0
)
VAR chk_in =
IF(
COUNTROWS(
FILTER(
ALL('your_base_table_name'),
'your_base_table_name'[Name] = current_name && 'your_base_table_name'[Days] = selected_range_2
)
) = 0,
0,
1
)
RETURN IF(chk_not_in = 1 && chk_in = 1, 1, 0)
下面是度量值的输出-
第3步:现在只需将新创建的度量值添加到视觉级别过滤器中,如下所示,您将根据切片器选择在视觉表格中获得预期的数据集
在您的示例数据中,“31到60天”中没有C。Var current name我用来在其中保留当前行名称。我测量,它一排一排地工作。因此,当它位于第N行时,变量将保留第N行的名称。此外,我使用该变量从表中查找存储在该变量中的名称的所有行。要获取计数,您可以转换自定义列的度量代码。然后,您可以为新创建的自定义列创建一个带有SUM的度量值以获取计数。最后,对于切片器样式,请从属性窗口中选择“切片器类型水平”。从第一个变量中,删除MIN并重试。让我们来看看。