【问题标题】:Making Switch function return a column in a table and not a measure (PowerBI DAX)使 Switch 函数返回表中的列而不是度量 (PowerBI DAX)
【发布时间】:2020-06-18 23:38:06
【问题描述】:

我正在尝试使用 Power BI Desktop 中的切片器更改度量。我发现了一些这样做的人的例子(例如this)。

他们所做的是创建一个包含 ID 和 Measure 名称的表。此表的“度量名称”列将用作可视化过滤器中的字段值。然后,他们创建了一个 switch 函数,给定过滤器中的某个值,将过滤器中的值切换为度量。 您可以在下面看到一个示例:

Measure Value = SWITCH(
                            MIN('Dynamic'[Measure ID]) ,
                            1,[Max Temp],
                            2,[Min Temp],
                            3,[Air Pressure],
                            4,[Rainfall],
                            5,[Wind Speed],
                            6,[Humidity]
                            )

其中“动态”是包含度量 ID 和度量名称的组:

动态:

Measure ID | Measure Name
1          |  Max Temp
2          |  Min Temp
3          |  Air Pressure
4          |  Rainfall
5          |  Wind Speed
6          |  Humidity

所有“度量名称”也是度量。

我的问题是:我的列太多(400 个!),我无法将它们一一转化为度量。这需要几天时间。我在想也许我可以使用 switch 函数,以便它返回表中的列而不是相应的度量。但是我不能只插入 'Name of the table'['Name of the column'] 在 switch 函数中作为结果参数。

有谁知道如何使函数 Switch 返回列而不是度量? (或任何其他建议)

【问题讨论】:

    标签: switch-statement powerbi dax powerbi-desktop


    【解决方案1】:

    DAX 不适用于很多这样的列,因此我建议通过取消透视您想要使用的所有列来重塑您的数据(在查询编辑器中),而不是看起来像这样的表

    ID | Max Temp | Min Temp | Air Pressure | Rainfall | Wind Speed | Humidity
    ---+----------+----------+--------------+----------+------------+----------
    1  |          |          |              |          |            |
    ...
    

    您将取消透视所有这些数据列,使其看起来更像这样:

    ID | ColumnName   | Value
    ---+--------------+-------
    1  | Max Temp     |
    1  | Min Temp     |
    1  | Air Pressure |
    1  | Rainfall     |
    1  | Wind Speed   |
    1  | Humidity     |
    ...
    

    然后您可以创建一个计算表Dynamic,用作您的切片器:

    Dynamic = DISTINCT ( Unpivoted[ColumnName] )
    

    现在你可以像这样编写一个切换度量:

    SwitchingMeasure = 
    VAR ColName = SELECTEDVALUE ( Dynamic[ColumnName] )
    RETURN
        CALCULATE ( [BaseMeasure], Unpivoted[ColumnName] = ColName )
    

    其中[BaseMeasure] 是您所追求的任何聚合,例如SUM ( TableName[Value] )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多