Forum Discussion
Combinar/Buscar con Condiciones
- 6 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
Hey @sprotson , esto es interesante. Nunca he pensado en probar esto. Aquí está el código de un Join - este exterior izquierdo, pero interno, anti, lo que sea, esta es la fórmula básica. El parámetro "Tabla de búsqueda" es una referencia a la tabla de búsqueda. Eso es a lo que te estás uniendo.
Table.NestedJoin(#"Changed Type", {"Type"}, #"Lookup Table", {"Value"}, "Lookup Table", JoinKind.LeftOuter)
Entonces, ¿qué pasa si reemplazamos eso con un Table.SelectRows?
#"Merged Queries" =
Table.NestedJoin(
#"Changed Type",
{"Type"},
Table.SelectRows(#"Lookup Table", each [Codeset] = "AppType"),
{"Value"},
"Lookup Table",
JoinKind.LeftOuter
)
Ahora solo combina datos de la tabla de búsqueda si Codeset es AppType.
No estoy seguro de que haya seguido su necesidad de empezar a terminar como algunos de sus nombres de columna cambiaron. Tenías Tipo en una tabla, Valor en otra, etc.
Pero hacer una combinación regular (función superior) devuelve esto, que no es lo que desea.
Mi código modificado, aunque devuelve esto:
Los conjuntos de códigos TRUE/FALSE no están en esto.
Por lo tanto, no creo que esto sea diferente en segundo plano en cuanto a cómo recomendé en primer lugar, pero ahora está en una línea de código y no necesita una consulta de referencia para hacer referencia.
Pero, usted tiene que editar manualmente el código M para hacer esto. No se puede hacer a través de las herramientas de interfaz de usuario.
Avísame si eso es un poco más punto para ti.
Gracias - que funciona perfectamente cuando hago la fusión una vez - por ejemplo en el tipo -valor & conjunto de códigos " 'AppType'
Tan pronto como intente hacer otra combinación con la tabla de búsqueda, esta vez en state-value & codeset á 'TrueFalse'. a continuación, pierdo el DisplayValue anterior (cuando expando las columnas de la tabla de búsqueda) de la primera combinación. incluso si hago Combinar como nuevo.
Supongo que sólo se puede fusionar a la misma mesa una vez
Creo que voy a ir con la metodología de la tabla de búsqueda duplicada / referencia
Apreciamos toda tu ayuda - aplausos
- edhans6 years ago
Community Champion
Funciona bien. Sospecho que su última declaración de "in" llamó al paso equivocado.
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Type", Int64.Type}, {"State", Int64.Type}}), #"Merged Queries" = Table.NestedJoin( #"Changed Type", {"Type"}, Table.SelectRows(#"Lookup Table", each [Codeset] = "AppType"), {"Value"}, "Lookup Table", JoinKind.LeftOuter ), #"Expanded Lookup Table" = Table.ExpandTableColumn(#"Merged Queries", "Lookup Table", {"DisplayValue"}, {"DisplayValue"}), #"Merged Queries1" = Table.NestedJoin( #"Expanded Lookup Table", {"State"}, Table.SelectRows(#"Lookup Table", each [Codeset] = "TrueFalse"), {"Value"}, "Lookup Table", JoinKind.LeftOuter ), #"Expanded Lookup Table1" = Table.ExpandTableColumn(#"Merged Queries1", "Lookup Table", {"DisplayValue"}, {"DisplayValue.1"}) in #"Expanded Lookup Table1"Puedes hacer tantos como quieras. No se perderá nada de un paso anterior.
- sprotson6 years ago
Helper I
Gracias por su respuesta de nuevo, pero no estoy seguro de estar siguiendo
Como dije, soy un completo novato, así que por favor disculpe mi ignorancia
El proceso que sigo es usar la función de interfaz de usuario Combinar como nuevo con las tablas siguientes - Application_Versions con LookupTable en el tipo .
Esto crea una nueva consulta llamada "Merge1"
A continuación, ajusto lo que está en la barra formaual con lo siguiente para que la combinación sea condicional
• Table.NestedJoin(
"Application_Versions",
"tipo",
Table.SelectRows('LookupTable'", cada [CodeSet] á "AppType"),
"Valor",
"LookupTable",
JoinKind.LeftOuter
)Si entonces miro el editor avanzado, tiene lo siguiente
Dejar
Fuente ?
Table.NestedJoin(
"Application_Versions",
"tipo",
Table.SelectRows('LookupTable'", cada [CodeSet] á "AppType"),
"Valor",
"LookupTable",
JoinKind.LeftOuter
)
En
FuenteA continuación, puedo decidir qué columnas de LookupTable incluir en la nueva consulta.
El siguiente paso que sigo es hacer otra combinación, esta vez Merge1 con LookupTable en state-value. A continuación, me ajustaría como antes para agregar la condición de conjunto de códigos en la fórmula como tal
"Application_Versions",
"estado",
Table.SelectRows('LookupTable'", cada [CodeSet] á "TrueFalse"),
"Valor",
"LookupTable",
JoinKind.LeftOuter
)Antes de ajustar el foral puedo ver las columnas de LookuTable previamente seleccionadas, pero después del ajuste se han ido. Esto tiene sentido, ya que seguramente no sería capaz de seleccionar la misma columna de la misma tabla de nuevo
No estoy seguro de dónde va su código, en qué momento se utiliza en mi proceso o si necesito hacer cualquiera de los pasos en mi proceso
Salud
- edhans6 years ago
Community Champion
Muéstrame el código M de consulta completo y usa el cuadro de código si es posible - el icono </>.
Pero creo que el problema son las dos últimas líneas de su consulta completa son:
in SourceDebe ser:
in #"Application_Versions"pero necesitaría ver la consulta M completa para estar seguro. Sólo veo snippits.