JeremyB
Así que aquí está el escenario, tengo 12 enumeraciones llegando a mi tabla. Los valores de texto de enumeración están en CamelCase y quiero dividirlos a la izquierda de cada letra mayúscula (excepto la primera letra, ya que es el comienzo del valor de texto de enumeración).
Ejemplo:
EnumOne -> Enum One
EnumTwo -> Enum Two
Etc.
¿Alguien puede darme algunas pautas sobre cómo debo hacer esto? Me gustaría hacerlo dentro de PowerBI dekstop a través de DAX o Power Query.
¡Gracias!
MarcelBeug
Es un poco confuso si desea dividir el texto (en una lista o en varias columnas) o insertar un espacio.
Supongo que desea insertar un espacio.
Esta es una solución de Power Query:
let Source = #table(type table[Enum = text],{{"EnumOne"},{"EnumTwo"}}), Splitted = Table.TransformColumns(Source,{{"Enum", each Text.Insert(_, Text.PositionOfAny(_,{"A".."Z"},Occurrence.Last)," "), type text}}) in Splitted
Editar: así es como se divide la columna en 2 columnas:
let Source = #table(type table[Enum = text],{{"EnumOne"},{"EnumTwo"}}), #"Split Column by Position" = Table.SplitColumn(Source, "Enum", each Splitter.SplitTextByPositions({0, Text.PositionOfAny(_,{"A".."Z"},Occurrence.Last)})(_), {"Enum.1", "Enum.2"}), #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Position",{{"Enum.1", type text}, {"Enum.2", type text}}) in #"Changed Type"
Puede encontrar información sobre las funciones de Power Query en mi panel.
JeremyB
En respuesta a MarcelBeug
Sí, quiero poder dividir el texto con un espacio a la izquierda de cada letra mayúscula en una nueva columna calculada. Sin embargo, no necesariamente necesito mantener la columna original, solo necesito que el texto esté dividido.
Los probaré y veré si puedo hacer que funcionen. ¡Agradezco la ayuda!
EDITAR:
@MarcelBeug
¿Es posible hacerlo para cada letra mayúscula en lugar de para la última?
Ex.
EnumNumberOne -> Enum Number One
Intenté cambiar ‘Occurrence.Last’ a ‘Occurrence.All’, pero me dio un error.
MarcelBeug
En respuesta a JeremyB
Sí puede.
En tales casos, el mayor desafío es diseñar la consulta de manera que sea dinámica con respecto al número de columnas resultantes.
Esto requiere algo de programación del Editor avanzado, lo que da como resultado:
let Source = #table(type table[Enum = text],{{"EnumNumberOne"},{"EnumTwo"}}), Splitted = Table.TransformColumns(Source, {{"Enum", each Splitter.SplitTextByPositions(Text.PositionOfAny(_,{"A".."Z"},Occurrence.All))(_)}}), Tabled = Table.TransformColumns(Splitted,{{"Enum", each Table.FromColumns(List.Zip({_}))}}), ColumnNames = Table.ColumnNames(Table.Combine(Tabled[Enum])), NewColumnNames = List.Transform(ColumnNames, each "Enum."&Text.Middle(_,6)), ExpandedEnum = Table.ExpandTableColumn(Tabled, "Enum", ColumnNames, NewColumnNames), TransformList = List.Transform(NewColumnNames, each {_,type text}), Typed = Table.TransformColumnTypes(ExpandedEnum, TransformList) in Typed
Resultado:
JeremyB
En respuesta a MarcelBeug
@MarcelBeug ¡Mis disculpas por la demora en la respuesta y gracias por la ayuda! Pude hacer que esto funcionara, aunque no es compatible con el modo de consulta directa. ¿Alguna sugerencia al respecto? Tengo otra forma de hacer esto fuera de PowerBI, por lo que no es el fin del mundo si no lo hay.
MarcelBeug
En respuesta a JeremyB
Hola, lo siento, no tengo experiencia real con el modo de consulta directa.
No creo que esto se pueda reescribir para que funcione en el modo de consulta directa.
Quizás alguien más pueda ayudarte con esto.