Tabla de unión con valores distintos de otra tabla donde el valor aún no existe

Un usuario Pregunto ✅

ns89

Hola,

Con suerte, una pregunta simple, soy un principiante en Power BI pero tengo experiencia con Qlik:

Tengo dos tablas de origen de datos (A y B), ambas con una columna de ID de producto en cada una. (La tabla B tiene más ID de productos que la tabla A).

1. Me gustaría crear una nueva tabla (C) que tenga todos los ID de productos únicos de la tabla A.

2. Luego me gustaría agregar/unir todos los ‘ID de producto únicos en la Tabla B que aún no se han agregado a la Tabla C’ a mi recién creada Tabla C.


¡Cualquier ayuda sería genial! – (En Qlik podrías hacer fácilmente un ‘concatenar donde no existe‘ en una tabla.)

Gracias

Hola @ns89,

Puede probar debajo del código M para ver si funciona o no

Tabla A y Tabla B

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUTIEYiOlWJ1opSQwS0fJGMxLBrNgcolQOROl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [name = _t, id = _t, amount = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"name", type text}, {"id", Int64.Type}, {"amount", Int64.Type}})
in
    #"Changed Type"
let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlPSUTJUitWJVkoEsozArGQgy1QpNhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [NAME = _t, amount = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"NAME", type text}, {"amount", Int64.Type}})
in
    #"Changed Type"

Entonces la nueva tabla C

let
    Source = Table.NestedJoin(A, {"name"}, B, {"NAME"}, "B", JoinKind.RightAnti),
    #"Removed Columns" = Table.RemoveColumns(Source,{"name", "id", "amount"}),
    #"Expanded B" = Table.ExpandTableColumn(#"Removed Columns", "B", {"NAME", "amount"}, {"NAME", "amount"}),
    #"Appended Query" = Table.Combine({#"Expanded B", Table.FromColumns({A[name],A[amount]},{"NAME","amount"})})
in
    #"Appended Query"

Atentamente,
zoe zhi

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola @ns89,

Puede probar debajo del código M para ver si funciona o no

Tabla A y Tabla B

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUTIEYiOlWJ1opSQwS0fJGMxLBrNgcolQOROl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [name = _t, id = _t, amount = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"name", type text}, {"id", Int64.Type}, {"amount", Int64.Type}})
in
    #"Changed Type"
let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlPSUTJUitWJVkoEsozArGQgy1QpNhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [NAME = _t, amount = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"NAME", type text}, {"amount", Int64.Type}})
in
    #"Changed Type"

Entonces la nueva tabla C

let
    Source = Table.NestedJoin(A, {"name"}, B, {"NAME"}, "B", JoinKind.RightAnti),
    #"Removed Columns" = Table.RemoveColumns(Source,{"name", "id", "amount"}),
    #"Expanded B" = Table.ExpandTableColumn(#"Removed Columns", "B", {"NAME", "amount"}, {"NAME", "amount"}),
    #"Appended Query" = Table.Combine({#"Expanded B", Table.FromColumns({A[name],A[amount]},{"NAME","amount"})})
in
    #"Appended Query"

Atentamente,
zoe zhi

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Anónimo

Hola @ns89

Hay una función similar a SQL UNION en el Editor de consultas llamada «Agregar consultas» en la parte superior derecha de la cinta de inicio en el editor de consultas.

si hace clic en agregar canteras como nuevas y selecciona las tablas, creará su nueva tabla con columnas coincidentes. Hay este video de youtube que lo explica muy bien y me deja entenderlo. https://www.youtube.com/watch?v=qXH4WjCykLc

Recomendaría limpiar las tablas que está agregando antes de agregar porque intentará hacer coincidir en cada columna, donde no coincida creará valores «nulos».

Espero que esto ayudeagregar consultas.PNGAgregar.PNG

Dobby Libr3

greg_deckler

Quieres algo como:

Table C = 
  DISTINCT(
    UNION(
      'Table A'[Product ID],
      'Table B'[Poduct [ID]
    )
  )

ns89

En respuesta a greg_deckler

Hola @Greg_Deckler,

Gracias por esto. Lo siento, no especifiqué, pero lo que también necesitaría son otras columnas de la Tabla A (como la columna ‘Orden’).

Por ejemplo:

Producto A Orden A — De la Tabla A

Producto B Orden A — De la Tabla A

Producto C (en blanco) — De la Tabla B (Como el Producto C no está en la Tabla A, lo hemos unido aquí)

es posible? ¡Gracias de nuevo!

greg_deckler

En respuesta a ns89

No estoy seguro de qué Orden es (texto, numérico, ?). Consulte esta publicación sobre cómo obtener una respuesta rápida a su pregunta: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

En teoría, si es un número, use ADDCOLUMNS alrededor de su UNIÓN y haga la SUMA de un FILTRO de la Tabla A donde ProductID en la tabla A es igual a ProductID. (Podría tener que usar ANTES)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *