【问题标题】:Create Calculated table based on slicer selection根据切片器选择创建计算表
【发布时间】:2025-12-21 23:10:17
【问题描述】:

我有一个表,其中包含 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   |
|  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   |
+----+------+-----------------+

除了我有两个切片器,来自两个不同的表,每个表都有这样一列

我在这里要做的是,根据用户切片器选择,我希望过滤表并仅输出第一个切片器选择中不存在的“名称”,反连接也需要在 ID 列上完成

所以对于上面的切片器选择,即。 30 天或更短时间与 31 到 60 天相比,结果应该是一个包含“名称”列的表格,并且只记录“C”作为其唯一的名称,它不存在于“30 天或更短时间”中但存在于“31 到60 天”

【问题讨论】:

  • 在您的示例数据中,“31 到 60 天”内不存在 C。

标签: powerbi dax powerquery


【解决方案1】:

我发现您的解释不匹配,因为您说 C 在“31 到 60 天”内存在,但实际上 C 在您的示例数据中的“31 到 60 天”内不存在。尽管存在上述混淆,但我尝试根据您的解释找出该过程,而忽略您的示例数据不匹配。如果我理解正确,您可以尝试以下步骤,如果您的要求有所不同,也可以进行调整。

步骤 1: 创建 2 个具有相同值的不同冰岛(非关系)表属于您的切片器。两个表将具有相同的值,但您只需要从 2 个表创建 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)

下面是measure的输出-

第 3 步:现在只需将新创建的度量添加到 Visual 级别过滤器,如下所示,您将根据切片器选择在表格视觉对象中获得预期的数据集。

【讨论】:

  • Var current-name 我用来保存当前行名。我测量,它一行一行地工作。因此,当它位于第 N 行时,该变量将保留第 N 行的名称。此外,我使用该变量从表中查找存储在该变量中的名称的所有行。
  • 要获得计数,您可以转换自定义列的度量代码。然后,您可以使用 SUM 为新创建的自定义列创建一个度量以获取计数。
  • 最后,对于切片器样式 - 从属性窗口中选择切片器类型 Horizo​​ntal。
  • 从第一个变量中删除 MIN 并尝试。