我想知道以下两个查询中哪一个更高效?
查询一:
SELECT NONEMPTY(CROSSJOIN({[Product].[Category].children},
{[Scenario].[Scenario].members}
)
) ON COLUMNS
FROM [Analysis Services Tutorial]
查询 2:
SELECT CROSSJOIN(NONEMPTY({[Product].[Category].children}),
NONEMPTY({[Scenario].[Scenario].members})
) ON COLUMNS
FROM [Analysis Services Tutorial]
我会说查询 2 的性能/优化更高,因为首先您取出所有不必要的成员,然后交叉加入它们。第一个查询交叉连接所有内容,然后取出空值。那将是我的猜测,但我想要一个可以清理我的人。
编辑1 响应答案的评论
假设我添加了一个度量作为第二个参数,因此它不会进入“默认度量”。第二个查询如何返回 null 值?我指定在非空成员之间交叉加入。而且我真的不明白无论涉及的维度如何,它们如何返回不同的结果。对我来说,它们似乎相当相似。我没看到什么?
查询一:
SELECT NONEMPTY(CROSSJOIN({[Product].[Category].children},
{[Scenario].[Scenario].members}
), [Total Internet Sales]
) ON COLUMNS
FROM [Analysis Services Tutorial]
查询 2:
SELECT CROSSJOIN(NONEMPTY({[Product].[Category].children},[Total Internet Sales]),
NONEMPTY({[Scenario].[Scenario].members},[Total Internet Sales])
) ON COLUMNS
FROM [Analysis Services Tutorial]
编辑 2
正如答案所说,查询不一样。当@GregGalloway 提出其他场景时,我意识到了这一点。我用样本数据做了一个excel,所以也许有人会发现它很有用。