Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

¿Cómo cambiar automáticamente los nombres de las columnas en el escritorio de Power BI?

Hola

Tengo una tabla que contiene estas columnas (el contenido es un ejemplo):

Nombre de la tablaNombre de columnaMostrar texto en inglésMostrar nombre de texto alemánDescripción InglésDescripción germano
dbo. víveresfruits_colFrutasFrutaestructuras carnosas asociadas a semillas de una planta que son agridulces o agriasestructuras carnosas asociadas a semillas de una planta que son dulces o ácidas

Necesito crear un informe en idiomas con traducción de esta tabla. Tengo otras tablas de la base de datos SQL que los nombres de las columnas que conectaré / relacionaré con el contenido de la columna "nombre de columna" de la tabla anterior. El problema es que los nombres de columna en otras tablas son horisontal y la columna "nombre de columna" de la tabla anterior es vertical. La opción de pivote necesita trabajar mucho manualmente. Necesito que Power BI cambie automáticamente los nombres de columna. ¿Quizás puede ser achived por DAX?

Anna

6 REPLIES 6
edhans
Super User
Super User

Hola @Anna2312 ,

Un problema es que no creo que haya una manera de que una consulta en Power Query sepa el nombre de la tabla que ha extraído. Obtiene la tabla, por supuesto, pero esos datos no están expuestos a mis conocimientos de una manera que los pasos posteriores pueden acceder a ellos. Además, la "tabla" con la que Power Query ahora está trabajando tiene su propio nombre. Si son iguales es sólo porque usted los nombró lo mismo. No están relacionados. Por lo tanto, podría llamarse Query1. Y tampoco hay manera de que PQ lo sepa. Ninguna función devolverá eso a mi conocimiento.

Dicho esto, puede usar los datos de una tabla para cambiar el nombre de las columnas en otra. Vea este código : hay dos tablas aquí.

Esta es su primera tabla:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("PcxBCsJADAXQq4RZV4/hWnBZiqQzqQ3WiSQZpL2MF3HXizmD4Cbk/4TX9yGNcjyJpNCFSQu7XaMs/1AXGc1bXsjmFYwoHdBMIqNTAnMt0YuSgUyA8FwwO/iMDqgE9iJyEAWToj+FLc58qyd8UG7SxkzqBJdK3RuVgTiTwnmq2EYdJK7v+2d/g6TaG5Y2OacwDF8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Table name" = _t, #"Column name" = _t, #"Display text english" = _t, #"Display text name german" = _t, #"Description english" = _t, #"Description german" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Table name", type text}, {"Column name", type text}, {"Display text english", type text}, {"Display text name german", type text}, {"Description english", type text}, {"Description german", type text}})
in
    #"Changed Type"

Que se ve así:

2020-05-29 07_52_07-20200529 - Dynamic Column Rename - Power Query Editor.png

entonces creé esta sencilla tabla llamada dbo Food con este código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1YlWMgKTxkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [fruits_col = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"fruits_col", Int64.Type}}),
    #"Change Column Name" = 
        let 
            varOldName = Table.SelectRows(Table, each [Table name] = "dbo.Food")[Column name]{0},
            varNewName = Table.SelectRows(Table, each [Table name] = "dbo.Food")[Display text english]{0}
        in
        Table.RenameColumns(#"Changed Type", {{varOldName, varNewName}})
in
    #"Change Column Name"

Que se ve así:

2020-05-29 07_52_45-20200529 - Dynamic Column Rename - Power Query Editor.png

El siguiente código (mostrado en el código M anterior) cambiará el nombre de la columna de "fruits_col" a "fruits"2020-05-29 07_53_12-20200529 - Dynamic Column Rename - Power Query Editor.png

Sin embargo, tendría que ser capaz de manejar esto en DAX. No se puede colocar "Fruits" en un objeto visual y luego cambiar un ajuste pensar que "Obst" simplemente entrará en ese mismo objeto visual. No lo hará. DAX verá que Fruits ya no existe y produce un error. Y cualquier cambio de nomenclatura dinámico también puede afectar a Power Query más abajo en los pasos si otros pasos hacen referencia a los nombres de columna a menos que también haga esos dinámicos, lo que es definitivamente posible, pero será muy tedioso.

Esto sería más útil como una forma de controlar el cambio de nombre de columna con una tabla, pero no cambiar dinámicamente entre idiomas.

Puede ver el archivo PBIX aquí.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
Anonymous
Not applicable

Hola @edhans,

Muchas gracias. Probaré tu solución.

Saludos

Anna

Hola @Anna2312 ,

Tal vez puedas hacer esto.

1. Utilice la función 'Despivot Columns' para transformar el 'dbo. Mesa de alimentos.

ddd8.PNG

2. Crear una relación entre 'dbo. Mesa de alimentos y mesa de descripción.

Saludos
Lionel Chen

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

v-lionel-msft
Community Support
Community Support

Hola @Anna2312 ,

Supongamos que tiene la siguiente tabla. ¿Qué tipo de mesa quieres superar la transformación?

ee2.PNG

Saludos
Lionel Chen

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

Hola @v-lionel-msft,

Tengo la siguiente tabla:

foto1.JPG

Voy a crear muchos raports de diversas tablas de la base de datos SQL que pueden tomar automáticamente valores de columnas "Mostrar texto" en ambos idiomas y valores de columnas "Descripton" en ambos idiomas que están relacionados con los nombres de columna de otras tablas de la base de datos SQL. Lo mejor es cambiar los nombres de las columnas automáticamente en ambos idiomas og iut también se puede añadir como cuadro de texto o visualización de tarjetas. Un exaple de la tabla:

foto2.JPG

Las tablas que usaré pueden tener incluso 150 columnas. Por lo tanto, pivotar y despívoro es difícil.

Saludos

Anna

Greg_Deckler
Super User
Super User

Lo siento @Anna2312 no estoy seguro de que lo haya seguido por completo, pero creo que tienes tres opciones:

1. Despotable las columnas de las otras tablas

2. Pivote esa columna en esa tabla

3. Utilice la medida DAX para formar esencialmente la relación entre tablas

Es difícil decir qué enfoque es mejor, ya que no está seguro del contexto más amplio en el que reside esta cuestión.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors