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
DanCasSan
Helper V
Helper V

Nombre de campo dinámico

Querida comunidad, necesito su importante apoyo. ¿Es posible configurar el nombre de un campo para que varíe según ciertas situaciones? Por ejemplo, que mi campo "Importes" se denomina "Cantidades de abril" cuando me pongo en ese mes, como ahora, pero que cambia a "Cantidades de mayo" para el mes siguiente.

Cabe señalar que mi informe no contiene un filtro de fecha, por lo tanto, tiene diferentes campos con los últimos 4 meses. Te dejo una imagen de mis campos.

dynamic_name.jpg

saludos

8 REPLIES 8
T2
Helper II
Helper II

Mi largo mensaje detallado y screenshotted fue marcado como spam por alguna razón. Hasta que tenga la oportunidad de recuperar las imágenes que faltan, aquí hay una versión corta de mi respuesta original.

Aquí hay un enlace a un informe de ejemplo que contiene el código descrito aquí con el que puede jugar.

Vaya a Power Query M Function Referencey busque las funciones que necesita para crear la cadena que desee. En el caso de la columna del mes actual es el siguiente:

Text.Combine('Date.MonthName(DateTime.LocalNow()),Number.ToText(Date.Year(DateTime.LocalNow()))'," ")


En el caso de la columna del mes siguiente, invoque la función Date.AddMonths(), como se muestra aquí:

