ssas - MDX 查询的不同计数在另一个度量上进行过滤,与其他过滤器一起使用

标签 ssas mdx

在 SSAS AdventureWorks 架构中,我试图计算出有多少不同客户的互联网订单金额超过 1000 美元的不同计数。

我尝试像这样进行 MDX 查询,它似乎几乎工作,除了新的度量似乎忽略了切片器轴/WHERE条件,显示所有国家/地区的客户数量,而不仅仅是澳大利亚:

With 
member [measures].[DistinctCustomersHighSales] as 
distinctcount(
   filter([Customer].[Full Name].Members, [Measures].[Internet Sales-Sales Amount] > 1000)
)
SELECT {
   [Measures].[Internet Sales-Sales Amount],
   [Measures].[DistinctCustomersHighSales]
    }
 on columns,
([Date].[Calendar Date].[Calendar Year].Members) on rows
FROM [Analysis Services Tutorial]
WHERE [Customer].[Customer Geography].[Country-Region].[Australia]

我做错了什么?

如果我在 SQL 中执行此操作,我会寻找类似的东西

 SELECT Year(OrderDate) as year,
     sum(SalesAmount) 
     count(case when count(distinct case when SalesAmount > 1000 then dc.customerkey end)
 FROM dbo.FactInternetSales  fis
    join dbo.dimcustomer dc on fis.CustomerKey=dc.CustomerKey
    join dbo.DimGeography  dg on dc.GeographyKey=dg.GeographyKey
 WHERE EnglishCountryRegionName='Australia'
 GROUP BY year(OrderDate)
 ORDER BY year

最佳答案

尝试添加现有:

With 
member [measures].[DistinctCustomersHighSales] as 
distinctcount(
   filter(EXISTING [Customer].[Full Name].Members, [Measures].[Internet Sales-Sales Amount] > 1000)
)
SELECT {
   [Measures].[Internet Sales-Sales Amount],
   [Measures].[DistinctCustomersHighSales]
    }
 on columns,
([Date].[Calendar Date].[Calendar Year].Members) on rows
FROM [Analysis Services Tutorial]
WHERE [Customer].[Customer Geography].[Country-Region].[Australia]

范围是MDX中一个非常重要的概念。只有当添加EXISTING时,引擎才会实现切片器。

成员定义中的初始集合是:

[Customer].[Full Name].Members

集在 MDX 中是静态的。因此,该集合默认包含所有客户。当您添加 EXISTING 时,在形成集合之前,会检查上下文。根据多维数据集中的维度使用情况(关系),它能够过滤属于澳大利亚的客户。这样就可以了。

关于ssas - MDX 查询的不同计数在另一个度量上进行过滤,与其他过滤器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32527022/

相关文章:

ssas - 处理 MDX 查询的逻辑顺序

sql-server - 如何使用Mircrosoft.AnalysisServices命名空间从PowerShell脚本同时处理SSAS多维数据集结构

reporting-services - SSRS 中的图表仅显示几周的数据

ssas - 如何获取 SSAS/MDX 中用户定义层次结构中级别的 "(all)"值

sql - 查询分组

asp.net - 'msolap' 提供商未在本地计算机上注册

excel - DAX 中半加和的平均值

sql - MDX 使用 except 不起作用

java - 我们应该使用哪些 Web 服务将 MDX 查询发送到 ActivePivot?

asp.net - 无法连接到多维数据集