如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?

Posted

技术标签:

【中文标题】如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?【英文标题】:How to get a measure of Average of column percentage using DAX in Power BI for column chart? 【发布时间】:2021-10-03 03:09:52 【问题描述】:

我正在努力解决以下问题:

我需要一个 DAX 度量来从矩阵表结果中找到平均百分比。 这是我从 Power BI 中的矩阵表中得到的

Place        Late No-Late Total
India         2     200    202
Bangladesh    40    60     100
China         0     150    150
Total         42    410    452

然后我应用 % of Row Total

    Place        Late No-Late Total
    India         1%    99%   100%
    Bangladesh    40%   60%   100%
    China         0     100%  100%
    Total         9%    91%   100%

现在我需要 "No-Late" 列中的 平均百分比,该列将是 "86%" 以将其绘制在柱状图。 我怎样才能实现这部分?

【问题讨论】:

【参考方案1】:

你可以试试下面的

_avg = 
VAR _0 =
    SUMX (
        'fct',
        VAR _total = fct[Late] + fct[No-Late]
        VAR _noLate = fct[No-Late]
        VAR _pct =
            DIVIDE ( _noLate, _total )
        RETURN
            _pct
    )
RETURN
    DIVIDE ( _0, DISTINCTCOUNT ( fct[Place] ) )

Edit

如果你想在下面的图表中显示总数

请确保您的数据源如下所示。因为要在图表中显示Total,轴必须存在于数据源本身中。

| Place      | Late | No-Late | Index |
|------------|------|---------|-------|
| India      | 2    | 200     | 1     |
| Bangladesh | 40   | 60      | 2     |
| China      | 0    | 150     | 3     |
| Total      | null | null    | 4     |

然后您可以编写以下度量

_avg2 = 
VAR _currentlyVisiblePlace =
    MAX ( fct[Place] )
VAR _aggregation =
    SWITCH (
        TRUE (),
        _currentlyVisiblePlace <> "Total",
            VAR _0 =
                SUMX (
                    'fct',
                    VAR _total = fct[Late] + fct[No-Late]
                    VAR _noLate = fct[No-Late]
                    VAR _pct =
                        DIVIDE ( _noLate, _total )
                    RETURN
                        _pct
                )
            VAR _1 =
                DIVIDE ( _0, DISTINCTCOUNT ( fct[Place] ) )
            RETURN
                _1,
        _currentlyVisiblePlace = "Total",
            VAR _0 =
                SUMX (
                    ALL ( fct ),
                    VAR _total = fct[Late] + fct[No-Late]
                    VAR _noLate = fct[No-Late]
                    VAR _pct =
                        DIVIDE ( _noLate, _total )
                    RETURN
                        _pct
                )
            VAR _1 =
                DIVIDE (
                    _0,
                    CALCULATE (
                        DISTINCTCOUNT ( fct[Place] ),
                        ALL ( fct ),
                        NOT fct[Place] IN  "Total" 
                    )
                )
            RETURN
                _1
    )
RETURN
    _aggregation

【讨论】:

我可以在柱形图上单独绘制“86.34%”吗?【参考方案2】:

假设您的表格如下所示,其中计算了最后三列(只有总和,然后是百分比)

通过添加以下措施

No Late (%) = If( HASONEVALUE(Table1[No-Late (%)]),Table1[Total No Late]/Table1[Total], AVERAGE(Table1[No-Late (%)]))

Total No Late = sum(Table1[No-Late])

您将能够使用矩阵视觉在 Power BI 中获得以下结果

【讨论】:

以上是关于如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?的主要内容,如果未能解决你的问题,请参考以下文章

使用DAX在Power Bi中进行计算时,文本函数中的错误

在 DAX 中测量以计算仅适用于 Power BI 的所选月份的 YTD

Power BI的柱形图如何由大到小

Power BI--DAX函数总结

Power BI DAX 度量计算

Power BI DAX CountIF 查询