/ / Localizando o valor médio em várias hierarquias de dimensão de data - data, sql-server-2012, mdx, modelagem dimensional, ssas-2012

Como encontrar médias em várias hierarquias de dimensão de data - data, sql-server-2012, mdx, modelagem dimensional, ssas-2012

Eu tenho um cubo e, dentro desse cubo, há uma dimensão de data que possui os seguintes atributos

Ano civil, ano civil do calendário, ano fiscal, trimestre do ano fiscal, data

Agora com esses atributos eu tenho duas hierarquias definidas pelo usuário, elas são as seguintes Hierarquia do calendário que tem o ano do calendário, o mês do calendário, a data

A segunda hierarquia definida pelo usuário é Hierarquia Fiscal que tem ano fiscal, trimestre do ano fiscal, ano do mês do calendário e data

Eu quero saber a média de vendas, então eu criei uma medida que vai

Member [Measures].[Sales Daily Avg]
AS Avg ( Descendants ( [Date].[Calendar].CURRENTMEMBER, [Date].[Calendar].[Date] ), CoalesceEmpty([Measures].[Total Sales] , 0) )

Isso funciona muito bem ao executar algo como

SELECT {
[Measures].[Sales Daily Avg],
} ON COLUMNS,
{ [Date].[Calendar].[Calendar Year].Members } ON ROWS
FROM
[SalesCube]

Isso funcionará se eu usar [Date]. [Calendar]. [Calendar Month-Year] .Members mas não funcionará nos meus atributos de hierarquia fiscal, exceto no Mês do Ano do Calendário. Como posso modificar minha medida para que ela aceite os atributos da hierarquia do ano fiscal.

Tentei cruzar o ano fiscal, porque se o conjunto estiver vazio, ele apenas avaliará o que está sendo usado. Mas isso simplesmente não funciona para mim (estou assumindo sytnax pode ser o problema).

Desculpe pessoal, eu sou muito novo nisso.

Respostas:

1 para resposta № 1

Altere a definição do membro calculado para:

CREATE Member [Measures].[Sales Daily Avg]
AS
IIF
(
NOT([Date].[Fiscal].CURRENTMEMBER IS [Date].[Fiscal].[All])
,
Avg
(
Descendants
(
[Date].[Fiscal].CURRENTMEMBER,
[Date].[Fiscal].[Date]
)
,
CoalesceEmpty([Measures].[Total Sales] , 0)
)
,
IIF
(
NOT([Date].[Calendar].CURRENTMEMBER IS [Date].[Calendar].[All])
,
Avg
(
Descendants
(
[Date].[Calendar].CURRENTMEMBER,
[Date].[Calendar].[Date]
)
,
CoalesceEmpty([Measures].[Total Sales] , 0)
),
NULL //Change this to whatever you want in case none of the hierarchies "Calendar" or "Fiscal" is involved.
)
)

Basicamente, isso irá primeiro verificar se algum membroda hierarquia "Fiscal" está no escopo ou não. Em caso afirmativo, a média será calculada nas datas fiscais do membro selecionado. Se a primeira condição não for atendida, ela verifica se algum membro da hierarquia "Calendário" está no escopo. Em caso afirmativo, ele funciona de maneira semelhante na hierarquia "Calendário". Finalmente, se nenhum dos membros da hierarquia estiver no escopo, ele renderá NULL(você pode repensar e colocar como por sua exigência).

NOTA: quando o currentmember de qualquer hierarquia é o All membro, isso significa que a hierarquia não está no escopo (não faz parte do slicer ou dos eixos)