我有一个关于在OLAP
多维数据集中执行不同数量的客户端的问题。
我的clients-dimension表是从4个不同的数据库填充的,这意味着我可以找到具有不同Clients_ID(自然键)的相同客户端,因为每个客户端在每个数据库中都有不同的ID。
我想计算客户端电话号码的独特计数,因为它在所有数据库中都是相同的记录,我总是得到一个大数字,这不是正确的结果。我深入检查了这个问题,发现我设置的查询似乎没有对电话号码执行明确的计数。
我只使用过滤器进行的小测试(见下面的屏幕截图)让我相信我的查询是对每个客户ID而不是电话号码执行不同的计数。
对小测试的查询,我是用设计模式完成的:
SELECT NON EMPTY { [Measures].[QQT - Fact Ventes] } ON COLUMNS,
NON EMPTY { ([DIM FA Clients].[FaCuNumberX].[FaCuNumberX].ALLMEMBERS ) } DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( { [Dim Date].[MonthOfYear].&[7] } ) ON COLUMNS
FROM ( SELECT ( { [DIM FA Clients].[FaCuNumberX].&[8817], [DIM FA Clients].[FaCuNumberX].&[39223] } ) ON COLUMNS
FROM ( SELECT ( { [Dim Date].[Year].&[2014] } ) ON COLUMNS FROM [CubeAll])))
WHERE ( [Dim Date].[Year].&[2014], [Dim Date].[MonthOfYear].&[7] ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
这是我用来执行不同计数的查询:
WITH
SET MySet AS
Filter(
{[Dim Date].[Year].&[2014]}
*
{[DIM FA Clients].[FaCuNumberX].[FaCuNumberX]},
[Measures].[QQT - Fact Ventes]>1
OR
[Measures].[QQT - Fact Ventes]=1
)
MEMBER MEASURES.SETDISTINCTCOUNT AS
DISTINCTCOUNT(MySet)
SELECT
{MEASURES.SETDISTINCTCOUNT} ON 0
FROM [CubeAll]
My distinct count查询的输出:
我还测试了一个替代查询,但结果相同(见下面的截图):
我还会提供给出正确预期结果的SQL查询:
我不知道为什么这个mdx查询的过滤器不像SQL组那样正常工作。