如何解决如何在 SSAS MDX Cube 中使用具有子查询和 where 子句的等效 SQL 来创建度量?
我正在尝试将 sql 查询“转换”为 SSAS MDX 表达式,以在 SSAS 多维现有多维数据集中创建度量。
产品 | 产品代码 | 运营商名称 | 步骤 | StepSequence | 步骤日期 | StepTimeinDays |
---|---|---|---|---|---|---|
椅子 | Black_Chair | 约瑟夫·史密斯 | 0_开始 | 0 | 02/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 1_材料 | 1 | 02/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 2_锯 | 2 | 02/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 3_Build | 3 | 03/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 4_Paint | 4 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 5_Varnish | 5 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 6_包装 | 6 | 04/05/2019 | 1 |
表格 | 表_2350 | 约翰·多伊 | 0_开始 | 0 | 02/05/2019 | 0 |
表格 | 表_2350 | 约翰·多伊 | 1_材料 | 1 | 02/05/2019 | 0 |
表格 | 表_2350 | 约翰·多伊 | 3_Build | 3 | 02/05/2019 | 0 |
表格 | 表_2350 | 约翰·多伊 | 4_Paint | 4 | 02/05/2019 | 0 |
表格 | 表_2350 | 约翰·多伊 | 5_Varnish | 5 | 02/05/2019 | 1 |
表格 | 表_2350 | 约翰·多伊 | 6_包装 | 6 | 03/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 0_开始 | 0 | 03/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·多伊 | 1_材料 | 1 | 03/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 2_锯 | 2 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·多伊 | 3_Build | 3 | 04/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 4_Paint | 4 | 05/05/2019 | 1 |
椅子 | Yellow_Chair | 约瑟夫·史密斯 | 0_开始 | 0 | 04/05/2019 | 0 |
椅子 | Yellow_Chair | 约瑟夫·史密斯 | 1_材料 | 1 | 04/05/2019 | 1 |
椅子 | Yellow_Chair | 约瑟夫·史密斯 | 3_Build | 3 | 05/05/2019 | 0 |
椅子 | Yellow_Chair | 约瑟夫·史密斯 | 4_Paint | 4 | 05/05/2019 | 1 |
椅子 | Black_Chair | 约翰·多伊 | 0_开始 | 0 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约翰·多伊 | 1_材料 | 1 | 04/05/2019 | 1 |
椅子 | Black_Chair | 约翰·多伊 | 3_Build | 3 | 05/05/2019 | 0 |
椅子 | Black_Chair | 约翰·多伊 | 4_Paint | 4 | 05/05/2019 | 1 |
在 sql 中运行查询(由 Dale 在其他特定于 sql 的问题中提供)如下:
select Step,sum(StepTimeinDays) as SumofStepTimeinDays
from dbo.build_process t1
where exists (
select 1
from dbo.build_process t2
where t1.ProductCode = t2.ProductCode and t1.OperatorName = t2.OperatorName
and t2.Step = '2_Saw'
)
group by Step
order by Step asc;
返回过滤表只存在“2_Saw”:
产品 | 产品代码 | 运营商名称 | 步骤 | StepSequence | 步骤日期 | StepTimeinDays |
---|---|---|---|---|---|---|
椅子 | Black_Chair | 约瑟夫·史密斯 | 0_开始 | 0 | 02/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 1_材料 | 1 | 02/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 2_锯 | 2 | 02/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 3_Build | 3 | 03/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 4_Paint | 4 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 5_Varnish | 5 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·史密斯 | 6_包装 | 6 | 04/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 0_开始 | 0 | 03/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·多伊 | 1_材料 | 1 | 03/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 2_锯 | 2 | 04/05/2019 | 0 |
椅子 | Black_Chair | 约瑟夫·多伊 | 3_Build | 3 | 04/05/2019 | 1 |
椅子 | Black_Chair | 约瑟夫·多伊 | 4_Paint | 4 | 05/05/2019 | 1 |
此 sql 查询的最终结果是(这与我需要在 SSAS 多维数据集中获得的结果相同):
步骤 | StepTimeinDays 的总和 |
---|---|
0_开始 | 0 |
1_材料 | 1 |
2_锯 | 1 |
3_Build | 2 |
4_Paint | 1 |
5_Varnish | 0 |
6_包装 | 1 |
例如,对于 Total Percent 度量,我使用了下面的表达式并且工作正常。
([Measures].[StepTimeinDays],[Process].[Step].CurrentMember)/([Measures].[StepTimeinDays],[Process].[Step].[All])
现在相同的“表”在 SSAS 多维多维数据集中,我试图在 SSAS 表达式字段中获得相同的 sql 查询结果以创建度量但没有成功。
我尝试使用 MDX 表达式,下面是更接近的:
([Measures].[StepTimeinDays],[Process].[Step].[All],[Process].[Step].&[2_Saw])
解决方法
这是在另一个论坛中解决的,但是可以在没有花括号的情况下创建度量来获取数据集:
sum ( NonEmpty ( [Product].[OperatorName].[OperatorName] * [Product].[ProductCode].[ProductCode],([Measures].[StepTimeinDays],[Product].[Step].&[2_Saw]) ),[Measures].[StepTimeinDays] )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。