Optimization 需要优化MDX查询吗
我已经通过BIDS查询设计器构建了这个查询。但我想通过删除最外层FROM子句中的SELECT并在where或filter子句上仅使用cube in FROM子句和rest筛选器来优化此查询:Optimization 需要优化MDX查询吗,optimization,ssas,mdx,Optimization,Ssas,Mdx,我已经通过BIDS查询设计器构建了这个查询。但我想通过删除最外层FROM子句中的SELECT并在where或filter子句上仅使用cube in FROM子句和rest筛选器来优化此查询: SELECT { [Measures].[User ID Distinct Count], [Measures].[Post Count], [Measures].[Like Count], [Measures].[Comment Count], [Measures].[Impressions Ma
SELECT { [Measures].[User ID Distinct Count], [Measures].[Post Count], [Measures].[Like Count], [Measures].[Comment Count], [Measures].[Impressions Master Count] } ON COLUMNS,
NON EMPTY { ([Section Master].[Section Name].[Section Name].ALLMEMBERS * [Post Master].[Post Name].[Post Name].ALLMEMBERS * [Post Master].[SP Insert Date].[SP Insert Date].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( STRTOSET(@SectionMasterSectionName) ) ON COLUMNS
FROM ( SELECT ( STRTOMEMBER(@FromDimDateDate) : STRTOMEMBER(@ToDimDateDate) ) ON COLUMNS
FROM [AnalyticsCube]))
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
我是MDX新手,对MDX查询优化知之甚少。正因为如此,我也不知道这是查询的优化版本,或者这里面还有优化的余地。我的立方体结构如图所示
我已经通过在行和列部分做一些更改来更新我的旧查询,但仍然坚持使用From子句部分
SELECT { [Measures].[User ID Distinct Count],
[Measures].[Post Count],
[Measures].[Like Count],
[Measures].[Comment Count],
[Measures].[Impressions Master Count] } ON COLUMNS,
NON EMPTY { ([Section Master].[Section Name].CHILDREN) *
([Post Master].[Post Name].CHILDREN, [Post Master].[SP Insert Date].CHILDREN ) } ON ROWS
FROM ( SELECT ( STRTOSET(@SectionMasterSectionName) ) ON COLUMNS
FROM ( SELECT ( STRTOMEMBER(@FromDimDateDate) : STRTOMEMBER(@ToDimDateDate) ) ON COLUMNS
FROM [AnalyticsCube]))
这将是最初的简化:
SELECT
{
[Measures].[User ID Distinct Count]
,[Measures].[Post Count]
,[Measures].[Like Count]
,[Measures].[Comment Count]
,[Measures].[Impressions Master Count]
} ON COLUMNS
,NON EMPTY
{
[Section Master].[Section Name].Children
*
(
[Post Master].[Post Name].Children
,[Post Master].[SP Insert Date].Children
)
} ON ROWS
FROM
(
SELECT
StrToSet(@SectionMasterSectionName) ON 0,
StrToMember(@FromDimDateDate) : StrToMember(@ToDimDateDate) ON 1
FROM [AnalyticsCube]
);
然后,我觉得奇怪的是,您没有将StrToSet(@SectionMasterSectionName)移动到主SELECT子句中:
SELECT
{
[Measures].[User ID Distinct Count]
,[Measures].[Post Count]
,[Measures].[Like Count]
,[Measures].[Comment Count]
,[Measures].[Impressions Master Count]
} ON COLUMNS
,NON EMPTY
{
StrToSet(@SectionMasterSectionName)
*
(
[Post Master].[Post Name].Children
,[Post Master].[SP Insert Date].Children
)
} ON ROWS
FROM
(
SELECT
StrToMember(@FromDimDateDate) : StrToMember(@ToDimDateDate) ON 0
FROM [AnalyticsCube]
);
从逻辑上讲,它略有不同,但您可以考虑使用WHERE
子句,而不是子选择
:
SELECT
{
[Measures].[User ID Distinct Count]
,[Measures].[Post Count]
,[Measures].[Like Count]
,[Measures].[Comment Count]
,[Measures].[Impressions Master Count]
} ON COLUMNS
,NON EMPTY
{
StrToSet(@SectionMasterSectionName)
*
(
[Post Master].[Post Name].Children
,[Post Master].[SP Insert Date].Children
)
} ON ROWS
FROM [AnalyticsCube]
WHERE
StrToMember(@FromDimDateDate) : StrToMember(@ToDimDateDate);
MDX查询是否为您提供了正确的结果?是的,它为我提供了预期的结果。您可以提供示例查询结果吗?@PreetishChindarkar我仍然有点不确定问题是什么-查看您的第二个查询,您希望实现什么?你想去掉子选项吗?