Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by attending the DP-600 session on April 23rd (pacific time), live or on-demand.
Learn moreNext up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now
Esta es una pregunta que he visto muchas veces, pero las respuestas proporcionadas en otras publicaciones no me ayudan a comprender qué es lo que está potencialmente mal.
El propósito del siguiente ejemplo es aclarar cualquier confusión que pueda tener en torno al concepto de propagación, por lo tanto, usemos el siguiente ejemplo.
Supongamos que tengo la siguiente sales_table:
Fecha de venta de productos
| 03/01/2024 | A | 3 |
| 03/02/2024 | A | 5 |
| 03/03/2024 | A | 8 |
| 03/04/2024 | A | 20 |
| 03/05/2024 | A | 2 |
| 03/04/2024 | A | 0 |
| 03/05/2024 | A | 7 |
| 03/06/2024 | A | 7 |
| 03/07/2024 | A | 11 |
| 03/08/2024 | A | 12 |
| 03/09/2024 | A | 6 |
| 03/10/2024 | A | 8 |
| 03/11/2024 | A | 18 |
| 03/12/2024 | A | 2 |
| 03/13/2024 | A | 5 |
| 03/14/2024 | A | 9 |
| 03/15/2024 | A | 6 |
| 03/03/2024 | B | 70 |
| 03/07/2024 | B | 75 |
| 03/08/2024 | B | 80 |
| 03/12/2024 | C | 40 |
| 03/14/2024 | C | 48 |
Quiero filtrar (obtener en un formato de matriz) las ventas a nivel de producto utilizando otra tabla como capa de filtración y para cualquier valor no coincidente para obtener un valor EN BLANCO. Continuando con el ejemplo anterior, supongamos que, con fines ilustrativos, quiero obtener las ventas a nivel de producto para un conjunto predefinido de fechas (sin una regla en particular):
Aquí está la tabla de filtración proporcionada que estoy usando:
cdate
| 03/01/2024 |
| 03/02/2024 |
| 03/03/2024 |
| 03/07/2024 |
| 03/08/2024 |
| 03/09/2024 |
| 03/14/2024 |
| 03/15/2024 |
| 03/20/2024 |
| 03/21/2024 |
Y la relación entre las dos tablas:
Por lo que entiendo, la relación debe ser de uno a muchos desde el "custom_dates" hasta el "sales_table", ya que el "cdate" único se propagará siguiendo la dirección de la flecha y filtrará las fechas en la columna "date" del sales_table. Sin embargo, la salida agrega una fila adicional en la parte superior que captura las ventas de las fechas de la tabla "custom_dates" que no existían en el "sales_table". Además, algunas de las fechas de los "cdates" que no existen en la columna "date" no se rellenan con valores en blanco para cada uno de los productos.
Cuando cambio la cardinalidad a muchos:muchos, el resultado está más cerca de lo esperado, ya que la fila vacía desaparece, aunque el total del producto C sigue incluyendo los valores no coincidentes (también las fechas no coincidentes aún no muestran valores vacíos). Sin embargo, creo que esto debería ser incorrecto, ya que especifiqué anteriormente que los "cdates" son valores únicos y, por lo tanto, siempre deben ser el lado "uno" de la cardinalidad.
Como resultado, juzgo por lo anterior que podría estar perdiendo algo en términos de cómo funciona la filtración y la propagación.
¿Alguien puede ayudar por favor (obviamente soy principiante)?
@پاوربیٹری @پاوربیٹری ,
Tal vez puedas probar esto:
En primer lugar, cree una nueva tabla para fusionar estas dos tablas con el dax:
Table =
SELECTCOLUMNS (
FILTER (
CROSSJOIN ( 'sales_table', 'custom_dates' ),
'sales_table'[date] = 'custom_dates'[cdate]
),
"cdate", [cdate],
"product", [product],
"sales", [sales]
)
Luego crea una matriz, el resultado es el siguiente:
Saludos
Yilong Zhou
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias, parece que tendré que fusionar las dos tablas con una de las funciones JOIN que proporciona DAX.
También aquí hay otra solución alternativa:
Después de investigar y experimentar un poco, parece que, de forma predeterminada, Power BI mostrará todas las filas, independientemente del tipo de conexión entre dos tablas. La única forma de eliminar los no deseados es abordarlos a través de los filtros. Al eliminar los espacios en blanco de las filas para el objeto visual específico, obtengo todos los valores que espero en las filas y el total en la parte inferior es correcto.
Esto es en caso de que alguien lo encuentre útil.
Descubrí cómo mostrar las filas EN BLANCO para los días que no coinciden. Tuve que activar el siguiente campo.
Sin embargo, la pregunta principal sigue siendo, ¿por qué se agrega esa fila adicional en la parte superior? ¿No debería la propagación de la cardinalidad 1:Many proporcionar, por definición, una solución para ella?
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.