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
sohananahid
Post Partisan
Post Partisan

Dividir una sola columna con delimitador [colon]

Hola a todos: ¡Buen día! Obtengo esta columna, ubicaciones que tiene una lista de id de ubicación y nombre de ubicación delimitado por dos puntos [:]. Quiero dividir la columna en esas dos columnas, id de ubicación y nombre de ubicación por el delimitador, dos puntos [:]. Estoy tratando de seleccionar la columna, haga clic con el botón derecho y encontrar 'Dividir por delimitador'. No veas esa opción. Además, vea que Opción en el menú superior atenuado [no habilitado].

sohananahid_1-1602542718739.png

Sé que se activará una vez que obtenga los datos en la columna ''Ubicaciones' como se muestra a continuación, pero no puedo llegar a ese paso.

sohananahid_0-1602543741487.png

Probé ambas opciones al hacer clic en las 2 flechas como abajo: pero nada funciona!

sohananahid_1-1602543859156.png

¿Qué me estoy perdiendo aquí? Muchas gracias de antemano.

1 ACCEPTED SOLUTION

Hola @Ashish_Mathur, @Mariusz, @v-shex-msft : ¡Buenos días! Agradezco mucho su paciencia.

Traté de cambiar la última parte del código como se muestra a continuación:

------------------------------------------------

"Datos expandidos1" - Table.ExpandRecordColumn(-"Datos expandidos", "data", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "locations", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "updateDate", "

Dividir á List.Split("Datos expandidos1", "locations",2),

salida de #table (tabla de tipo[locationId- Int64.Type, LocationName-text], Split)

En

"Datos ampliados1"

--------------------------

Pero aún así mantiene la columna 'ubicaciones' con 'Lista'

sohananahid_0-1602619251340.png

Si hago lo siguiente:

"Datos expandidos1" - Table.ExpandRecordColumn(-"Datos expandidos", "data", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "locations", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "updateDate", "

Dividir á List.Split("locations",2),

salida de #table (tabla de tipo[locationId- Int64.Type, LocationName-text], Split)

En

"Datos ampliados1"

----------------------

Obtengo los mismos resultados: 'Lista' en la columna 'ubicaciones'.

Me faltan algunos pasos, cualquier ayuda es muy apreciada. Muchas gracias.

View solution in original post

7 REPLIES 7
Ashish_Mathur
Super User
Super User

Hola

¿Qué sucede cuando haces clic en "Expandir a nuevas filas"?


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Hola @Ashish_Mathur y todo: ¡Buenas noches!

Debería dar poco fondo:

Primero extraes datos de una base de datos sql como #1 maintenance_events origen de datos, luego creo este 2do origen de datos, #2 details_maintenance_events, que trae información de 'ubicaciones' que tiene location_id y location_name [: delimitado]. Debe haber una relación de 1 a 1 en el evento 'Id': para cada maintenance_event [en el origen de datos 1], debería obtener 1 fila de información detallada de la fuente de datos 2.

Estaba obteniendo esa información 1-to-1 antes cuando obtuve el valor de columna 'locations' como location_id: location_name, que seleccioné 'Dividir columna por delimitador' y 'ubicaciones' se dividiría en 2 columnas location_id y location_name. Después de que tuve que hacer algunos cambios de código M en mi código fuente de datos para admitir "Actualización programada" para publicar el panel, ahora obtengo "Lista" en la columna "ubicaciones".

Ahora, volvamos a su pregunta: Si selecciono "Expandir a nuevas filas" en "ubicaciones", obtengo "Grabar" en cada celda de esa columna "ubicaciones"

sohananahid_0-1602558096444.png

Luego, si vuelvo a expandir el 'Registro', puedo seleccionar Id & locationName

sohananahid_1-1602558096448.png

Sin embargo, crea de 1 a muchas relaciones desde el origen de datos 1 a la souce-2 de datos, [que muestra datos incorrectos en algún objeto visual como 'Mapa'.] como para Id-25527, crea 6 filas.

sohananahid_2-1602558096456.png

Donde siempre debe ser 1 a 1 como se indica a continuación:

sohananahid_3-1602558096462.png

¿Cómo puedo obtener esta relación 1 a 1 en lugar de la relación actual de 1 a varios? Muchas gracias de antemano.

Hola

Entonces "Después de que tuve que hacer algunos cambios de código M en mi código fuente de datos para admitir "Actualización programada" para publicar el panel, ahora obtengo 'Lista' en la columna 'locations'." - Este es el problema.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Hola @Ashish_Mathur : Buenos días.

El código para esta fuente de datos, #2 details_maintenance_events es como se muestra a continuación [cambiar algún valor con xyz/abc/...], del que obtengo la columna 'locations' como una lista:

---------------

Dejar
Origen: Sql.Database("xyz-Fundamentals", "NatGas_V3", [Query-"select * de NatGas_V3.natgas.pipeline_maintenance_events(lf)where endDate >-" &datefilter]),
"Filas ordenadas" - Table.Sort(Source,"endDate", Order.Ascending, "updateDate", Order.Descending)),
"Filas filtradas" - Table.SelectRows("Filas ordenadas", cada una verdadera),
id1 á "Filas filtradas"[id],
"Convertido a la tabla" - Table.FromList(id1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Añadido Personalizado" - Table.AddColumn(-"Convertido a la tabla", "Origen", cada Json.Document(Web.Contents("https://api.abc.com/",
[
Encabezados[-"Gen-Api-Key"-"........"],
RelativePath"natgas/events/v1/maintenance-events/details",
Consulta
[
ids-Text.From([Column1]),
formato "json"
]
]))),
"Errores eliminados" - Table.RemoveRowsWithErrors(-"Added Custom", ?"Column1"-),
"Errores eliminados1" - Table.RemoveRowsWithErrors(-"Errores eliminados", "Columna1" )
"Errores eliminados2" - Table.RemoveRowsWithErrors(-"Errores eliminados1", "Origen")
"Origen expandido" - Table.ExpandRecordColumn(-"Errores eliminados2", "Origen", "datos", "datos"),
"Datos expandidos" - Table.ExpandListColumn('Origen expandido", "datos")
En
"Datos ampliados"

---------------------

Primero extraes datos de una base de datos SQL como #1 maintenance_events origen de datos, luego creo este 2do origen de datos, details_maintenance_events. No he cambiado ningún código en #1 fuente de datos[ use data-> sql database->....], que es como se muestra a continuación:

----

Dejar
Origen: Sql.Database("xyz-Fundamentals", "NatGas_V3", [Query-"select * de NatGas_V3.natgas.pipeline_maintenance_events(lf)where endDate >-" &datefilter]),
"Filas ordenadas" - Table.Sort(Source,"endDate", Order.Ascending, "updateDate", Order.Descending)),
"Filas filtradas" - Table.SelectRows("Filas ordenadas", cada uno de los verdaderos)
En
"Filas filtradas"

