如何使用 MDX 连接共享维度上的两个多维数据集?

问题描述 投票:0回答:2

我正在使用 SQL Server 19.1 和 SSAS 部署两个具有共同维度(称为“制造商”)的多维数据集。第一个多维数据集有一个事实表,其中包含销售量,第二个多维数据集包含原材料采购量。我想使用 MDX 在“制造商”维度上的两个多维数据集之间执行联接,以获得好处(事实表 1 与事实表 2 上的聚合)。 在伪 SQL 中,我想实现这个:

SELECT
  manufacturer ,
  proc_raw_mat / sales as benefits
FROM
  ( SELECT manufacturer, sum(sales)as sales
    FROM cube1
     
  ) 
FULL OUTER JOIN
  ( SELECT manufacturer, sum(proc_raw_mat) as proc_raw_mat
    FROM cube2
    
  ) 
 ON
    cube1.manufacturer = cube2.manufacturer

MDX好像不支持JOINS,那怎么办呢?

ssas mdx olap
2个回答
0
投票

可能不是您想要的答案,但我不相信可以编写一个从两个多维数据集提取数据的

MDX
脚本。

最好选择以下其中一项:

  1. 决定是否可以更改/扩展其中一个多维数据集并从另一个多维数据集中引入所需的数据,然后查询修改后的多维数据集。
  2. 在多维数据集数据的客户端中进行连接 - 因此执行 2 个单独的
    MDX
    查询并将结果连接到 Excel(如果这是目标客户端)。

0
投票

或者创建 2 个 OpenQuery 然后加入它们。

示例:

SELECT Code, Sales, SOH FROM (select CONVERT(VARCHAR(50),"[Item Dimension].[Item Code].[Item Code].[MEMBER_CAPTION]") AS Code, "[Measures].[Sales]" AS Sales
FROM OPENQUERY(DW_AS_SALES,
   'SELECT 
    NON EMPTY { [Measures].[Sales] } ON COLUMNS, 
    NON EMPTY { ([Item Dimension].[Item Code].[Item Code].ALLMEMBERS ) }  ON ROWS 
    FROM [Sales]') )Cube1
INNER JOIN (
SELECT  CONVERT(VARCHAR(50),"[Item Dimension].[Item Code].[Item Code]. 
[MEMBER_CAPTION]") AS Code, "[Measures].[SOH]" AS SOH
FROM OPENQUERY(DW_AS_SALES,
    'SELECT 
     NON EMPTY { [Measures].[SOH] } ON COLUMNS, 
    NON EMPTY { ([Item Dimension].[Item Code].[Item Code].ALLMEMBERS ) }  ON ROWS 
    FROM [Inventory]')) Cube2 
ON Cube1.Code = Cube2.Code
© www.soinside.com 2019 - 2024. All rights reserved.