Forum Discussion
Combinar/Buscar con Condiciones
- 5 years ago
@sprotson La forma de hacerlo es
- Filtre la primera tabla para la condición que desee.
- A continuación, combínese con la otra tabla.
Si no desea que la primera tabla se filtre de esta manera, cree una referencia a ella y, a continuación, realice la combinación con la 2a tabla en la consulta a la que se hace referencia.
Si desea más ayuda, por favor dénos algunos datos reales para que podamos trabajar a través del código y mostrarle qué hacer.
Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuestas a su pregunta rápidamente
Cómo proporcionar datos de ejemplo en el foro de Power BI
Algunas cosas:
"Cada vez que hago una nueva combinación (para agregar 1 columna más), necesito combinar como nuevo con la referencia de fórmula a la tabla combinada anterior. De esta manera, la columna agregada anteriormente (de la combinación anterior) permanece
Es una solución que usa fórmulas en lugar de filtrar, pero todavía significa tener varias tablas Merge, a diferencia de varias tablas LookUp (filtradas). Digamos que tengo 10 códigos de búsqueda distintos, así que tendría que hacer 10 combinaciones, lo que da el mismo número de consultas que cuando tengo 10 tablas de búsqueda filtradas separadas."
Te fusionas como normal. A continuación, edite el código. Está tratando de hacer todo en el editor avanzado y así es como su 2nd Merge hizo referencia a la tabla original. Todo en M son fórmulas. Todo. Un filtro es la fórmula que utiliza la función Table.SelectRows(). Una combinación es una fórmula que utiliza la función Table.NestedJoin().
Puede hacer los 10 "códigos de búsqueda" en una combinación. Su Table.SelectRows se vería así:
Table.SelectRows(SourceTable, each ([Field1] = 1) and ([Field2] = 2) and ([Field3] = 3))
Y así sucesivamente.
Pero estoy de acuerdo, si pre-filtrar la mesa para otros usos tiene más sentido para usted, hálo de esa manera. Hay bien o mal, hay mejor o peor desde el punto de vista de que es más fácil de mantener con el tiempo, y que se mitiga la posibilidad de error mejor.
No sé por qué crees que lo que publiqué no es una fusión. Lo es, con una condición. Tengo una entrada de blog que sale en esto el 8 de septiembre en mi sitio, pero como spoiler, lo que publiqué pliegues, y se pliega como una fusión. Se trata de la instrucción SQL que Power Query se pliega en SQL Server. Pre-filtra la tabla, luego hace la combinación, en un paso. El servidor hace todo el trabajo. Todavía funciona para archivos planos y fuentes no plegables, así, sólo será más lento porque el 100% del trabajo tiene que ser realizado por Power Query - ese es el caso sin importar qué método utilice.
En mi opinión, no desea ir por la ruta de las "columnas de búsqueda" en Power Query. No es eficiente y las búsquedas en otras tablas, 10.000 filas? No hay problema. ¿1.000.000 de filas? Nunca terminará. Power Query no es Excel y VLOOKUP y sus equivalentes, aunque son posibles en Power Query, son generalmente muy ineficientes. Los evito en todos menos en los modelos más pequeños.
''Idealmente, sería bueno tener una fórmula que me permita hacer 1 combinación y agregar múltiples columnas todas desde la misma tabla - es decir, AppType, State etc desde una sola fórmula/merge"
No entiendo este comentario en absoluto. Siempre puede expandir cualquiera/todas las columnas de la tabla combinada (2a) siempre que la condción de combinación sea la misma. No se puede expandir la columna 1 si el campo 1 es "A" y la columna 2 si el campo 2 es "B", es decir, dos fusiones independientes, ya que no se pueden combinar ([Campo 1] a "A") y ([Campo 2] a "B") ya que esa lógica no es lo que desea. Está pensando en términos de Excel que tiene una fórmula compuesta con un montón de instrucciones IF() anidadas, o una instrucción IFS(). De nuevo, Power Query no es Excel. Podrías hacerlo en DAX usando un montón de IF() con funciones LOOKUPVALUE(), pero eso sería lento y difícil de mantener. Dudo que vaya por ese camino. Realice el modelado de datos en Power Query o en el sistema de origen, no en DAX.
Gracias - Creo que voy a hacer esto con múltiples tablas de búsqueda, cada
La razón por la que necesito hacer fusiones multipel, es que todos los datos que quiero exponer están en la misma columna de la tabla de búsqueda. Me fusiono en función de 1 condición, expongo la columna, la fusiono en otra condición y, a continuación, expongo la misma columna de nuevo.
A continuación se muestra una muestra de lo que estaría en la tabla de búsqueda, como ves, todos los valores que quiero recuperar y diaply en diferentes columnas están todos dentro de la columna "DisplayValue"
| Valor | DisplayValue | Codeset |
| 0 | Habilitado | TrueFalse |
| 1 | Deshabilitado | TrueFalse |
| 2 | Chat | AppType |
| 3 | Correo electrónico | AppType |
| 1 | Verdad | FalseTrue |
| 0 | Falso | FalseTrue |
Aquí están los resultados finales de hacer 3 fusiones
1 es state-value y codeset - TrueFalse
2 es Tipo-valores y conjunto de códigos - AppType
3 es Server-value y codeset - FalseTrue
| BCID | Estado | Tipo | Servidor | State_Readable | Type_Readable | Server_Readable |
| 1 | 0 | 2 | 1 | Habilitado | Chat | Verdad |
| 2 | 0 | 2 | 1 | Habilitado | Chat | Verdad |
| 3 | 0 | 3 | 1 | Habilitado | Correo electrónico | Verdad |
| 4 | 1 | 3 | 0 | Deshabilitado | Correo electrónico | Falso |
| 5 | 1 | 3 | 0 | Deshabilitado | Correo electrónico | Falso |
Las columnas 2, 3 y 4 son de la consulta original y las columnas 5,6 y 7 son las columnas DisplayValue expuestas de las fusiones 1, 2 y 3
Espero que tenga sentido por qué creo que necesito hacer múltiples fusiones, ya que los datos siempre están en la misma columna cada vez
Como dije anteriormente, tener varias tablas de búsqueda (cada una filtrada) es similar a lo que tendría que hacer en sql - así que voy a ir con ese methodologu
Gracias por tu ayuda