Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola
Tengo una tabla de datos que contiene horas en línea por día, tienda y plataforma de socios.
Las tablas de hechos tienen una relación 1:* procedente de los números Dims Storekey, PartnerKey y DateKey
¿Cómo puedo calcular el total de horas en línea por tienda y socio, en todo el rango de fechas seleccionado (a través de una segmentación, sin influencia visual)?
He probado con varias variaciones de TODOS los filtros, claramente mi conocimiento es limitado y no logro producir el resultado deseado.
Una vez que obtenga el total de horas en línea, me gustaría usarlo para caclular las ventas totales por hora (replicaré el enfoque para las ventas totales por hora), lo que en última instancia me dará el promedio de ventas por hora por grupo; en última instancia, multiplicando esto por otra medida, las horas fuera de línea y produciendo las ventas perdidas debido al tiempo de inactividad.
¿Alguien puede ayudarme a producir las ventas por socio y tienda en todo el rango de fechas seleccionado>?
Hola @glearner
La medida a continuación eliminará cualquier filtro proveniente de la tabla Fechas/Calendario, pero respetará el filtro de otras tablas.
// Calculates the total online hours across all dates, ignoring any filters on the Dates table.
CALCULATE([Online Hours Measure], ALL(Dates))
Para que esta medida funcione, debe utilizar una tabla de dimensiones Fechas independiente con una relación de una sola dirección de uno a varios con la tabla de hechos.
Hola @danextian , me siento tonto
El uso de All Date proporciona la salida prevista, sin embargo, estaba usando All('Date'[DateKey]) que no lo hizo.
¿Tienes alguna idea de por qué? La confirmación de la relación con la tabla de fechas es de 1 a *, en función de la clave de fecha.
Vea a continuación una captura de pantalla
¡Gracias!
Con ALL('Date'[DateKey]), el modificador de filtro se aplica exclusivamente a la columna DateKey de la tabla Date. Esto significa que se quitan los filtros destinados específicamente a la columna DateKey, mientras que los filtros de otras columnas de la tabla Date o de cualquier tabla relacionada seguirán activos e influirán en el cálculo. Por lo tanto, si usa la columna Date real en lugar de la columna DateKey, se seguirán aplicando los filtros.
@danextian Entonces, ¿está sugiriendo que en algún lugar, de alguna manera, el modelo semántico está filtrando la tabla de hechos en función de un campo dentro de la tabla de calendario que no es datekey? Dios mío, odio este modelo...
Esperaba calcular estos promedios por tienda y socio de entrega.
¿Sería un todo excepto DeliveryMetrics.StoreKey y DeliveryMetrics.PartnerKey sean adecuados para su propósito?
¿Hay alguna manera de limitar todo en función de la fecha seleccionada en las segmentaciones? AllSelected(Date) quizás?
¡Gracias por su continuo apoyo
Hay una diferencia clave entre modificar el contexto de filtro en una columna y en una tabla. El uso de ALL('Table'[Column]) quita el filtro específicamente de esa columna. Siempre que se haga referencia a esa columna, se omite el filtro. Por ejemplo, si incluye DateKey en un objeto visual junto con una medida que le aplica ALL, aparecerá el mismo valor en todas las filas de la columna, incluso si se aplica una segmentación de datos a DateKey . En este caso, solo las filas visibles cambiarán en función de la selección de la segmentación, pero los valores de la medida permanecerán coherentes en toda la columna debido a la función ALL.
Por otro lado, si filtra por fechas reales con una segmentación, los valores se ajustarán para reflejar el rango filtrado. Sin embargo, la medida seguirá mostrando el mismo valor en toda la columna DateKey porque la función ALL se aplicó específicamente a esa columna.
Esto pone de manifiesto por qué se considera una buena práctica utilizar una tabla de fechas independiente. En tablas desnormalizadas en las que todos los datos residen en una sola tabla, la aplicación de ALL a toda la tabla evitará que los valores cambien, independientemente de los filtros que se le apliquen.
Es una práctica para algunos usar DateKey en una relación en lugar de las fechas reales porque eso es lo que está en la base de datos de origen.
¿Hay alguna manera de limitar todo en función de la fecha seleccionada en las segmentaciones? AllSelected(Date) quizás?
Sí, puede usar ALLSELECTED para limitar el ámbito de ALL en función de la selección actual en segmentaciones de datos o objetos visuales. Sin embargo, es importante entender cómo se comporta ALLSELECTED. Respeta los filtros aplicados en el contexto actual, pero elimina los filtros de nivel inferior dentro de la jerarquía.
Por ejemplo, si agrega columnas como Fecha, Mes, Trimestre y Año de una tabla de fechas a un objeto visual y la medida usa ALLSELECTED, los valores permanecerán coherentes en todas las filas dentro del contexto seleccionado actualmente. Si selecciona Q1 en la segmentación, la medida mostrará el valor total de Q1 en todas las celdas, independientemente de las fechas, meses u otros filtros de nivel inferior individuales.
Esto sucede porque ALLSELECTED conserva los filtros aplicados en niveles superiores (como Q1) mientras ignora los filtros más detallados (como fechas individuales). Es útil cuando se necesita que la medida respete la selección de la segmentación de datos, pero que se agregue a un nivel más amplio dentro de esa selección. Por ejemplo, en los casos en los que desee comparar los días individuales con el total de todos los días visibles.
Excelente @danextian, muchas gracias.
Estamos haciendo grandes progresos, pero es evidente que hay un conocimiento que transfiere el contexto y que se me escapa, ya que el uso de todos los seleccionados no produce el resultado final previsto.
Logré obtener el $ / hora gracias a usted, pero ahora el sumx está produciendo un resultado impredecible, esperaba ver 1.3 x 2 = 2.6 para la primera tienda
Además, la tarjeta con la misma medida también produce los resultados incorrectos, ya que esperaba que sumara dicha multiplicación para cada combinación de tienda y socio de entrega.
Medidas definidas a continuación:
1. Desplazamiento = Suma(DeliveryMetrics[Shift])
2. $/hora:
Hola @glearner
SUMX(DeliveryMetrics, [Shift] * [$/h]) evalúa cada fila de la tabla DeliveryMetrics individualmente, no en función de combinaciones de tienda y socio de entrega. La expresión [Shift] * [$/h] se calcula para cada fila de la tabla, lo que puede producir resultados diferentes para cada fila y, a continuación, estos valores se suman en todas las filas visibles de DeliveryMetrics.
Si desea que el cálculo tenga en cuenta combinaciones de columnas específicas, evite usar toda la tabla a menos que esas columnas sean las únicas presentes y sus combinaciones sean únicas. El uso de toda la tabla puede dar lugar a resultados no deseados si existen combinaciones duplicadas y puede causar un problema de rendimiento en tablas grandes debido al número de hoja o filas que se están iterando.
Probar:
SUMX(
// The SUMMARIZECOLUMNS function creates a table grouped by 'table'[column1] and 'table'[column2].
// It also adds a virtual column named "@value" that contains the result of [the measure].
SUMMARIZECOLUMNS(
'table'[column1],
'table'[column2],
"@value", [the measure]
),
// The SUMX function iterates through each row of the summarized table,
// accessing the calculated column "@value" and summing its values.
[@value]
)
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.