--------

¿Cómo cambio el código para obtener la columna 'locations' como : delimitado como location_id:location_name? Muchas gracias de antemano.

Hola @Ashish_Mathur, @v-shex-msft y todo: ¡Buen día! Continuación de mi post anterior:

Ahora, mientras intento cambiar la última parte del código para obtener el LocationId y locationName de 'locations' List usando Split Column by Delimiter:

sohananahid_0-1602602262589.png

"Datos expandidos1" - Table.ExpandRecordColumn(-"Datos expandidos", "data", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "locations", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "updateDate", "

"Dividir columna por delimitador" ? Table.SplitColumn(''Datos expandidos1', 'locations', Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), ''locations.1', 'locations.2''),

"Tipo de cambio" - Table.TransformColumnTypes('Dividir columna por delimitador",'ubicaciones.1', Int64.Type', ''locations.2',', escriba text'),

"Columnas renombradas" - Table.RenameColumns(-"Changed Type","locations.1", "locations. LocationId" , "locations.2", "locations. NombreDe_ubicación")

En

"Columnas renombradas"

-------------------------------------------

Recibo errores:

sohananahid_1-1602602320505.png

En 'Dividir columna por delimitador', estoy usando "Splitter.SplitTextByDelimiter" - ¿Qué uso para obtener de list? Muchas gracias de antemano.

Hola @Ashish_Mathur, @Mariusz, @v-shex-msft : ¡Buenos días! Agradezco mucho su paciencia.

Traté de cambiar la última parte del código como se muestra a continuación:

------------------------------------------------

"Datos expandidos1" - Table.ExpandRecordColumn(-"Datos expandidos", "data", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "locations", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "updateDate", "

Dividir á List.Split("Datos expandidos1", "locations",2),

salida de #table (tabla de tipo[locationId- Int64.Type, LocationName-text], Split)

En

"Datos ampliados1"

--------------------------

Pero aún así mantiene la columna 'ubicaciones' con 'Lista'

sohananahid_0-1602619251340.png

Si hago lo siguiente:

"Datos expandidos1" - Table.ExpandRecordColumn(-"Datos expandidos", "data", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "locations", "pipelineName", "subject", "startDate", "endDate", "quantityEstimateMMBtu", "impactDescription", "details", "updateDate", "updateDate", "

Dividir á List.Split("locations",2),

salida de #table (tabla de tipo[locationId- Int64.Type, LocationName-text], Split)

En

"Datos ampliados1"

----------------------

Obtengo los mismos resultados: 'Lista' en la columna 'ubicaciones'.

Me faltan algunos pasos, cualquier ayuda es muy apreciada. Muchas gracias.

Hola a todos: ¡Buen día! Encontré la comprobación de los datos en la tabla de base de datos y el portal de Api que para algunas tuberías habrá el mismo evento publicado para diferentes ubicaciones [ya que se ven afectados para todas esas ubicaciones para una canalización]. Es por eso que las múltiples filas de ubicación están llegando para esas tuberías! Por lo tanto, en realidad no es un error / problema, pero un hecho! Así que estoy cerrando este hilo. Gracias a todos por su paciencia. 🙂

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.