Powerbi 如何使动态轴响应切片器值,而不使用桥接表,仅使用DAX

Powerbi 如何使动态轴响应切片器值,而不使用桥接表,仅使用DAX,powerbi,dax,dashboard,Powerbi,Dax,Dashboard,大家好,我有一个图表,我需要通过改变切片器的值来改变x值轴。这个切片器是黄色的,它有所有的Dims x值,它来自DimList表格。例如,目前图表是totalfreight by custid,但如果我从黄色切片器中检查empid,则需要将图表值更改为totalfreight by empid。所有切片器值都会发生这种情况 但我不喜欢桥接表或任何对性能有不良影响的方法,因为FactTable有10亿行,我用SSAS(表格模型)对其进行建模,并且有一个活动连接。提前感谢。我想您指的是使用桥接表的方

大家好,我有一个图表,我需要通过改变切片器的值来改变x值轴。这个切片器是黄色的,它有所有的Dims x值,它来自DimList表格。例如,目前图表是totalfreight by custid,但如果我从黄色切片器中检查empid,则需要将图表值更改为totalfreight by empid。所有切片器值都会发生这种情况


但我不喜欢桥接表或任何对性能有不良影响的方法,因为FactTable有10亿行,我用SSAS(表格模型)对其进行建模,并且有一个活动连接。提前感谢。

我想您指的是使用桥接表的方法。我同意,考虑到模型中的数据量,您可能会面临一些性能问题

首先,您应该尝试查看是否有其他一些Power BI前端功能可以在报告中直接使用,而无需更改数据模型。也许你可以使用Power BI书签、链接或者自定义的视觉效果

如果没有,您可以在数据模型中使用另一种方法,即不依赖桥接表。免责声明:我尚未对此进行测试-可能还涉及其他性能问题

使用各个维度中的所有成员构造一个新维度表。即,创建所有EMPID、CUSTID等的联合。确保在单独的列中指明ID的类型。该表应如下所示:

DimensionId MemberId
categoryid  1
categoryid  2
categoryid  3
custid      1
custid      2
custid      3
...
让我们将此表命名为“所有维度”。该表不应与其他表有任何关系,这类似于

更改度量值,以便在“所有维度”表中选择某项时应用虚拟关系,以正确筛选事实表:

SUM('factSale'[Freight])
将成为:

SWITCH(
    SELECTEDVALUE('All Dimensions'[DimensionId]),
    "categoryid", CALCULATE(SUM('factSale'[Freight]), 
        KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[CategoryId])),
    "custid", CALCULATE(SUM('factSale'[Freight]), 
        KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[CustId])),
    "empid", CALCULATE(SUM('factSale'[Freight]), 
        KEEPFILTERS(TREATAS(VALUES('All Dimensions'[MemberId]), 'factSale'[EmpId])),
    // ... etc. for all dimensions ...
    , // Fallback, when nothing is selected on 'All Dimensions'
    IF(NOT ISFILTERED('All Dimensions'[MemberId]), 
        SUM('factSale'[Freight])
    )
)
将[DimensionId]列放入切片器,并将[MemberId]列用作条形图上的轴。请注意,除非在[DimensionId]切片器上过滤了一个项目,否则图表不会显示任何内容。 说明:SWITCH语句确定是否对“所有维度”表的[DimensionId]列进行了任何选择。在这种情况下,将使用TREATAS函数对事实表应用过滤器,具体取决于选择的维度。我们使用KeepFilter来确保直接在各个维度上制作的任何现有过滤器都保持原样


如果在[DimensionId]列上未进行选择,我们希望回到标准度量值“factSale”[Freight],但由于我们不想对[MemberId]列上的所有项目重复此度量值,因此我们使用IFNOT ISFILTERED。。。如果[MemberId]当前在图表轴上使用,请确保我们只返回空白值。

您是否尝试过使用断开连接的切片器?