关于一个MDX的问题,SET对维度无效
0
我现在在做一个计算 两个用户集合中的共有集的操作
SET AAA AS
NONEMPTY({..},.)
SET BBB AS
NONEMPTY({..},.)
然后我在创建一个共有集合
MEMBER . AS
COUNT(INTERSECT(AAA ,BBB))
MDX:
SELECT
{
.
} ON COLUMNS,
{
..
} ON ROWS
FROM
(
SELECT ..&:..& ON COLUMNS
FROM
)
执行后发现 我的日期维度没有任何作用, BCount计算单元全部都是一样的值。
但是修改计算单元为:
MEMBER . AS 0
COUNT(INTERSECT(
NONEMPTY({..},.)
,NONEMPTY({..},.)))
这样日期维度就会起到作用,但是效率很低。
SET AAA AS
NONEMPTY({..},.)
SET BBB AS
NONEMPTY({..},.)
然后我在创建一个共有集合
MEMBER . AS
COUNT(INTERSECT(AAA ,BBB))
MDX:
SELECT
{
.
} ON COLUMNS,
{
..
} ON ROWS
FROM
(
SELECT ..&:..& ON COLUMNS
FROM
)
执行后发现 我的日期维度没有任何作用, BCount计算单元全部都是一样的值。
但是修改计算单元为:
MEMBER . AS 0
COUNT(INTERSECT(
NONEMPTY({..},.)
,NONEMPTY({..},.)))
这样日期维度就会起到作用,但是效率很低。
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
2 个回复
BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2014-01-01 回答
赞同来自:
这端代码的逻辑就是在指定的时期范围内统计每一个月中各个子类产品哪些既有 Reseller Sales 的销售记录,同时又有 Internet Sales 的销售记录。MapCount 为 1 的就是都找到了销售记录,为0的表示没有销售记录。
BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2014-01-02 回答
赞同来自:
我在我自己的测试 MDX 语句中和你一样使用两个 SET 集合,然后在计算成员中使用到 SET。
结果如下-
然后换成计算成员中的计算写法 -
结果确实是正确的 -
通过这两种方式来比较,正确的做法还是应该写在计算成员中。即使 SET 也能支持这种动态计算,但我觉得效率方面不会有特别大的改善,因为它们都是先过滤成员,然后 INTERSECT 操作,本质上和放在计算成员里操作是一样的。