【问题标题】:Powerpivot: Joining historicals for database and forecast from a calculated linked table in a single pivottablePowerpivot:从单个数据透视表中的计算链接表连接数据库和预测的历史数据
【发布时间】:2012-06-08 20:50:57
【问题描述】:

我注意到一些人试图做我在下面询问的类似事情。我的回答中可能对如何解决它有建议,所以我会先问这个问题。

我有从数据仓库连接获取并加载到 Powerpivot 的历史数据:

Date         Store    Sales    NumTransactions   Tag
2010-01-01   A        20000    50                Historical
2010-01-01   B        15000    10                Historical
2010-01-01   C        5000     3                 Historical
2010-01-01   D        300000   500               Historical

与 Powerpivot 的连接是与数据库服务器的直接连接。

根据这些数据,我在 excel 中计算了一个预测,该预测会生成一个表格,然后使用链接表格将其带入 PowerPivot。

Date         Store    Sales    NumTransactions   Tag
2010-01-02   A        20010    51                Forecast
2010-01-02   B        16000    12                Forecast
2010-01-02   C        6000     5                 Forecast
2010-01-02   D        400000   650               Forecast

由此,我希望能够驱动多个数据透视表和图表,将两组数据一起显示:

Date         Store    Sales    NumTransactions   Tag
2010-01-01   A        20000    50                Historical
2010-01-01   B        15000    10                Historical
2010-01-01   C        5000     3                 Historical
2010-01-01   D        300000   500               Historical
2010-01-02   A        20010    51                Forecast
2010-01-02   B        16000    12                Forecast
2010-01-02   C        6000     5                 Forecast
2010-01-02   D        400000   650               Forecast

我该如何做到这一点?由于有多个日期和多个商店记录,我似乎无法建立关系。

我尝试在 Powerpivot 中的表属性 -> 查询编辑器中将两者结合在一起:

SELECT [daily].* FROM [daily]
UNION ALL
SELECT [fcst].* from [fcst]

(Where [daily] is the historical data from the datawarehouse and [fcst] is the linked table within the excel workbook that has been linked into powerpivot)

但问题是 Powerpivot 正在从连接中寻找 [fcst],该连接返回到我的历史数据来自的数据仓库。

我可以解决从两个数据源中驱动两个数据透视表的工作,然后通过直接引用数据透视表的单元格将它们链接到 Excel 中的一个表中(然后驱动图表)。但它很乱,我相信这是可以做到的。我就是想不通。

答案是否存在于 MDX 定义的集合中?

任何想法将不胜感激。

谢谢!

【问题讨论】:

  • 您是否尝试将来自数据库的数据连接与 excel 结合起来?也许如果您在 excel 中有第一个连接,然后创建第二个连接以从 excel 中合并两个表..
  • @deathApril 我正在尝试这样做,但是当我进入表菜单 - > 表属性然后编辑数据库连接上的查询时,我无法引用链接表。我尝试将表引用为 [forecast] 和 [forecast$] 但每次我这样做时,它都会尝试在数据库连接中查找预测...
  • 创建一个带有数据连接到 excel 的新文件并查看 from 子句 - 我在这台计算机上没有 excel,但它看起来像 ['C:\folder\filename.xlsx'].['Sheet 2']
  • 是的,可以这样做,但我想将其保存为一个文件,以便可以轻松地在组织内共享。表查询语句中必须有引用链接表的方法

标签: excel ssas mdx powerpivot


【解决方案1】:

当 PowerPivot 创建关系时,它需要一个表有一个具有不同值的列,您可以将其用作另一个表的查找列。我建议您创建一个日期表。如果您没有简单的方法来创建一个,您可以从https://datamarket.azure.com/dataset/1542c52d-d466-4094-a801-9ef8fd7c6485 获得一个。然后,您可以创建从每天到日期和从 fcst 到日期的关系。我还将仅使用字符串“Historical”将计算列添加到 Daily 中,并将计算列添加到 fcst 以获取字符串“Forecast”。添加另一个包含两行的链接表:Historical、Forecast。然后创建从 daily 到此链接表的关系。如果您创建一个平面数据透视表,所有这些都已到位 - 您可以接近您正在寻找的内容,但您可能会有一个销售列用于历史销售,另一列用于预测销售。您可以在其中一个表中创建一个度量(不管是哪一个),以使用条件逻辑来使用基于当前标签的适用值,而只需在您的数据透视表中使用它。对交易数量执行相同操作。

【讨论】:

  • 好主意!我现在已经建立了关系,但我很难找到合并两个销售列的方法。我在两个表中都有一个 fcst_flag ,其中预测为 1。我试过 =IF(VALUES(historical[fcst_flag]=1, VALUES(forecast[sales]), VALUES(historical[sales]) 但我仍然只能得到历史销售额...谢谢!
  • 实际上 - 仔细考虑一下 - 我认为您不需要为条件逻辑而烦恼。您应该能够创建这样的度量:=sum(forecast[sales]) + sum(historical[sales])。只要您包含基于新链接表(历史/预测)的列,那么其中一个或另一个将为空,然后该度量应计算预测销售额或历史销售额。如果可行,请摆脱 fcst_flag。
  • 谢谢!有用!这为我节省了很多时间。你是圣人!
【解决方案2】:

您还可以添加一个未链接到任何其他表的月末日期表,并将该日期用作日期等于或小于切片器的切片器,选择实际值和大于切片器的日期,使用预测.在这样做时,您可以避免在不完整的月份中获取部分月份的实际值。然后添加一个度量,例如...

calculate(sum(historical[sales], filter(historical[date]<=max(monthend[Dates]))) + calculate(sum(forecast[sales], filter(forecast[sales]> max(monthend[Dates])))

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 2012-11-25
    • 2013-06-09
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多