/ / Buscar promedio en múltiples jerarquías de dimensión de fecha - fecha, sql-server-2012, mdx, modelado dimensional, ssas-2012

Buscar Promedio en múltiples jerarquías de dimensión de fecha - fecha, sql-server-2012, mdx, modelado dimensional, ssas-2012

Tengo un cubo, y dentro de ese cubo hay una dimensión de fecha que tiene los siguientes atributos

Año calendario, calendario mes año, año fiscal, año fiscal año, fecha

Ahora con estos atributos tengo dos jerarquías definidas por el usuario, son las siguientes Jerarquía de calendario que tiene año calendario, calendario mes-año, fecha

La segunda jerarquía definida por el usuario es Jerarquía fiscal que tiene año fiscal, año fiscal, mes calendario año y fecha

Quiero saber las ventas promedio, así que creé una medida que va

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

Esto funciona muy bien cuando se ejecuta algo como

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

Esto funcionará si uso [Fecha]. [Calendario]. [Calendario Mes-Año] .Miembros pero no funcionará en mis atributos de jerarquía fiscal a excepción del calendario mes-año. ¿Cómo puedo modificar mi indicador para que acepte los atributos de la jerarquía del año fiscal?

Intenté unir el año fiscal, porque si el conjunto está vacío, solo evaluará el que se está utilizando. Pero simplemente no funciona para mí (supongo que sytnax podría ser el problema).

Lo siento chicos, soy realmente nuevo en esto.

Respuestas

1 para la respuesta № 1

Cambie la definición de miembro calculado a:

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.
)
)

Básicamente esto comprobará primero si algún miembroDe la jerarquía "fiscal" está en el alcance o no. Si es así, promediará las fechas fiscales para el miembro seleccionado. Si la primera condición no se cumple, verifica si algún miembro de la jerarquía "Calendario" está dentro del alcance. Si es así, funciona de manera similar en la jerarquía de "Calendario". Finalmente, si ninguno de los miembros de la jerarquía está dentro del alcance, se obtiene NULL(usted podría repensar y poner según su requisito).

NOTA: cuando el currentmember De cualquier jerarquía es la All miembro, eso significa que la jerarquía no está dentro del alcance (no es parte del segmentador de datos ni de los ejes)