• Table.RenameColumns(?"Columnas renombradas", "Películas el mes siguiente",Text.Combine('Date.MonthName(Date.AddMonths(DateTime.LocalNow(),1)),Number.ToText(Date.Year(DateTime.LocalNow()))'," ")

Por último, para obtener el nombre del mes anterior, utilice -1 en lugar de 1 al llamar a Date.AddMonths(), como se muestra aquí:

• Table.RenameColumns("Columnas renombradas", "Películas el mes pasado",Text.Combine('Date.MonthName(Date.AddMonths(DateTime.LocalNow(),-1)),Number.ToText(Date.Year(DateTime.LocalNow()))'," ")

Si esta solución responde a su pregunta, tómese el tiempo para marcarla como una solución. Creo que es una buena pregunta, así que espero que otros también se beneficien de esta solución.

T2
Helper II
Helper II

Interesante pregunta. Si solo le importa generar un conjunto de datos y no habrá visualizaciones con los campos con nombre dinámico, puede cambiar el nombre de las columnas de la consulta dinámicamente.

¿Tienes prisa? Aquí hay un vínculo a un informe de ejemplo que contiene el código descrito aquí con el que puede jugar y, este siguiente bloque de código es el ejemplo independiente simple en el que tres columnas etiquetadas "Este mes", "Mes pasado" y "Mes siguiente" se renombran dinámicamente a sus valores reales. Simplemente cree una consulta en blanco y suéltela.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjRS0lEyNgYSRgZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Movies This Month" = _t, #"Movies Last Month" = _t, #"Movies Next Month" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Movies This Month", Int64.Type}, {"Movies Last Month", Int64.Type}, {"Movies Next Month", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Movies This Month",Text.Combine({Date.MonthName(DateTime.LocalNow()),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}}),
    Custom1 = Table.RenameColumns(#"Renamed Columns",{{"Movies Last Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),-1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}}),
    Custom2 = Table.RenameColumns(#"Custom1",{{"Movies Next Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})
in
    Custom2

Una forma más fácil de empezar cuando no sabe por dónde empezar es cambiar manualmente el nombre de la columna a cualquier cosa en el editor de consultas. Lo sé. No desea hacerlo manualmente, pero al hacerlo, verá el código generado que puede modificar para hacer lo que desee.


Esto es lo que haces:

Comience con la consulta que devuelve la tabla cuyos nombres de columna desea establecer dinámicamente.

La tabla que estoy mostrando sólo tiene una fila. Esto no importa. Los pasos siguientes funcionarán independientemente del número de filas.

Dynamic column renaming - figure 1.PNG

En el momento en que estoy escribiendo esto es abril de 2020. Quiero cambiar el nombre de la columna etiquetada "Películas este mes" a "Abril 2020". Si no sabe cómo usar el Editor avanzado o incluso dónde empezar en la instrucción para cambiar el nombre de una columna, solo debe realizar el comando más cercano. En este caso, se trata de cambiar manualmente el nombre de la columna haciendo doble clic en el nombre de la columna y sustituyéndola por el nombre que desee. Esta imagen me muestra introduciendo el comienzo del nuevo nombre de columna, "Apri".


Dynamic column renaming - figure 2.PNG

Cuando haya terminado, se habrá aplicado un nuevo paso, que, como puede ver a la derecha, se etiqueta como Columnas renombradas.


Dynamic column renaming - figure 4.PNG

En la barra de fórmulas verá que la instrucción generada por el cambio de nombre manual de la columna es la siguiente:

= Table.RenameColumns(#"Changed Type",{{"Movies This Month", "April 2020"}})


Si no ve la barra de fórmulas encima de la tabla como se muestra en esta imagen, haga clic en Ver en el menú superior y marque la casilla de verificación Barra de fórmulas.


Dynamic column renaming - figure 4.PNG

No voy a entrar en detalles explicando la declaración completa en este momento. Lo que quiero que noten, sin embargo, es cómo el nuevo nombre es claramente visible en la fórmula, "Abril 2020". Esto me dice que probablemente puedo reemplazar eso con una función, tanto como puedo hacer en Excel, por ejemplo.


Voy a Power Query M Function Referencey encuentro las funciones que necesito para crear la cadena que quiero. En este caso de la columna del mes actual es el siguiente:

Text.Combine({Date.MonthName(DateTime.LocalNow()),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}​


En el caso de la columna del mes siguiente, invoco la función Date.AddMonths(), como se muestra aquí:

= Table.RenameColumns(#"Renamed Columns",{{"Movies Next Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})

Finalmente, para obtener el nombre del mes anterior, utilizo -1 en lugar de 1 cuando llamo a Date.AddMonths(), como se muestra aquí:

= Table.RenameColumns(#"Renamed Columns",{{"Movies Last Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),-1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})

Cuando termine, esto es lo que veo:

Dynamic column renaming - figure 5.PNG


Si esta solución responde a su pregunta, tómese el tiempo para marcarla como una solución. Creo que es una buena pregunta, así que espero que otros también se beneficien de esta solución.

T2
Helper II
Helper II

Interesante pregunta. Si solo le importa generar un conjunto de datos y no habrá visualizaciones con los campos con nombre dinámico, puede cambiar el nombre de las columnas de la consulta dinámicamente.

¿Tienes prisa? Este es un ejemplo sencillo de autocontenido en el que tres columnas etiquetadas "Este mes", "El último mes" y "Próximo mes" se renombran dinámicamente a sus valores reales. Simplemente cree una consulta en blanco y suéltela.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjRS0lEyNgYSRgZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Movies This Month" = _t, #"Movies Last Month" = _t, #"Movies Next Month" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Movies This Month", Int64.Type}, {"Movies Last Month", Int64.Type}, {"Movies Next Month", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Movies This Month",Text.Combine({Date.MonthName(DateTime.LocalNow()),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}}),
    Custom1 = Table.RenameColumns(#"Renamed Columns",{{"Movies Last Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),-1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}}),
    Custom2 = Table.RenameColumns(#"Custom1",{{"Movies Next Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})
in
    Custom2


Una forma más fácil de empezar cuando no sabe por dónde empezar es cambiar manualmente el nombre de la columna a cualquier cosa en el editor de consultas. Lo sé. No desea hacerlo manualmente, pero al hacerlo, verá el código generado que puede modificar para hacer lo que desee.


Esto es lo que haces:

Comience con la consulta que devuelve la tabla cuyos nombres de columna desea establecer dinámicamente.

La tabla que estoy mostrando sólo tiene una fila. Esto no importa. Los pasos siguientes funcionarán independientemente del número de filas.

Dynamic column renaming - figure 1.PNG

En el momento en que estoy escribiendo esto es abril de 2020. Quiero cambiar el nombre de la columna etiquetada "Películas este mes" a "Abril 2020". Si no sabe cómo usar el Editor avanzado o incluso dónde empezar en la instrucción para cambiar el nombre de una columna, solo debe realizar el comando más cercano. En este caso, se trata de cambiar manualmente el nombre de la columna haciendo doble clic en el nombre de la columna y sustituyéndola por el nombre que desee. Esta imagen me muestra introduciendo el comienzo del nuevo nombre de columna, "Apri".


Dynamic column renaming - figure 2.PNG

Cuando haya terminado, se habrá aplicado un nuevo paso, que, como puede ver a la derecha, se etiqueta como Columnas renombradas.

En la barra de fórmulas verá que la instrucción generada por el cambio de nombre manual de la columna es la siguiente:

= Table.RenameColumns(#"Changed Type",{{"Movies This Month", "April 2020"}})


Si no ve la barra de fórmulas encima de la tabla como se muestra en esta imagen, haga clic en Ver en el menú superior y marque la casilla de verificación Barra de fórmulas.


Dynamic column renaming - figure 4.PNG

No voy a entrar en detalles explicando la declaración completa en este momento. Lo que quiero que noten, sin embargo, es cómo el nuevo nombre es claramente visible en la fórmula, "Abril 2020". Esto me dice que probablemente puedo reemplazar eso con una función, tanto como puedo hacer en Excel, por ejemplo.


Voy a Power Query M Function Referencey encuentro las funciones que necesito para crear la cadena que quiero. En este caso de la columna del mes actual es el siguiente:

Text.Combine({Date.MonthName(DateTime.LocalNow()),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}​


En el caso de la columna del mes siguiente, invoco la función Date.AddMonths(), como se muestra aquí:

= Table.RenameColumns(#"Renamed Columns",{{"Movies Next Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})

Finalmente, para obtener el nombre del mes anterior, utilizo -1 en lugar de 1 cuando llamo a Date.AddMonths(), como se muestra aquí:

= Table.RenameColumns(#"Renamed Columns",{{"Movies Last Month",Text.Combine({Date.MonthName(Date.AddMonths(DateTime.LocalNow(),-1)),Number.ToText(Date.Year(DateTime.LocalNow()))}," ")}})

Cuando termine, esto es lo que veo:

Dynamic column renaming - figure 5.PNG



Si esta solución responde a su pregunta, tómese el tiempo para marcarla como una solución. Creo que es una buena pregunta, así que espero que otros también se beneficien de esta solución.

v-yiruan-msft
Community Support
Community Support

Hola @DanCasSan ,

¿Los datos de los PRDLIT_0 de campo originales, PRDLIT_1PRDLIT_2 y PRDLIT_3 se actualizan dinámicamente? Por ejemplo, si el mes actual es agosto, entonces el nombre del campo debe mostrarse como"Acum August ","Acum July","Acum June" y "Acum May"? ¿Podría proporcionar algunos datos de muestra (excluir datos confidenciales) y sus datos esperados con la captura de pantalla? Gracias.

Además, no estoy seguro de si la solución de los siguientes subprocesos es aplicable a sus escenarios. Por favor, compruebe.

https://community.powerbi.com/t5/Power-Query/dynamic-column-name-in-formula/m-p/962682

https://community.powerbi.com/t5/Desktop/Dynamic-column-name-from-its-value/m-p/189442

https://community.powerbi.com/t5/Power-Query/Dynamically-update-column-names/m-p/706856

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hola @yingyinr.

Exactamente, los datos que menciona sin embargo ya están actualizados con la información correcta por mes, todo lo que quiero es cambiar el nombre del campo, es decir, cambiar los nombres de PRDLIT_0 a "Acum Abril", PRDLIT_1 a "Acum Marzo", PRDLIT_2 a "Accum Febrero" y PRDLIT_3 para "Accum January".

saludos

Hola @DanCasSan ,

No estoy seguro de si el siguiente es lo que quieres...

1. Seleccione el campo al que desea cambiar el nombre

2. Haga clic en la opción "Cambiar nombre" y escriba el nuevo nombre

Rename.jpg

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@yingyinr hola, esto debe ser automático, no manual; ya que debe cambiarse dependiendo de la variabilidad de los meses.

Hola @DanCasSan ,

Lo siento mucho que todavía tengo que encontrar un método adecuado para lograr esto...

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

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.