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
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
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