Producir una tabla sobre la marcha a partir de datos CSV almacenados en un campo de otra tabla

Un usuario Pregunto ✅

jh_dempsey

Hola a todos

Tengo una tabla de todos los canales de agua de hormigón que se van a construir en nuestro proyecto.

Una de las columnas de la tabla se llama «Invertir niveles» y contiene una lista de valores, todos separados por una coma (es decir, un archivo CSV)

Cada valor en realidad se compone de dos valores. El primer valor es una distancia y el segundo valor es el nivel de inversión a esa distancia.

Los dos valores están separados por dos puntos (es decir, distancia: nivel de inversión). A continuación se muestra un ejemplo de una de estas cadenas.

0:-0.0925,1:-0.0728151602407321,2:-0.0531303204814642,3:-0.0334454807221963,4:-0.0137606409629284,5:0.00592419879633947,6:0.0.0.0.0

Lo que quiero es que un usuario pueda seleccionar uno de los registros de la tabla. Luego, Power BI produce una tabla sobre la marcha leyendo los valores almacenados dentro de esta cadena CSV. Usando la cadena de ejemplo anterior, quiero una producción de tablas que se vea así:

Nivel de inversión de distancia

0 -0.0925,

1 -0.0728151602407321,

2 -0.0531303204814642,

3 -0.0334454807221963,

4 -0.0137606409629284,

5 0.00592419879633947,

6 0.0256090385556074

¿Es esto posible dentro de Power BI? ¿Alguien puede darme algunos consejos en la dirección correcta? Siendo bastante nuevo en Power BI, ¡no sé por dónde empezar con esto!

@jh_dempsey,

Puede seleccionar Dividir columna por delimitador en el Editor de consultas.

jh_dempsey

En respuesta a v-chuncz-msft

Gracias v-chuncz-msft, aunque no estoy seguro si es la solución ideal para lo que necesito.

Eventualmente, lo que quiero es que un usuario vea una tabla de todos los canales de agua superficial en el esquema. Luego quiero que puedan hacer clic en un registro (o seleccionar de un menú desplegable, o cualquier forma de seleccionar un solo registro) y luego ir a una página que lee la cadena csv de esa fila y produce una tabla sobre la marcha que enumera las distancias y los niveles de inversión.

Tengo la sensación de que necesito hacer esto a través de Power Query/M Query

Comencé con el código como se puede ver a continuación. Toma la tabla que contiene todos los canales de agua superficial (500DGCH) y obtiene el valor csv del registro elegido, que en este momento está especificado por la variable RowNum.

Luego, el resto del código procesa ese CSV y toma el primer valor, divide ese valor en los valores de distancia e inversión de nivel (dividiendo en el símbolo:) y lo coloca en una tabla que he creado al comienzo del código.

Por el momento, esto solo funciona para el primer valor en el CSV porque lo he codificado de forma rígida para tomar list1{0}

Ahora necesito alguna forma de recorrer todos los elementos de la lista y agregar la fila a la tabla. De varias lecturas, parece que List.Accumulate es el camino a seguir, pero me cuesta entenderlo y hacerlo funcionar. ¿Alguien capaz de ayudar?

let

    SettingOut = #table(
    {"Chainage","Invert Level"},
    {
        
    }
    ),

    RowNum = 1,
    Source = #"500DGCH",
    csv = Source[what3words]{RowNum},
    
    /* Example csv value:
    0:-0.0925,1:-0.0728151602407321,2:-0.0531303204814642,3:-0.0334454807221963,4:-0.0137606409629284,5:0.00592419879633947
    */

    list1 = Text.Split(csv,","),

    /* list1 contains hundreds of values. The below code inserts the first item in this list into the table. I now need
    something which will repeat this for all the items in the list */

    values = Text.Split(list1{0},":"),

    SettingOutAdd = Table.InsertRows(SettingOut,0,{[#"Chainage" = values{0}, #"Invert Level" = values{1}]})

in
    SettingOutAdd

Deja un comentario

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