在 Power BI 中,如何创建基于切片器和可视化而更改的列?

时间:2021-04-07 16:49:37

标签: powerbi dax powerbi-desktop powerbi-custom-visuals

我对 Power BI 还很陌生。我不确定如何处理这个问题。

我有一个可视化显示在切片器设置的时间范围内最常购买的十种产品。在另一个可视化中,我展示了这些产品在过去几年中的销售情况(这个时间范围不是由切片器决定的)。我只想显示第一个可视化中的十种产品,而不是第二个可视化中时间范围内最常见的十种产品。

我怎样才能做到这一点?我想到的方法(我对其他人持开放态度)是创建一个真/假列,该列随第一个可视化而变化。 “真”适用于由切片器确定的时间范围内的第一个可视化确定的经常购买的产品,而第二个可视化将仅查看该列中具有“真”的值。如何创建根据可视化而变化的列(或表格,也许?)?

1 个答案:

答案 0 :(得分:0)

澄清:大部分页面会说Top10……实际上,所使用的度量是一个简单的Top5,包括订单数与第5个产品相同的产品。因此,为了避免处理较大的图像,将看到 7 个产品,但它是 Top5 排名。这个想法是您可以将其替换为您自定义的 TopN 度量。

我的理解:

模型的简化加上断开的帮助表是:

enter image description here

<块引用>

我有一个可视化显示最常购买的十个 切片器设置的时间范围内的产品。

enter image description here

  • 日期切片器属于数据模型中的日期表。

  • 表viz表示
    中sales表的行数 当前上下文(针对日期范围内的每个产品)。

  • 表格可视化按照 [#Rows] 度量降序排序
    订购。

  • 即使没有出现,表格也只展示了 TopN 产品
    由于 [TopOrders]
    的存在,[#Rows] 度量的 在此视觉对象的过滤器中进行测量[TopOrders] 为 1

在您创建的第二个页面上:

  • 带有 Dates[Date] 列的切片器(与 上一页)。
  • 一个矩阵,行中有 Products[ProductName],行中有 HDates[Year] 列,以及对值的度量。

从“视图”选项卡中,选择“同步切片器”选项。

在同步切片器窗格内:

  • 在“同步”列中,选中与必要页面相关的框。
  • 在“显示”列中取消选中包含超过 年报告。

enter image description here

到目前为止,我们所做的只是将时间框架上下文从第 1 页传递到第 2 页。

由于 TopN 上下文取决于时间框架上下文,我们现在可以使用 [TopOrders] 度量作为矩阵中此视觉对象的过滤器。同样,[TopOrders] 是 1

enter image description here

为什么行与列之间的数字不同?

此外,在此示例中,Sales 表仅包含截至 2020 年 12 月 31 日的信息,但可视化显示了额外的年份,并且每个订单的 Sales[Amount] 值为 $1,因此 [#Orders]和 [SalesAmount] 相同,以便于比较。

HDates 与模型无关,对于 HDates[Year]-Products[ProductName] 的每个组合,[SalesAmount] 度量使用来自先前隐藏的切片器和相应的 Products[ProductName] 的信息,因为信息来自 HDates[Year] 尚未生效。

为了完成这个练习,只需要修改 [SalesAmount] 度量,以便删除时间范围 (Dates[Date]) 上的过滤器,并将 HDates[Year] 识别为 Dates[Year] ].

SalesAmount := 
CALCULATE(
    SUM(Sales[Amount]),
    ALL(Dates),
    TREATAS(VALUES(HDates[Year]),Dates[Year])
    )

这是最终的结果。

enter image description here

我希望它对某人有用,或者可以改进这个想法。