首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDX中的SQL子选择、group by、sum等效项(SSAS)

问MDX中的SQL子选择、group by、sum等效项(SSAS)
EN

Stack Overflow用户
提问于 2016-07-20 05:03:56
回答 3查看 101关注 0票数 0

我在SSAS中创建计算成员时遇到问题。事实表:

代码语言:javascript
复制
  Date       Store       Product        Sales_in_USD
    --------------------------------------------------
    2016-07-01 Store1      Product1       50
    2016-07-01 Store1      Product2       100
    2016-07-01 Store2      Product3       70
    2016-07-01 Store2      Product2       85

维度:日期、商店、产品

我想要得到这样的结果:如果我按某个产品进行筛选,我希望获得按该商店和日期的所有销售额,包括按筛选出的product+another产品的销售额,例如,我希望按Product1进行筛选:

代码语言:javascript
复制
SQL code:
select sum(Sales_in_USD)
from [Fact table]
where Store in (select Store from [Fact table] where Product="Product1")

执行这段sql代码后,我得到了所有按Store1计算的销售额。

当我想要创建计算成员时,如何使用MDX创建它?

计算成员的输出必须是下一个:

代码语言:javascript
复制
Product   Total_Sales_By_Store
------------------------------
Product1  50+100=150
Product2  50+100+70+85=305
Product3  70+85=155
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-22 18:32:58

1-确定所选产品的有效商店。

代码语言:javascript
复制
NonEmpty(
    [Store].[Store Name].MEMBERS,
    ([Product].[Product].Currentmember,[Measures].[Sales_in_USD])
)

2-一旦你有了当前产品的商店,你想要计算可能的元组的值的总和(交叉连接)。

代码语言:javascript
复制
with member Measures.[Total Sum of Stores] as
sum(
[Product].[Product].Currentmember *
NonEmpty
   (
    [Store].[Store Name].MEMBERS,
    ([Product].[Product].Currentmember,[Measures].[Sales_in_USD])
   )    
,
[Measures].[Sales_in_USD]
)

select Measures.[Total Sum of Stores] on 0
from [YourCube]
where [Product].[Product].[Product1]
票数 0
EN

Stack Overflow用户

发布于 2016-07-20 06:49:52

代码语言:javascript
复制
SELECT 
  [Measures].[Sales_in_USD] ON 0,
  {[Store].[Store Name].MEMBERS,
   [Product].[Product].MEMBERS} ON 1
 FROM [Cube Name];

对于您的需求,您实际上不需要计算成员,因为度量将为您完成这项工作

对于特定的产品名称Product1,则

代码语言:javascript
复制
SELECT 
  [Measures].[Sales_in_USD] ON 0,
  {[Product].[Product].&[Product1],
   [Store].[Store Name].MEMBERS
  } ON 1
FROM [Cube Name];
票数 0
EN

Stack Overflow用户

发布于 2016-07-22 21:18:25

我认为Sourav已经很好地解决了这个问题,但它还可以更通用?

代码语言:javascript
复制
WITH 
MEMBER [Measures].[Total Sum of Stores] AS
SUM(
  NONEMPTY(
    [Store].[Store Name].MEMBERS,
    (
      [Product].[Product].Currentmember
     ,[Measures].[Sales_in_USD]
    )
  )    
  ,[Measures].[Sales_in_USD]
)
SELECT
 [Measures].[Total Sum of Stores] on 0,
 [Product].[Product].[Product].MEMBERS ON 1
FROM [YourCube];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38468499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档