DAX:基于 SSAS 的 Power BI 报表生成器 - 如果用户从参数中选择值“ALL”,则传递该列的所有值,否则传递所选值

问题描述 投票:0回答:1

我有一个基于 SSAS 表格模型源的分页报告。 它有一个名为@Color的多选参数。

要求是,如果用户从@Color参数下拉列表中选择一个或多个值,并且如果选择包含值“ALL”,则参数列的所有值都应传递到数据集ClientSales,否则如果选择不包含“ ALL”,则仅应传递选定的值。

(我已将值“ALL”联合到名为 ColorNames 的数据集,该数据集用于 @Color 参数的可用值)

可以从以下链接访问包含数据和分页报告 rdl 的相关 Power BI 文件 (请考虑通过打开 PBIX 文件并使用 DAX Studio 复制本地主机服务器名称来更改 rdl 中的源)

PBIX 文件 RDL 文件

如有任何帮助,我们将不胜感激。

reporting-services powerbi dax ssas reportbuilder3.0
1个回答
0
投票

我同意@David Bacci,已经有了“全选”选项(就像法国人说的“ne réinvente pas la roue”)。 据我所知,UI/UX 团队正在寻找对报告的最终用户更友好的东西。我提供的解决方案即使满足了需求,也可能会影响性能。

我的解决方案影响了模型,因为我为包括“全部”的颜色创建了一个单独的表:(使用 Power Query 或将其作为源中的工作表导入)

然后您需要在源中添加一个额外的列,其中所有行都有“ALL”,这是一个示例:

然后将您的来源链接到颜色表:

活跃关系:

非活跃关系:

现在说到计算/测量,这就是如何使用这两种关系:

ConditionalSum = 
VAR SelectedColor = SELECTEDVALUE(Colors[Color], "All")
RETURN
IF(
    SelectedColor = "All",
    CALCULATE(
        SUM(datavehicles[CostPrice]),
        ALL(Colors), // Removes any filter from the Colors table.
        USERELATIONSHIP(datavehicles[All Colors], Colors[Color]) // This should be the active relationship.
    ),
    CALCULATE(
        SUM(datavehicles[CostPrice]),
        USERELATIONSHIP(datavehicles[Color], Colors[Color]), // This should be the inactive relationship.
        Colors[Color] = SelectedColor
    )
)

当选择“全部”时,我使用全部(颜色)从整个颜色表中删除任何过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.