Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
ACTUALIZACIÓN: 26 mayo - Desafortunadamente todavía no puede hacerlo funcionar. Me he tomado el tiempo para crear datos ficticios para que reflejen el código real tanto como sea posible.
Resultado deseado
Basado en las fechas seleccionadas en la segmentación de datos:
Datos de muestra
SlicerGroup1 | fecha | SlicerGroup2 | identificación | valor | grupo | Sub_Group | Sub_Sub_Group | Sub_Sub_Sub_Group |
SG1_1 | 31-Mar-21 | SG2_1 | ID_1 | -0.03% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_1 | 31-Mar-21 | SG2_1 | ID_2 | 0.02% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_1 | 31-Mar-21 | SG2_1 | ID_3 | -0.04% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_1 | 30-Abr-21 | SG2_1 | ID_3 | 0.02% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_1 | 30-Abr-21 | SG2_1 | ID_1 | -0.06% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_1 | 30-Abr-21 | SG2_1 | ID_2 | 0.04% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_2 | 31-Mar-21 | SG2_1 | ID_4 | 0.06% | Group_2 | G2_SG1 | G2_SG1_SSG1 | G2_SG1_SSG1_SSSG1 |
SG1_1 | 4-Mayo-21 | SG2_1 | ID_2 | 0.04% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_1 | 3-Mayo-21 | SG2_1 | ID_2 | 0.02% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_1 | 4-Mayo-21 | SG2_1 | ID_1 | 0.07% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_1 | 3-Mayo-21 | SG2_1 | ID_1 | -0.05% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_1 | 4-Mayo-21 | SG2_1 | ID_3 | -0.02% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_1 | 3-Mayo-21 | SG2_1 | ID_3 | 0.03% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_2 | 30-Abr-21 | SG2_1 | ID_4 | 0.02% | Group_2 | G2_SG1 | G2_SG1_SSG1 | G2_SG1_SSG1_SSSG1 |
SG1_2 | 31-Mar-21 | SG2_1 | ID_1 | 0.04% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_2 | 31-Mar-21 | SG2_1 | ID_3 | 0.04% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_2 | 31-Mar-21 | SG2_1 | ID_2 | 0.00% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_2 | 30-Abr-21 | SG2_1 | ID_3 | 0.04% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_2 | 30-Abr-21 | SG2_1 | ID_1 | 0.08% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_2 | 30-Abr-21 | SG2_1 | ID_2 | -0.06% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_2 | 3-Mayo-21 | SG2_1 | ID_2 | -0.07% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_2 | 4-Mayo-21 | SG2_1 | ID_2 | 0.04% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG2 |
SG1_2 | 4-Mayo-21 | SG2_1 | ID_1 | -0.07% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_2 | 3-Mayo-21 | SG2_1 | ID_1 | 0.01% | Group_1 | G1_SG1 | G1_SG1_SSG1 | G1_SG1_SSG1_SSSG1 |
SG1_2 | 4-Mayo-21 | SG2_1 | ID_3 | 0.01% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_2 | 3-Mayo-21 | SG2_1 | ID_3 | 0.02% | Group_1 | G1_SG2 | G1_SG2_SSG1 | G1_SG2_SSG1_SSSG1 |
SG1_2 | 4-Mayo-21 | SG2_1 | ID_4 | 0.03% | Group_2 | G2_SG1 | G2_SG1_SSG1 | G2_SG1_SSG1_SSSG1 |
SG1_2 | 3-Mayo-21 | SG2_1 | ID_4 | -0.02% | Group_2 | G2_SG1 | G2_SG1_SSG1 | G2_SG1_SSG1_SSSG1 |
Salida actual
La salida actual de interés se muestra en la tabla izquierda de la siguiente imagen. La tabla derecha muestra un ejemplo de los valores agregados, por lo que si la [Fecha] se selecciona como 30-Abr-21, debería tomar los valores -0,10% y 0,01%, y devolver el mínimo, es decir, -0,10% en este caso. Sobre la base de la medida [2_month_min_datestring], parece sugerir que se han aplicado los filtros adecuados. Los códigos para las medidas también se pegan a continuación.
2_month_min_datestring =
VAR endDate = LASTDATE(Table2[Date])
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) )
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table2, Table2[SlicerGroup1], Table2[Group] ),
Table2[Date] >= startDate &&
Table2[Date] <= endDate
)
RETURN
"FROM " & MINX( filteredTable, Table2[Date] ) & " TO " & MAXX ( filteredTable, Table2[Date] )
2_month_min_value =
VAR endDate = LASTDATE(Table2[Date])
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) )
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table2, Table2[SlicerGroup1], Table2[Group] ),
Table2[Date] >= startDate &&
Table2[Date] <= endDate
)
RETURN
MINX ( filteredTable, SUM( Table2[Value] ) )
Agradezco cualquier orientación, muchas gracias - He estado pasando muchas horas en esto, pero mis medidas iniciales todavía me hicieron más cerca.
---
MENSAJE ORIGINAL:
Hola, tengo una visualización que actualmente toma la fecha de finalización de una segmentación de datos en la página. Me gustaría que la medida:
Actualmente tengo una medida que parece que ya casi está ahí:
1Y_min =
VAR endDate = LASTDATE(Table[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table, Table[ParentGroup], Table[Group1] ), -- Create a new table, ignoring the Date slicer filter
Table[Date] >= startDate &&
Table[Date] <= endDate
)
VAR sumQuantity =
SUM ( Table[Quantity] )
RETURN
MINX ( filteredTable, sumQuantity )
Sé con certeza que la tabla filtrada devuelve los intervalos de fechas correctos examinando los resultados devueltos por el código siguiente:
1Y_min =
VAR endDate = LASTDATE(Table[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table, Table[ParentGroup], Table[Group1] ),
Table[Date] >= startDate &&
Table[Date] <= endDate
)
RETURN
"FROM " & MINX( filteredTable, Table[Date] ) & " TO " & MAXX ( filteredTable, Table[Date] )
Sin embargo, parece desmoronarse en el momento en que intento obtener los rangos MIN/MAX - claramente sólo está devolviendo la SUMA para la fecha especificada en la segmentación de datos (ya que MIN/MAX devuelve los mismos resultados).
Agradecería cualquier ayuda, gracias.
Solved! Go to Solution.
No @Vera_33,
Mirando los datos de muestra que he proporcionado de nuevo parece que puede ser diferente de la que estoy usando - disculpas por eso. Estaba usando el generador RAND() en Excel y debo haberlo actualizado accidentalmente. En cualquier caso, me las arreglé para construir sobre lo que proporcionaste y finalmente lo hice funcionar. Aquí está el siguiente código:
2m_min_vera =
VAR endDate = LASTDATE(Table2[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR slicerSelection = VALUES( Table2[SlicerGroup1] )
VAR filteredTable =
FILTER (
ALLEXCEPT( Table2, Table2[Group] ), -- Create a new table, keeping the Group row context
Table2[SlicerGroup1] IN slicerSelection &&
Table2[Date] >= startDate &&
Table2[Date] <= endDate
)
VAR t1 =
SUMMARIZE(filteredTable, Table2[Date], "sumQuantity", SUM ( [Value] ))
RETURN
-- CONCATENATEX( t1, Table2[Group], "," ) Used for debugging
-- CONCATENATEX( t1, FORMAT([sumQuantity], "0.00%"), "," ) Used for debugging
FORMAT( MINX ( t1, [sumQuantity]), "0.00%" )
Parece que el uso de ALLEXCEPT (Tabla2, Tabla2[SlicerGroup1]) de alguna manera no estaba teniendo en cuenta la selección de segmentación de datos, ya que las fórmulas de depuración indicaban que el SG1_2 slicergroup1 también se estaba incluido en la tabla filtrada.
También cambié el GROUPBY con SUMMARIZE a mitad de camino, aunque parecen servir para la misma función.
Muchas gracias.
Hola @Wendeley-Norte
¿No está seguro de si lo entiendo correctamente, desea encontrar el valor mínimo de SUM ( Tabla [Cantidad] ) en el nivel mes en el último 12 mes? ¿Tiene datos de nivel de día y una columna mes? Es mejor publicar algunos datos de muestra... y el objeto visual para mostrarlo con Table[ParentGroup], Table[Group1]?
1Y_min =
VAR endDate = LASTDATE(Table[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table, Table[ParentGroup], Table[Group1] ), -- Create a new table, ignoring the Date slicer filter
Table[Date] >= startDate &&
Table[Date] <= endDate
)
VAR t1 =
GROUPBY(filteredTable, [Month],"sumQuantity",SUMX (CURRENTGROUP, [Quantity] ))
RETURN
MINX ( t1, [sumQuantity] )
No @Vera_33,
Sí, eso es correcto. Actualmente se basa en una columna de fecha, ¿podría usar [Fecha]. ¿Mes para hacer la agrupación en su lugar?
Estos son algunos datos de ejemplo:
fecha | Grupo de padres | ID de artículo | Grupo 1 | FilterGroup | cantidad |
29-Enero-99 | A | 12431232 | Zz | X | -100 |
26-Febrero-99 | A | 12312333 | ZC | Y | 10 |
26-Febrero-99 | A | 12334123 | atrás | X | -10 |
26-Febrero-99 | A | 12342332 | Eg | X | -20 |
31-Mar-99 | A | 12321231 | atrás | X | 50 |
29-Enero-99 | B | 16453453 | atrás | Y | 100 |
26-Febrero-99 | B | 13232322 | ZF | X | 50 |
Probará tu solución en un rato y te volverá a ver, vítores.
En cuanto al objeto visual, Table[ParentGroup] es una selección de segmentación de datos, por lo que el objeto visual solo tendrá Table[Group1] como contexto de fila.
Hola @Wendeley-Norte
No creo que [Fecha]. Mes funcionará... No uso este tipo de fecha y hora automáticas en Power BI...
Hola Vera, tu medida no funcionó, por desgracia.. He actualizado la publicación principal para incluir más detalles y un mejor conjunto de datos de muestra, espero que sea más fácil para usted. gracias.
Hola @Wendeley-Norte
Usé tus datos ficticios actualizados, pero tengo valores diferentes, ¿consideras Sub Group también? Debería ser -0.05% si no hay Subgrupo, no -0.01% en su puesto. Es mejor que pueda compartir un archivo .pbix, le pm pronto.
No @Vera_33,
Eso es extraño, ya que mis datos ficticios son exactamente lo que he publicado anteriormente. Incluso si tengo en cuenta los subgrupos:
Parece que ninguno de ellos debería estar regresando -0.04%?
Desafortunadamente no puedo subir nada debido a las restricciones de firewall, pero he hecho todo lo posible para replicar desde cero lo que estoy mostrando aquí para con suerte hacer que sea más fácil de solucionar..
@Vera_33 He vuelto a intentar su solución, pero parece haber algún error:
2m_min_vera =
VAR endDate = LASTDATE(Table2[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR filteredTable =
FILTER (
ALLEXCEPT ( Table2, Table2[SlicerGroup1], Table2[Group] ), -- Create a new table, ignoring the Date slicer filter
Table2[Date] >= startDate &&
Table2[Date] <= endDate
)
VAR t1 =
GROUPBY(filteredTable, 'Date'[Month],"sumQuantity",SUMX (CURRENTGROUP, [Value] ))
RETURN
MINX ( t1, [sumQuantity] )
La medida parece devolver sólo el valor correcto cuando se elige 30-Abr-21. Cuando se eligen otras fechas, parece que devuelve el mismo valor del -0,10%, cuando debería ser del -0,15% cuando se elige el 3-mayo-21 o el 4-mayo-21, por ejemplo.
Hola @Wendeley-Norte
Siento que necesito entender el valor que quieres devolver primero... tomemos 30-Abr-21, necesita resumir el valor por cada mes y encontrar el Min.
Es -0,05% (-0,04%,0,02%,-0,03%), o -0,04% teniendo en cuenta Sub_Group, de lo contrario malinterpreté todo.
No @Vera_33,
Mirando los datos de muestra que he proporcionado de nuevo parece que puede ser diferente de la que estoy usando - disculpas por eso. Estaba usando el generador RAND() en Excel y debo haberlo actualizado accidentalmente. En cualquier caso, me las arreglé para construir sobre lo que proporcionaste y finalmente lo hice funcionar. Aquí está el siguiente código:
2m_min_vera =
VAR endDate = LASTDATE(Table2[Date]) -- Determined by slicer
VAR startDate = DATE( YEAR(endDate) - 1, MONTH(endDate), DAY(endDate) ) -- 1-year lookback
VAR slicerSelection = VALUES( Table2[SlicerGroup1] )
VAR filteredTable =
FILTER (
ALLEXCEPT( Table2, Table2[Group] ), -- Create a new table, keeping the Group row context
Table2[SlicerGroup1] IN slicerSelection &&
Table2[Date] >= startDate &&
Table2[Date] <= endDate
)
VAR t1 =
SUMMARIZE(filteredTable, Table2[Date], "sumQuantity", SUM ( [Value] ))
RETURN
-- CONCATENATEX( t1, Table2[Group], "," ) Used for debugging
-- CONCATENATEX( t1, FORMAT([sumQuantity], "0.00%"), "," ) Used for debugging
FORMAT( MINX ( t1, [sumQuantity]), "0.00%" )
Parece que el uso de ALLEXCEPT (Tabla2, Tabla2[SlicerGroup1]) de alguna manera no estaba teniendo en cuenta la selección de segmentación de datos, ya que las fórmulas de depuración indicaban que el SG1_2 slicergroup1 también se estaba incluido en la tabla filtrada.
También cambié el GROUPBY con SUMMARIZE a mitad de camino, aunque parecen servir para la misma función.
Muchas gracias.
Gracias por la propina, probé el [Date].month y de hecho no funcionó, intentaré crear una mesa de citas separada y volver a ti en breve. salud.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |