[英]How to transform a SQL query with subselects into an MDX query?
我有一個名為“tableOne”的數據庫表。 該表與立方體連接。
以下SQL選擇查詢
select row_id, row_group_id, col_group_id, measure_col from tableOne where
(row_group_id in (select row_group_id from tableOne a where row_id in ('R0020', 'R0030') and col_id = 'C0050')
or col_group_id in (select col_group_id from tableOne a where row_id in ('R0020', 'R0030') and col_id ='C0050'));
必須轉換為MDX查詢。
請注意:
我正在使用Mondrian,我不知道如何將子選擇轉換為MDX查詢。
編輯:
這是我到目前為止所得到的:
SELECT
{
[Measures].[measure_col]
}
ON COLUMNS,
non empty(
CrossJoin([ROW].[ROW].Members
,CrossJoin([COL_GROUP].[COL_GROUP].Members
,[ROW_GROUP].[ROW_GROUP].Members
)))
ON ROWS
FROM [tableOne]
WHERE (
[COL].[COL].[C0050]
)
除了我已經告訴你的內容之外,不能告訴你關於立方體的任何其他信息。
首先,我建議你將SQL重寫為:
select row_id, row_group_id, col_group_id, measure_col
from tableOne a
where
exists(
select *
from tableOne b
where
row_id in ('R0020', 'R0030') and
col_id = 'C0050' and
(
a.row_group_id = b.row_group_id OR
a.col_group_id = b.col_group_id
)
)
它應該從您的計划中刪除一個掃描。 現在是MDX的一部分。
如果您想在計算的度量中使用它,那么最好在SQL中執行此操作。
不確定此MDX是否會返回您想要的輸出。
WITH
SET mySet
AS
NONEMPTY (
(
[COL_GROUP].[COL_GROUP].Members,
[ROW_GROUP].[ROW_GROUP].Members
),
(
{[ROW].[ROW].[R0020],[ROW].[ROW].[R0030]},
[COL].[COL].[C0050],
[Measures].[measure_col]
)
)
SELECT
{
[Measures].[measure_col]
}
ON COLUMNS,
NON EMPTY
CROSSJOIN(
[ROW].[ROW].MEMBERS,
mySet
)
ON ROWS
FROM [tableOne]
mySet
應該為您提供COL_GROUP
和ROW_GROUP
所有組合,它們具有ROW
R0020和R0030以及COL
C0050的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.