如何在 Power BI 的单个 table 中显示来自不同数据源 table 的数据

How to display data from different data source tables in a single table in Power BI

我的报告中有几个不同的 table,出于演示目的,假设我有 1 个数据源是实际发票金额,然后我有另一个 table 是预测的金额。每个 table 都有几个相同的维度,比如国家、地区、产品分类和产品。

我想要的是能够显示一个 table/matrix 从这两个数据源中提取信息的

Description              Invoice    Forecast    vs Forecast
USA                        300          325           92% 
    East                   150          175           86%
       Product Grouping 1  125          125          100%
           Product 1        50           75           67%
           Product 2        75           50          150%
       Product Grouping 3   25           50           50%
           Product 3        25           50           50%
    West                   150          150          100%
       Product Grouping 1   75          100           75%
           Product 1        25           50           50%
           Product 2        50           50          100%
       Product Grouping 3   75           50          150%
           Product 3        75           50          150%

我还没有想出一种方法来将来自多个数据源的信息合并到一个矩阵中 table,因此我们将不胜感激。我确实发现的一件事是有人将行的结构硬编码到一个单独的数据源中,然后使用 DAX 表达式将信息片段拉入列中,但我不喜欢这种解决方案,因为行不是常数。

你问的是星型模式的一个共同部分:将来自不同事实 table 的事实组合成一个单一的视觉或报告。

不该做什么(您可能会受到诱惑)

您不想做的是在您的 Power BI 数据模型中将 2 个事实 table 组合成一个 table。这是很多工作,绝对没有必要。特别是,由于 2 个事实 table 可能存在一些不相同的维度(例如,实际金额可能与客户维度相关联,但预测金额不会)。

您也不希望以任何方式将 2 个事实 table 相互联系起来。同样,这是很多工作。 (特别是因为没有自然的方式在行级别关联它们。)

做什么

通常,处理 2 个事实 table 的方式与处理单个事实 table 的方式相同。首先,您有维度(国家、地区、分类、产品、日期、客户)。然后加载事实 tables,并将它们连接到维度。您不会将您的事实 table 加入彼此。然后创建度量(即 DAX 表达式)。

当您想将来自两个事实的度量组合到一个矩阵中时,您只需使用对两个事实都有意义的 rows/columns tables.例如,实际金额可能与客户相关联,但预测金额则不然。所以你不能在矩阵中包含客户信息。另一种可能性是每天记录实际金额,而预测是针对整个月进行的。在这种情况下,您可以将月份放在矩阵中(因为这对两者都有意义),但您不想使用日期,因为 Power BI 不知道如何将预测划分为各个日期。

只要您只使用对两个事实 table 都有意义的维度和属性,您就可以轻松创建上面设想的矩阵。只需拖动所需的属性,然后添加度量(即 DAX 表达式)。

发票和预测列都是度量值。来自不同事实 table 的两个度量可以组合成第三个度量,用于与预测度量。只要您只是使用 dimensions/attributes 就可以正常工作,这对 table 都有意义。

我在你提议的支点 table 中没有看到任何让我觉得有问题的地方。

其他情况

如果您遇到的情况是预测处于月份级别而实际处于日期级别,那么您可能想知道如何将它们与相同的日期维度相关联。这种情况称为具有不同的粒度,这里有一篇很好的文章我推荐阅读,其中有建议:https://www.daxpatterns.com/handling-different-granularities/。事实上,有一整节内容都是关于比较预算和收入的,您可能会觉得有用。

最后,您提到有人对行的结构进行硬编码并使用 DAX 表达式来构建所有内容。诚然,这听起来有点矫枉过正。 Power BI 的目标是灵活性。一旦你有了事实、措施和维度,你就可以以任何有意义的方式组合它们。对行进行硬编码消除了这种灵活性,并且是一个很好的提示,表明某些地方不对。 (另一个表明事情不对劲的好线索是 DAX 表达式对于本应简单的事情来说看起来真的很复杂)


希望我的回答对您有所帮助。这是一个笼统的答案,因为您的问题很笼统。如果您对自己的具体情况有具体问题,肯定 post 其他问题。 (示例数据、模型描述、您遇到的问题以及您希望看到的内容有助于获得好的答案。)

如果您是 Power BI、数据模型和星型模式的新手,Alberto Ferrari 和 Marco Russo 有一本很棒的书,我建议您阅读这本速成课程:https://www.sqlbi.com/books/analyzing-data-with-microsoft-power-bi-and-power-pivot-for-excel/