Anónimo
Es necesario eliminar los valores duplicados de una columna que también tenía muchos valores nulos. Es necesario conservar las filas nulas.
Intenté usar el editor de consultas eliminar duplicado filas funcionan, pero también elimina todos los valores nulos.
Lista inicial
Resultado después de usar la función de eliminar filas duplicadas. Donde se deben conservar las 7 filas nulas de la lista inicial
Resultado después de usar la función de eliminar filas duplicadas. Mientras que las 7 filas nulas de la lista inicial deben conservarse.
Adjunto el archivo de muestra para una mayor persuasión. archivo de muestra
ziying35
Hola, @Anónimo
let
Source = Table.FromRecords(Json.Document(Binary.Decompress(Binary.FromText("i65WSlSyUko2NDJV0lFKAjIrKlKUanVgwiZQ0eLEdLhooiFMbTFcMK80JwcmVoxNJValSIZWGRlClaan58BF0+AOSM/G1J+ajc2q3JxiTKW5SEqT4Y4qT1WqjQUA",BinaryEncoding.Base64),Compression.Deflate))),
result = Table.FromRows(List.Distinct(Table.ToRows(Source),each if _{0}=null then Text.NewGuid() else _{0}))
in
result
Si mi código puede resolver su problema, márquelo como una solución
ziying35
Hola, @Anónimo
let
Source = Table.FromRecords(Json.Document(Binary.Decompress(Binary.FromText("i65WSlSyUko2NDJV0lFKAjIrKlKUanVgwiZQ0eLEdLhooiFMbTFcMK80JwcmVoxNJValSIZWGRlClaan58BF0+AOSM/G1J+ajc2q3JxiTKW5SEqT4Y4qT1WqjQUA",BinaryEncoding.Base64),Compression.Deflate))),
result = Table.FromRows(List.Distinct(Table.ToRows(Source),each if _{0}=null then Text.NewGuid() else _{0}))
in
result
Si mi código puede resolver su problema, márquelo como una solución
v-tapa-msft
Hola @Anónimo,
Si desea eliminar filas duplicadas de filas nulas en blanco y mantenga todas las filas nulas, podemos agregar un paso para cumplir con su requisito:
SelectDesireTable = Table.Combine({Table.SelectRows(NameOfYourLastStep, each [Column1] = null),Table.Distinct(Table.SelectRows(NameOfYourLastStep, each [Column1] <> null), {"Column1"})})
Si la lógica distinta depende de múltiples columnas
SelectDesireTable = Table.Combine({
Table.SelectRows(NameOfYourLastStep, each [Column1] = null and [Column2] = null),
Table.Distinct(Table.SelectRows(NameOfYourLastStep, each [Column1] <> null or [Column2] <> null), {"Column1","Column2"})})
Todas las consultas están aquí:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("dcc3DsAwDATBv7BW41w75+xO0P+/4TULdgZugFvvJRInJSoJzkvMq9FoJbwWnVbK6zFYjZi0Mt6MxWrFppXzdhxWJy4tzrf/W3BuPBLCCw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t]),
NameOfYourLastStep = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}}),
SelectDesireTable = Table.Combine({Table.SelectRows(NameOfYourLastStep, each [Column1] = null),Table.Distinct(Table.SelectRows(NameOfYourLastStep, each [Column1] <> null), {"Column1"})})
in
SelectDesireTable
Si desea mantener el orden, primero podemos crear una columna de índice y luego crear una columna personalizada utilizando la siguiente fórmula:
let c = _,
temp = Table.SelectRows(#"Added Index",each [Column1] = c[Column1]),
rowcount = Table.RowCount(temp)
in if rowcount=1 or [Column1]=null then [Index] else Table.Max(temp,"Index")[Index]
Si desea eliminar depende de varias columnas:
let c = _,
temp = Table.SelectRows(#"Added Index",each [Column1] = c[Column1] and [Column2] = c[Column2]),
rowcount = Table.RowCount(temp)
in if rowcount=1 or ([Column1]=null and [Column2]=null) then [Index] else Table.Max(temp,"Index")[Index]
Todas las consultas están aquí (Tabla (2) en el archivo de muestra):
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("dcc3DsAwDATBv7BW41w75+xO0P+/4TULdgZugFvvJRInJSoJzkvMq9FoJbwWnVbK6zFYjZi0Mt6MxWrFppXzdhxWJy4tzrf/W3BuPBLCCw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t]),
NameOfYourLastStep = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}}),
#"Added Index" = Table.AddIndexColumn(NameOfYourLastStep, "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each let c = _,
temp = Table.SelectRows(#"Added Index",each [Column1] = c[Column1]),
rowcount = Table.RowCount(temp)
in if rowcount=1 or [Column1]=null then [Index] else Table.Max(temp,"Index")[Index]),
#"Removed Duplicates" = Table.Distinct(#"Added Custom", {"Custom"}),
#"Removed Columns" = Table.RemoveColumns(#"Removed Duplicates",{"Index", "Custom"})
in
#"Removed Columns"
Después de eliminar las filas duplicadas según la columna personalizada y la columna adicional, podemos obtener el resultado deseado:
Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto según las tablas que hemos compartido?
Por cierto, archivo PBIX adjunto.
Atentamente,
jborro
Hola @Anónimo,
1. Filtre todos los nulos de su tabla de origen y luego ejecute Eliminar duplicados
2. Filtre todos los no nulos de su tabla original
3. Combina 1 + 2.
Atentamente,
JB
edhans
Necesita proporcionar algunos datos. No puede usar la función Table.Distinct aquí porque 2 valores nulos son duplicados y los eliminará.
Esto se puede hacer, pero no con las opciones del menú. Vea los enlaces a continuación para compartir datos.
Cómo obtener buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener una respuesta rápida a su pregunta
Cómo proporcionar datos de muestra en el foro de Power BI