Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply

Aplicar filtro a una tabla y unira a otra tabla sin usar la consulta merge

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

15 REPLIES 15
v-juanli-msft
Community Support
Community Support

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.

Capture7.JPG

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?



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

tiene 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.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Creo 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



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

lo siento error tipográfico Año está en la tabla calndar y se filtra en la tabla Calendario.

Publicará el .pbix

Ashish_Mathur
Super User
Super User

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


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

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.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
edhans
Super User
Super User

¿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.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
d_gosbell
Super User
Super User

Tambié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.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.