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
Syndicate_Admin
Administrator
Administrator

Eliminación de columna después del cálculo en Power Query (con fines de anonimización de datos)

Hola

Estoy creando un modelo de datos con datos contables, lo que significa que hay información que debe ser anonimizada. Tengo 2 mesas:

Tabla "Facturas"

Nombre del proveedorID de proveedorFactura Nr.Importe de la facturaDivisa
AAA1111231231000EURO
BBB2223213212000EURO
CCC3334564563000USD
AAA111654654500USD
CCC333789789800GBP

Luego tengo otra tabla: "Proveedores internos"

ID de proveedor
AAA
BBB
DDD
EEE

Necesito crear una columna calculada que agregará el "Nombre del proveedor alternativo" buscando la tabla "Proveedores internos" y si el proveedor está allí, agregará el texto "INTERNO" y, si no, tomará el nombre de "Nombre del proveedor".

Ahora, el problema es que necesito eliminar la columna "Nombre del proveedor" de la tabla "Facturas" para que los usuarios finales no puedan ver los nombres originales. Ocultar la columna no es muy útil, ya que los usuarios pueden usar medidas (como SELECTEDVALUE) para obtener los datos. Tan pronto como elimino la columna, mi caluculación en "Nombre de proveedor alternativo" está fallando.

El resultado deseado es el siguiente:

Nombre de proveedor alternativoID de proveedorFactura Nr.Importe de la facturaDivisa
INTERNO1111231231000EURO
INTERNO2223213212000EURO
CCC3334564563000USD
INTERNO111654654500USD
CCC333789789800GBP

¿Hay alguna solución para eso (por ejemplo, Power BI realizará el cálculo primero y luego quitará la columna)?


¡Gracias por cualquier sugerencia!

Ivan

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@IvanS ,

Creé un archivo pbix de muestra (ver archivo adjunto) para usted basado en los datos de tabla proporcionados, verifique si eso es lo que desea.

1. Combine estas dos tablas en función de la columna [Nombre del proveedor] de la tabla "Facturas" y la columna [ID del proveedor] de la tabla "Proveedores internos"

yingyinr_0-1646991062806.png

2. Agregue una columna personalizada para actualizar la base de valores en las condiciones

yingyinr_1-1646991147884.png

3. Elimine la columna orignial [Nombre del proveedor] en la tabla Facturas

Los códigos completos aplicados de la siguiente manera:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VY07DoAgEETvsjUFLB+xBDS2RkNFuP81nMUGkpdlJryF1iilRIqMMTLZAglaaxxnfairRjlnNGbGtGyA1NUppcitlXXnA5D6O/U9hjP/FbwDCH5R5me2uAOEOJQr39T7Bw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Vendor Name" = _t, #"Vendor ID" = _t, #"Invoice Nr." = _t, #"Invoice Amount" = _t, Currency = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Vendor Name", type text}, {"Vendor ID", Int64.Type}, {"Invoice Nr.", Int64.Type}, {"Invoice Amount", Int64.Type}, {"Currency", type text}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Vendor Name"}, #"Internal vendors", {"Vendor ID"}, "Internal vendors", JoinKind.LeftOuter),
    #"Expanded Internal vendors" = Table.ExpandTableColumn(#"Merged Queries", "Internal vendors", {"Vendor ID"}, {"Vendor ID.1"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Internal vendors", "Alternative Vendor Name", each if [Vendor ID.1]=null then [Vendor Name] else "INTERNAL" ),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Vendor ID.1", "Vendor Name"})
in
    #"Removed Columns"

yingyinr_2-1646991473574.png

Saludos

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@IvanS ,

Creé un archivo pbix de muestra (ver archivo adjunto) para usted basado en los datos de tabla proporcionados, verifique si eso es lo que desea.

1. Combine estas dos tablas en función de la columna [Nombre del proveedor] de la tabla "Facturas" y la columna [ID del proveedor] de la tabla "Proveedores internos"

yingyinr_0-1646991062806.png

2. Agregue una columna personalizada para actualizar la base de valores en las condiciones

yingyinr_1-1646991147884.png

3. Elimine la columna orignial [Nombre del proveedor] en la tabla Facturas

Los códigos completos aplicados de la siguiente manera:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VY07DoAgEETvsjUFLB+xBDS2RkNFuP81nMUGkpdlJryF1iilRIqMMTLZAglaaxxnfairRjlnNGbGtGyA1NUppcitlXXnA5D6O/U9hjP/FbwDCH5R5me2uAOEOJQr39T7Bw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Vendor Name" = _t, #"Vendor ID" = _t, #"Invoice Nr." = _t, #"Invoice Amount" = _t, Currency = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Vendor Name", type text}, {"Vendor ID", Int64.Type}, {"Invoice Nr.", Int64.Type}, {"Invoice Amount", Int64.Type}, {"Currency", type text}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Vendor Name"}, #"Internal vendors", {"Vendor ID"}, "Internal vendors", JoinKind.LeftOuter),
    #"Expanded Internal vendors" = Table.ExpandTableColumn(#"Merged Queries", "Internal vendors", {"Vendor ID"}, {"Vendor ID.1"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Internal vendors", "Alternative Vendor Name", each if [Vendor ID.1]=null then [Vendor Name] else "INTERNAL" ),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Vendor ID.1", "Vendor Name"})
in
    #"Removed Columns"

yingyinr_2-1646991473574.png

Saludos

Syndicate_Admin
Administrator
Administrator

Cree la columna calculada en Power Query, luego podrá eliminar de forma segura la columna original y no se expondrá en su informe.

Combine la tabla de datos con la tabla Proveedores internos y, a continuación, cree una nueva columna personalizada. Si el valor de la columna combinada es null, utilice el nombre de proveedor original, de lo contrario utilice "INTERNAL". A continuación, puede eliminar la columna original y cualquier otra columna introducida durante la combinación.

Syndicate_Admin
Administrator
Administrator

@IvanS ,

Consulte el artículo a continuación. Lo he usado anteriormente en mi caso. Espero que te ayude a ti también.

https://eriksvensen.wordpress.com/2019/02/28/powerquery-replicate-doing-an-excel-vlookup-in-m/

Gracias

Samarth

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.