parar2k
Hola a todos,
Hasta ahora, esta es una comunidad muy útil y capaz de superar algunos de los desafíos que tengo al usar SSAS MD y PowerBI.
Ahora aquí hay uno interesante y estoy seguro de que también es fácil. Estamos planeando tener un tablero que mostrará MTD/QTD/YTD al conectarse a SSAS MD y queremos que este tablero se base siempre en la fecha de hoy. Tengo un cálculo en el cubo, pero el usuario debe seleccionar la fecha para obtener MTD/QTD/YTD. Lo que debo hacer para actualizar automáticamente todos estos gráficos en el tablero. Aquí están mis cálculos en el cubo que funciona cuando el usuario selecciona la fecha en la segmentación en PowerBI
Cálculo basado en la fecha seleccionada
MTD -> SUMA(MTD([Dates].[Calendar].MiembroActual), [Measures].[Transaction Count])
QTD -> SUMA(QTD([Dates].[Calendar].MiembroActual), [Measures].[Transaction Count])
YTD -> SUMA(YTD([Dates].[Calendar].MiembroActual), [Measures].[Transaction Count])
Período anterior basado en la fecha seleccionada en la segmentación
MTD Prev Period -> SUM(MTD(ParallelPeriod([Dates].[Calendar].[Month], 1, [Dates].[Calendar].Miembro actual)), [Measures].[Transaction Count])
QTD Período anterior -> SUMA (QTD (Período paralelo ([Dates].[Calendar].[Quarter], 1, [Dates].[Calendar].Miembro actual)), [Measures].[Transaction Count])
YTD Prev Period -> SUM(YTD(ParallelPeriod([Dates].[Calendar].[Year], 1, [Dates].[Calendar].Miembro actual)), [Measures].[Transaction Count])
Solución propuesta (solo dando un ejemplo de MTD)
SUMA( {StrToMiembro(«[Dates].[Calendar].[Month].&[«+vba!Format(NOW(),»yyyy»)+»]&[» + vba!Format(NOW(),»MM») + «]», LIMITADO)},[Measures].[Transaction Count] )
Estos son los desafíos que veo con este enfoque:
– Si now() está codificado en el campo calculado en el cubo, si el usuario selecciona otra fecha en la segmentación, siempre mostrará el MTD actual y puede ser engañoso.
– ¿Cómo lograr el período anterior basado en la fórmula anterior?
– Estoy seguro de que hay una mejor manera de lograr esto, ¿cuál es esa?
Gracias por adelantado.
PAGS
fbrossard
Vale @parry2k
Mantenga su cálculo de MTD, QTD, YTD basado en su [Dates].[Calendar] jerarquía utilizando currentMember.
Su tarjeta muestra «en blanco» porque su contexto de filtro no especifica ningún valor en su [Dates].[Calendar] jerarquía.
Para hacer eso dinámicamente:
1. cree un miembro y un conjunto dinámico para identificar su valor actual
CREATE MEMBER CURRENTCUBE.[Measures].[Now] AS Now(), FORMAT_STRING = "YYYYMMDD", VISIBLE = 0 , DISPLAY_FOLDER = 'Calculation Members'; CREATE DYNAMIC SET CURRENTCUBE.[Today] AS StrToMember("[Date].[Calendar YQMD].[Date].&[" + CSTR(YEAR([Measures].[Now]) * 10000 + Month([Measures].[Now]) * 100 + Day([Measures].[Now])) + "]"), DISPLAY_FOLDER = 'Named Sets';
2. Alcance su MTD, QTD, YTD y fuerce su [Dates].[Calendar] jerarquía cuando el nivel ordinal no es tan bueno como la profundidad:
SCOPE ([Measures].[Sales Amount YTD]); THIS = CASE WHEN [Date].[Calendar YQMD].level.ordinal = 0 THEN SUM([Today],[Measures].[Sales Amount YTD]) ELSE [Measures].[Sales Amount YTD] END; END SCOPE; SCOPE ([Measures].[Sales Amount MTD]); THIS = CASE WHEN [Date].[Calendar YQMD].level.ordinal < 3 THEN SUM([Today],[Measures].[Sales Amount MTD]) ELSE [Measures].[Sales Amount MTD] END; END SCOPE;
También puede modificar su cubo y establecer un valor predeterminado para su dimensión de fecha.
Anónimo
En respuesta a fbrossard
Hola,
Probé su código y tengo un problema con el conjunto con nombre de hoy. Cuando lo uso en la fórmula Sum, aparece el siguiente error: “Error de OLE DB: error de OLE DB u ODBC: la conversión falló al convertir el valor nvarchar ‘Hoy’ al tipo de datos tinyint.; 22018.”
Hice algunas pruebas y no puedo usar un conjunto con nombre en una suma.
Me he perdido algo ?
Gracias
parar2k
En respuesta a fbrossard
Gracias por la solución, pero veo un desafío con esto. Si el usuario coloca una segmentación de fechas en el informe y selecciona una fecha, siempre mostrará MTD/YTD para hoy.
Puede ser que necesite modificar la solución para que funcione.
Gracias,
PAGS
fbrossard
En respuesta a parar2k
En absoluto, mostrará el MTD, YTD para la fecha seleccionada.
Cuando no se selecciona una fecha, se calcula automáticamente en el día de hoy o en la fecha/período que seleccione.
Phil_Seamark
Creo que puede lograr lo que busca si nunca usa la función MDX NOW().
Simplemente codifique sus medidas calculadas usando el [Dates].[Calendar].currentMember como lo ha hecho y hágalos bien para elegir manualmente la fecha.
Luego, en su dimensión de fecha, agregue una nueva columna llamada [Days from today] y convertirlo en DATEDIFF(DAY,clave de fecha,OBTENER LA FECHA()).
Luego en su Power BI puede seleccionar el [Days from today] filtre en su página de informe y configúrelo en = 0 (o 1 para ayer)
parar2k
En respuesta a Phil_Seamark
Hola Jolly,
Me alegro de que hayas propuesto esta solución que ya probé. cuando pongo el [Date From Today] en el filtro, no muestra automáticamente MTD/QTD/YTD.
Solo para probar, agregué un cortador de fechas en PowerBI y filtré en [Days From Today] y veo que la segmentación de fechas muestra la fecha correcta en función de la [Days From Today] pero MTD/QTD/YTD solo se actualizará cuando realmente seleccione la fecha en la segmentación, no estoy seguro si me estoy perdiendo algo aquí.
Gracias,
PAGS
Phil_Seamark
En respuesta a parar2k
¿Qué tipo de visual estás usando para tu MTD? ¿Está tratando de mostrar un solo valor? ¿O está tratando de mostrar esto como una tendencia a lo largo del tiempo?
parar2k
En respuesta a Phil_Seamark
Solo lo estoy mostrando como una tarjeta. ¡Gracias!
parar2k
En respuesta a parar2k
Independientemente del desafío que tengo en este momento para mostrar el MTD, pero mencionaste un punto interesante sobre la tendencia del MTD. Dado que estaremos filtrando datos cuando [Days From Today] = 0, todo el mes anterior no cumplirá con el requisito de filtro y será excluido. ¿Otro desafío, creo?
Gracias,
PAGS
Phil_Seamark
En respuesta a parar2k
Creo que he resuelto esto enfrentando un problema similar. Mi solución fue basar mis medidas calculadas en la clave de la Dimensión de fecha y no en ningún atributo. Esto podría significar usar la función Descendientes MDX para desplegar a los niños para resumir. No he jugado con esto usando MTD/QTD, etc. pero debería funcionar igual.
por ejemplo, en su medida calculada, estructure su MDX para que solo use la clave, que es más probable que esté en el nivel de fecha. En su dimensión de fecha, busque la columna con el icono de llave.
parar2k
En respuesta a Phil_Seamark
Desafortunadamente, no tuve éxito, usé el campo datekey en la función MTD() pero aún no tuve éxito. No estoy seguro de qué más probar o puede haber algo que no funciona en mi extremo.
Gracias,
PAGS
parar2k
En respuesta a parar2k
Cualquier aporte adicional o ayuda de alguien.
Gracias,
PAGS
parar2k
En respuesta a parar2k
¿Alguien más que pueda ayudar con esto? Parece que es un requisito muy básico, no puedo avanzar con el panel de PowerBI hasta que se resuelva. Espero que alguien pueda proporcionar una solución.
Gracias,
PAGS