将带有分组依据的 SQL 查询转换为 MDX 脚本

Convert SQL query with a group by into an MDX script

我需要使用 MDX 在 ssas 上创建一个度量来计算员工人数,但我真的不知道如何将 sql 脚本转换为 MDX,这真的很复杂。

我想要的是如下所示的度量:

CREATE MEMBER CURRENTCUBE.[Measures].[Employee_Number]
AS (count([Collaborateur].[Matricule]) , 
VISIBLE = 1; 

这是我的 sql 代码:

SELECT a.Affectation,a.code_agence
(
SELECT COUNT(b.MATRICULE) 
FROM [dbo].[ODS_HR_AFFECTATION] b 
WHERE 
 a.[CODE_AFFECTATION] = b.CODE_AFFECTATION and
 b.[DATE_FIN] = '2050-01-01' 
 ) AS employee_count
  FROM [dbo].[ODS_HR_AFFECTATION] a 

结果

AFFECTATION        CODE_AGENCE   employee_count

Agence Megrine     1012          9
Agence Centrale    1000          9
Agence Bardo       1032          8
Agence hellel      1064          5
Agence Saloul      1061          5
Agence Ville       1079          5
Agence Aazira      1055          5
Agence batb bhar   1054          5
Agence Hammam      1093          5
Agence Midoun      1100          3
Agence May         1121          3
AGENCE KIT EDDAIER 1046          3
Agence Beb         1108          3
Agence Metouia     1120          3
Agence Mourouj 6   1128          3
Agence Metlaoui    1122          3

欢迎来到 Whosebug。如果我正确理解你的问题,你想按 Affectation 和 code_agence 分组并计算“2050-01-01”的不同 MATRICULE。为此,您需要创建一个度量,以帮助您计算任何日期或其他分组的 MATRICULE。基于这种理解,这里是你可以如何解决它。

实际上 table 您应该有包含 MATRICULEID 的列。现在,在您的 SSAS 项目中,您应该在此列上创建一个 Distinct count Measure。现在,日期和 ODS_HR_AFFECTATION 等其他维度与您的事实相关联,因此无论您对它们 select 有何评价,新度量都会报告该多维数据集 space.[= 的 MATRICULE 的非重复计数。 11=]

查询会是这样。(请注意这只是一个示例,在您的多维数据集中,对象的名称会有所不同)

select [measures].[DistinctMATRICULE] on 0,

([DimODS_HR_AFFECTATION].[Affectation].[Affectation],
[DimODS_HR_AFFECTATION].[code_agence].[code_agence]) on 1 
from [yourcube]
where 
[Dimdate].[DATE_FIN].[2050-01-01]