Power BI 中的并排角色扮演维度

角色扮演的维度是不时讨论的那些概念之一。我还发布了有关实施的文章 表格模型中的角色扮演维度.

回顾一下, SSAS表格中的角色扮演维度 文章我解释了三种不同的解决方案:

  1. 将角色扮演维度多次导入模型
  2. 在源端创建数据库视图(如果您的源来自RDBMS,例如SQL Server,Oracle等…),然后将数据导入模型
  3. 使用DAX中的USERELATIONSHIP函数将不活动的关系保留在模型中,并创建一些措施来处理不同的角色

在这篇文章中,我解释了上面第三个选项的实现。在这种情况下,您需要根据事实表中的角色创建特殊的计算量度。最常见的角色扮演维度是“日期”维度。考虑到您必须在报告的单个图表中显示按订单日期,到期日期和发货日期显示的Internet销售额。在这种情况下,拥有3个不同的日期表不会帮助我们实现目标。

Power BI 的新手?在此处快速了解Power BI中的数据可视化。

在Power BI Desktop中定义新措施

基本上,我在这篇文章中要解释的是通过添加新的Calculated度量来使用FactInternetSales表和DimDate维度之间的非活动关系。在这种情况下,我们将能够在单个图表中按示例显示不同角色的销售额。

作为示例,您只需要从AdventureWorksDW2012导入以下表格:

  • FactInternetSales
  • 点心日期

在我使用以前的示例中的一个示例时,我已经进行了一些整理,但是您不必这样做。我还有其他一些表,但是要再次试验此示例,您所需要做的就是将FactInternetSales和DimDate表导入Power BI Desktop。

 Power BI  01中的角色扮演维度

现在,我需要创建一个新的计算量度:

  • 转到数据视图
  • 右键单击Internet Sales,然后单击“新措施”

 Power BI  02中的角色扮演维度

  • 您可以通过单击功能区中的“新度量”来定义新的计算度量

 Power BI  03中的角色扮演维度

  • 输入以下DAX命令,然后输入

按到期日的销售额= 计算((‘互联网销售” [销售金额]), 用户名(‘互联网销售” [DueDateKey],’Date'[DateKey] ) )

 Power BI  04中的角色扮演维度

  • 对“订购日期”和“发货日期”也重复上述步骤,以在FactInternetSales表中创建另外两个计算得出的度量。使用以下DAX公式:

按订单日期销售= 计算((‘互联网销售” [销售金额]), 用户名(‘互联网销售” [OrderDateKey],’Date'[DateKey] ) )

按发货日期销售= 计算((‘互联网销售” [销售金额]), 用户名(‘互联网销售” [ShipDateKey],’Date'[DateKey] ) )

现在向下滚动“ Internet销售”表,您可以看到所有成功创建的新度量。

 Power BI  05中的角色扮演维度

现在,我们可以轻松地创建一个报告,其中并排包含所有这些已计算的度量。

  • 转到“报告”视图,然后将矩阵添加到报告中
  • 展开“互联网销售”
  • 勾选所有计算的度量
  • 展开“日期”并勾选CalendarYear

 Power BI  06中的角色扮演维度

  • 由于CalendarYear是整数,因此它会自动转到“值”,您需要将其移至“行”

 Power BI  07中的角色扮演维度

现在,我们具有按发货日期,订单日期和到期日的所有不同销售额。

如您所见,我结合使用了两个DAX功能来满足我们样本的要求。为了更好地理解整个公式,您需要首先了解CALCULATE函数。毫无疑问,CALCULATE是DAX公式涉及的每个项目中使用的最常见功能之一。如果您的项目涉及以下其中一项,则很可能需要CALCULATE函数:

  • SQL服务器 Analysis Services表格模型
  • 动力枢轴
  • Power BI

我不想解释CALCULATE函数的工作原理,因为它超出了范围,因此我留给您在网上搜索并查看CALCULATE函数的实际工作原理。

一般而言,“ 用户名”功能应在带有过滤器的CALCULATE之类的功能中使用。 “ 用户名”本身不返回任何值。实际上,它可以使关系在计算过程中得到使用。

如果您已经读过我的 有关角色扮演维度的其他博客文章 你可能会问自己,“我们确实并排拥有所有角色,那么我们真的需要在Power BI模型中将角色扮演维度作为单独的表导入吗?

一个简单的答案是:好吧,这取决于!与往常一样,这实际上取决于您的情况。这种方法有其优点和缺点。让’s have a look.

利弊

优点:

1-您可以在同一张图表中并排使用所有角色,因为您实际上对每个角色都有单独的度量标准

2-您没有导入角色的多个副本,例如,您只有一个Date维度,可用于在整个模型中对所有相关度量进行切片和切块

3-在存储和内存消耗方面更高效

4-当你不穿衣服时,你的模特会更整洁’在模型中扮演多个角色

缺点:

1-在具有许多不同角色的大型模型中,创建许多支持不同角色的措施既耗时,又难以维护

2-小节名称变长

3-对于最终用户而言,拥有许多看起来非常相似的不同度量可能会使您感到困惑

2 thoughts on “ Power BI 中的并排角色扮演维度

  1. 很棒的文章!感谢您解释这个概念。我正在尝试做类似的事情,但是我的复杂程度却略高一点:
    查找订购日期为2018的按发货日期销售。
    如您在这里看到的,我正在过滤另一个关系。你会怎么做?

    1. 嗨Divya,

      谢谢你的评论。
      让’解决您的问题。
      您具有一个Sales表,该表与ShipDate和OrderDate上的Date维度具有两个或多个关系。

      让’s说OrderDate和ShipDate关系都处于非活动状态。
      要获得ShipDate的销售金额,您必须激活之间的关系 ‘Sales'[ShipDateKey]和‘Date'[DateKey].
      让’将逻辑包装成一个度量:

      出货量 = 计算( 和 ( ‘销售'[SalesAmount])
      , 用户名( ‘销售” [ShipDateKey],‘Date'[DateKey] ))

      现在,当订购年份为某个数字时,您想查看按发货日期的销售。
      您可以参考“Shipped Sales Amount”我们之前创建的度量,但是这次激活了‘Sales'[OrderDateKey]和‘Date'[DateKey].
      新的度量将如下所示:

      按订单日期发货的销售额 = 计算( [Shipped Sales Amount]
      , 用户名( ‘销售” [OrderDateKey],‘Date'[DateKey] ))

      您可以做什么,就可以对过滤器进行硬编码“按订单日期发货的销售额”,例如2018。在这种情况下,上述衡量标准如下所示:

      出货量 for Order Year 2018 = 计算( [Shipped Sales Amount]
      , 用户名( ‘销售” [OrderDateKey],‘Date'[DateKey] )
      , ‘日期'[日历年] = 2018
      )

      您还可以向模型添加另一个Date维度,将其称为Order Date,在Order Date和Sales之间创建关系,然后将其用于切片器上以动态过滤“按订单日期发货的销售额”测量。但是,除非您确实需要另一个日期表,否则不建议这样做。

      我鼓励您看看我的其他文章 SSAS表格中的角色扮演维度 更多细节。

      希望能有所帮助。

      干杯

有什么想法吗?在这里与我们分享:

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.