我正在使用 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,那怎么办呢?
可能不是您想要的答案,但我不相信可以编写一个从两个多维数据集提取数据的
MDX
脚本。
最好选择以下其中一项:
MDX
查询并将结果连接到 Excel(如果这是目标客户端)。或者创建 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