Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Esto es lo que estoy tratando de hacer.
Tengo 2 mesas.
1) Tabla de calendario (Año)
año
2016
2017
2018
2019
2020
2) Tabla de ventas (Año, Empleado, Valor)
Empleado, Año, Valor
a, 2020,1
b,2020,1
c,2020,1
d,2019.1
e,2018,1
a,2018,1
Las 2 tablas se unen usando [Año]
Me gustaría filtrar Año en la tabla Calendario que puedo hacer usando filter en Power Query. El filtro que tengo es Año > 2019
Pero su exhibición
Empleado, Año, Valor
a, (en blanco),1
a,2020,1
b,2020,1
c,2020,1
d,2019.1
e,(En blanco),1
Mi resultado esperado fue de 4 filas
Empleado, Año, Valor
a,2020,1
b,2020,1
c,2020,1
d,2019.1
¿Es algo que podría lograr sin usar consultas de combinación. Mi conjunto de datos es bastante grande, utilizando Direct Query y SnowFlake.
Gracias
Hola @BenazirMohammad
Por favor, elimine el paso "filtrar filas" en sus consultas de edición,
Si su tabla "fecha" tiene todas las fechas que están en la tabla "ventas",
puede usar "CAL_DATE' en una segmentación de datos en los informes, a continuación, filtraría el objeto visual de la tabla.
Saludos
Maggie
Equipo de Apoyo Comunitario _ Maggie Li
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias. Ciertamente puedo usar segmentación de datos, pero esperaba si hubiera otra manera de usar filter en el conjunto de datos. No estoy seguro de por qué lo toma como una combinación izquierda y muestra todas las filas de la tabla de ventas. ¿Hay otra manera?
@BenazirMohammad escribió:
Gracias. Ciertamente puedo usar segmentación de datos, pero esperaba si hubiera otra manera de usar filter en el conjunto de datos. No estoy seguro de por qué lo toma como una combinación izquierda y muestra todas las filas de la tabla de ventas. ¿Hay otra manera?
Creo que este es el problema @BenazirMohammad. Estás pensando como una persona SQL aquí. Esto no es una unión a la izquierda. Las relaciones en DAX no son combinaciones, son relaciones de filtro. No son interiores, exteriores, izquierdos o correctos. Desde un punto de vista de filtrado, parecen funcionar como lo haría una unión izquierda, pero es un filtro entre tablas, y puede tener cosas en las tablas FACT que no están en las tablas DIM. Uso Power Query para limpiar esto. Para eso es PQ, el modelado. No intentes modelar en DAX. No intente analizar en Power Query. Utilice la herramienta adecuada para el trabajo. Power Query le permitirá combinar con un left/inner/outer/right/anti e incluso crossjoin. Y esos son honestos a la bondad se une. No filtros.
Esta es también la razón por la que no puede tener más de 1 relación activa entre tablas. Puede tener 10 relaciones, pero solo 1 está activo y los otros 9 están inactivos, y puede activarlo con el modificador USERELATIONSHIP(). Porque no puede tener varios filtros funcionando simultáneamente, lo que es muy diferente de una combinación que se puede basar en 10 campos a la vez.
¿Tiene sentido?
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reportingtiene sentido. gracias por su tiempo y explicación.
¿Cómo haríaesto en la consulta pwer.
Mi conjunto de datos es bastante grande - usando consulta directa / copo de nieve.
He intentado combinar consulta y toma mucho tiempo.
Si en Consulta directa, la combinación se vuelve a plegar al servidor. Si toma mucho tiempo, entonces eso es realmente un problema de servidor, y no estoy seguro de que tengo una solución rápida para usted. ¿Qué es exactamente lo que intentas filtrar? Puede que haya perdido el complot.
¿Qué sucede si ha creado una lista de los elementos que deseaba de la tabla A para que aparecieran en la tabla B y, a continuación, utilice List.Contains()? Vea este ejemplo. Eso se retirará en el servidor SQL y es estúpido rápido. Sin embargo, no sé si se doblará para SnowFlake. No lo sabrás hasta que lo intentes.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingCreo que he simplificado un poco el escenario.
Aquí es cómo la estructura de la tabla real. Los datos se unen por InvoiceDate(Sales) a Date(Sales)
El filtro está en la tabla Año en Ventas.
La tabla de calendario es una tabla que contiene una lista de fechas y varios componentes de fechas.
1) Tabla de calendario (Año, Fecha)
Año, Fecha, Mes, Trimestre......
2016, 01/01/2016,1,1
2016, 01/02/2016,1,1
2016, 01/03/2016,1,1
...
2017,01/01/2017,1,1
...
2018, 01/01/2018,1,1
..
2019, 01/01/2019,1,1
..
2020, 01/01/2020,1,1
...
2020, 01/01/2020,1,1
2) Tabla de ventas (Empleado, Fecha Factura, Valor)
Empleado , InvoiceDate,Valor
a, 01/01/2020,1
b,01/01/2020,1
c,01/01/2020,1
d.01/06/2019.1
e,01/10/2018,1
a,06/15/2018,1
Salida final (esperada)
Empleado , InvoiceDate, Valor, Año (desde calendario), Mes (desde calendario), trimestre (del calendario)
a, 01/01/2020,1,2020,1,1
b,01/01/2020,1,2020,1,1
c,01/01/2020,1,2020,1,1
d,01/06/2019,1,2019,6,2
Cambie el filtro para que sea el año de la tabla Calendario, no la tabla de ventas. Las tablas DIM se filtran, no las tablas FACT como regla. Las tablas DIM filtran las tablas FACT. Las tablas FACT no pueden filtrar tablas DIM a menos que el filtrado bidireccional esté activado, lo que rara vez es una buena idea.
Si necesita más ayuda, consulte los enlaces a continuación para proporcionar datos e idealmente su archivo PBIX.
Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuesta rápida a su pregunta
Cómo proporcionar datos de ejemplo en el foro de Power BI
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reportinglo siento error tipográfico Año está en la tabla calndar y se filtra en la tabla Calendario.
Publicará el .pbix
aquí está el .pbix
https://drive.google.com/file/d/1N0N24bxYHUU_qVsAGR414tzDlW-uuPYC/view?usp=sharing
gracias por su ayuda
Hola
¿Por qué necesita usar Power Query para filtrar? A su objeto visual, arrastre Año desde la tabla de calendario y las demás columnas de la segunda tabla. Ahora filtre la tabla con el Año Calendario > 2019
Power Query es donde debe filtrar los datos si no lo desea en el modelo en absoluto. No tiene sentido traer un montón de datos que no necesita y tiene que filtrarlos en el modelo de alguna manera.
Para eso es la consulta de energía. Modelado y modelado de datos. 😊
pero sólo tiene que aplicar esos filtros a todas las tablas relevantes. No sólo uno de ellos. Hago esto todo el tiempo. Hace que la vida en DAX sea mucho más fácil, y puede hacer que el modelo sea más rápido y más pequeño también.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reporting¿Por qué no filtrar la tabla de datos por el mismo ?> 2019?
Si hay alguna razón que no funcionará, puede hacerlo con List.Contains, pero solo funcionará bien en un conjunto de datos tan grande si el origen de datos admite el plegado para esto. En SQL ServerSQL Server, Power Query usará el operador In al hacerlo. No es necesario fusionarse. Escribí un artículo sobre esto justo hoy por coincidencia.
Básicamente, filtraría su mesa principal de la siguiente manera:
Crear una lista mediante una consulta en blanco que sería "List.Distinct(Calendar[Year]) y llámela UsedYears
A continuación, en la tabla de datos, debe eliminar los años que no estén en la tabla de calendario.
=Table.SelectRows(#"Previous step", each List.Contains(UsedDates, [Year]))
Si se pliega, impresionante. Si no, tendrás que usar una combinación si el filtro simple en la parte superior de esta publicación no funciona.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingTambién tendrá que aplicar el filtro a la tabla Ventas. Los espacios en blanco son para los que tiene datos de ventas que no coinciden con una fila de la tabla de calendario. (esto debería tener la ventaja adicional de empujar este filtro hacia abajo para copo de nieve y permitir que se evalúe en el lado del servidor)
Gracias. Pero no estoy seguro de dónde aplicar el filtro en la tabla de ventas ?
Hola @BenazirMohammad - Estoy un poco confundido. En su publicación original dijo"El filtro que tengo es Año > 2019" en su tabla de calendario en Power Query.
¿No tienes una cita en tu mesa de ventas? Simplemente filtre en la fecha allí también en Power Query para que sea .> #date(2019,1,1). Todo lo que tienes que hacer es seleccionar el menú desplegable y escribir i una fecha. Power Query colocará i la sintaxis #date para usted.
Si eso no está claro, o hemos entendido mal su publicación original, por favor vuelva a publicar con una captura de pantalla de cómo se aplica su filtro original para darnos un poco de contexto.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingCovering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |