Nombre de columna dinámica a partir de su valor

Un usuario Pregunto ✅

finellj

Hola

¿Hay alguna forma de cambiar dinámicamente el nombre de la columna de sus valores? Creo que podría ser posible usando un editor avanzado, pero no soy muy bueno escribiendo M.

Tengo la tabla Dimension y quiero que la columna Dimension_name tenga su nombre dinámicamente a partir de sus valores, que es el mismo en todas las filas en este caso.

Necesito esto para poder usar la misma plantilla en cada caso de cliente y no tengo que cambiar los nombres de las dimensiones cada vez que cambio la fuente de datos.

Puede haber soluciones más sencillas y agradezco todas las soluciones que me puedan dar.

Gracias

MarcelBeug

En respuesta a buscapersonas

Mire este video en el que «Fuente» es el nombre del paso anterior en mi consulta.

Desafortunadamente, mientras escribía, saltó de la segunda línea a la primera línea, pero es la misma «Fuente».

MarcelBeug

La forma más fácil es crear un código base en M haciendo doble clic en el encabezado de la columna y cambiar el nombre en algo.

Luego ajusta el código generado, como:

= Table.RenameColumns(Dimension,{{"Dimension_Name", Dimension[Dimension_Name]{0}}})

En este código, «Dimensión» es el nombre de su paso anterior en el código. Si eso es otra cosa, entonces debe usar ese paso, por ejemplo, si hubiera sido # «Tipo cambiado», entonces:

= Table.RenameColumns(#"Changed Type",{{"Dimension_Name", #"Changed Type"[Dimension_Name]{0}}})

El primer # «Tipo modificado» se genera automáticamente, por lo que debe utilizar este nombre en la fórmula ajustada.

buscapersonas

En respuesta a MarcelBeug

Hola Marcel,

También estoy tratando de hacer esto para mi informe y estoy tratando de seguir su explicación.

¿Puede aclarar que «Dimensión» es el paso anterior del código? Si observa su primer código en su respuesta, parece que «Dimensión» es la tabla en la que se extraen los datos.

Además, ¿puedes dar más detalles sobre el «tipo #cambiado»? No estoy seguro de cómo se generaría automáticamente.

¡Gracias por tu ayuda!

MarcelBeug

En respuesta a buscapersonas

Mire este video en el que «Fuente» es el nombre del paso anterior en mi consulta.

Desafortunadamente, mientras escribía, saltó de la segunda línea a la primera línea, pero es la misma «Fuente».

Anónimo

En respuesta a MarcelBeug

Hola @MarcelBeug,

Gracias por una gran solución. Aquí tengo algunos requisitos adicionales. Necesito crear una aplicación global donde tendremos una tabla de datos real. Pero tendremos otra tabla donde tendremos nombres de campos dinámicos. p.ej

La tabla de datos (Table1) tendrá.

Campos F1 F2 y F3. Estos campos se utilizarán en todos los gráficos y segmentaciones.

Y la otra tabla (Table2) tendrá.

ID F1 F2 F3 —— Columnas iguales al nombre de la tabla de datos (Table1)

1 X Y Z ——- Nombres de campos dinámicos como valores para la línea anterior para el Departamento 1

2 A B C——- Nombres de campos dinámicos como valores para la línea anterior para el Departamento 2

Por lo tanto, siempre que el Departamento 1 use mi aplicación en ese momento, los nombres de campo serán XYZ, que reemplazarán los nombres de campo de la Tabla de datos (Tabla1), es decir, F1 F2 y F3

Si el Departamento 2 usará mi aplicación en ese momento, los nombres de los campos serán ABC, que reemplazarán los mismos nombres de campo de la Tabla de datos (Tabla1), es decir, F1 F2 y F3.

Estos cambios deben aplicarse dinámicamente a todos los objetos de gráfico creados.

Necesito alguna idea sobre este tema.

Muchas gracias de antemano.

Saludos,

SKD

Anónimo

En respuesta a MarcelBeug

Hola, @MarcelBeug. Siento que estoy muy cerca de hacer que esto funcione, pero sigo recibiendo el siguiente error:

Expression.Error: esperábamos un valor de RenameOperations.
Detalles:
Lista

Aquí está mi código:

    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [_PublicationDate]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column22"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Custom", type date}}),
    #"Extracted Year" = Table.TransformColumns(#"Changed Type1",{{"Custom", Date.Year, Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Extracted Year",{{"Custom", "PublicationYear"}}),
    AddedCustom1 = Table.AddColumn(#"Renamed Columns", "Year1Calc", each [PublicationYear] + 1),
    #"Renamed Columns1" = Table.RenameColumns(AddedCustom1,{{"Year1Calc", AddedCustom1[Year1Calc]{1}}})
in
    #"Renamed Columns1"

Los primeros 5 pasos dan mi valor de mi columna (el año de publicación +1). el paso de columnas 1 renombradas parece que debería funcionar, pero luego arroja el error.

¡Cualquier ayuda sería muy apreciada! Realmente estoy atascado y he estado pirateando esto por un tiempo.

yash14vashistha

En respuesta a Anónimo

¿Pudiste obtener la respuesta correcta? Tengo exactamente el mismo problema.

Cualquier ayuda sería apreciada.

Anónimo

En respuesta a MarcelBeug

Cuando cambio el nombre de las columnas, se rompen las tablas que he creado. Dice que todas las columnas de la tabla no son válidas y tengo que volver a arrastrar las columnas recién nombradas para que vuelva a funcionar. ¿Hay alguna forma de evitar esto?

Anónimo

En respuesta a Anónimo

Actualizar dinámicamente los nombres de las columnas según una tabla de mapeo podría ser muy útil si solo funcionara la salida no solo con tablas planas de Excel, sino también con informes de Power BI y tablas dinámicas de Excel.

Desafortunadamente, no lo parece. Curiosamente, esta limitación / error informado en 2015 todavía parece ser el ‘estado de la técnica’:

«Cuando cambia el nombre de una columna en el Editor de consultas de Power BI …, implícitamente activa las referencias de columna en sus informes para que se actualicen. Sin embargo, cuando cambia el nombre de las columnas a través de alguna lógica dinámica, este mecanismo no se activa y las referencias de columna en los informes están rotos. … esto parece un error – deberías enviar un ceño fruncido … » [2015]

«Una vez que cambia el nombre de la columna, el informe se rompe porque espera el nombre de la columna anterior» [2017]

¿Alguien conoce una buena solución para preservar las referencias de columna en las imágenes después de aplicar un paso de cambio de nombre tan masivo?

buscapersonas

En respuesta a MarcelBeug

¡Gracias, ese video tiene mucho más sentido!

¿Habría alguna forma de utilizar una función Switch o IF para el nombre basado en una cortadora? Hipotéticamente, si tuviera una segmentación basada en Temporadas del año, me gustaría que mis columnas reflejaran los nombres del mes en esa temporada.

dilipkumar9

En respuesta a buscapersonas

hola Pager.

Estoy buscando exactamente esta solución. cuando selecciono un mes de la segmentación, quiero ver mis «ingresos» de medidas con el nombre del mes de la segmentación. algo así como «ingresos de junio de 2018».

¿Pudiste hacer que esto funcionara? si es así por favor comparta

itnesh

En respuesta a dilipkumar9

Absolutamente el mismo problema: sería bueno tener una solución aquí.
En mi ejemplo, podemos cambiar en una cortadora entre Money y Volumes. Por lo tanto, si el usuario selecciona Dinero en los nombres de las columnas, debe ser (EUR) y, si se seleccionan los volúmenes, debe escribirse (HL).

En respuesta a buscapersonas

Hola @ pager,


¿Habría alguna forma de utilizar una función Switch o IF para el nombre basado en una cortadora? Hipotéticamente, si tuviera una segmentación basada en Temporadas del año, me gustaría que mis columnas reflejaran los nombres del mes en esa temporada.


Hasta donde yo sé, no es posible hacerlo actualmente. Smiley feliz

Saludos

MarcelBeug

En respuesta a buscapersonas

Mi conocimiento es específicamente con Power Query.

De lo contrario, creo que debe aclarar su pregunta para los expertos de DAX / Report.

Por lo general, se utiliza una segmentación para seleccionar datos de las filas de la tabla, no de las columnas.

Así que me parece una petición extraña, pero si crees que algo debería ser posible, creo que será mejor que empieces un nuevo tema.

Deja un comentario

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