Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
2 years ago

Modelado de datos

Hola a todos

Tengo algunas preguntas sobre mi modelo de datos.

Recupero los datos con este diseño:

1) ¿Puede confirmar que es necesario fusionar en Power Query las columnas Equipment_Type y Equipment_Name para tener una tabla con solo 3 columnas?

2) ¿Es necesario crear tablas de dos dimensiones (Tipo de equipo y Nombre del equipo)? o solo uno (Nombre del equipo con una columna de tipo de equipo en su interior)?

Archivo PBI :

https://drive.google.com/file/d/1k9hM21LY21gk_umZPBAetl2gL_q5UiCq/view?usp=sharing

Gracias por su ayuda

3 Replies

  • 1) ¿Quieres decir que estás buscando una técnica para dividir la tabla en 3 columnas? Busque en el foro columnas de Unpivot. Puede cortar los números usando splitcolumnbydelimiter y luego pivotar para obtener 3 o 4 columnas. Habrá muchos ejemplos (en el foro de Power Query)

    Si desea hacerlo anexando tablas en su lugar: cree 3 versiones de la tabla, haga que cada versión tenga 3 columnas eliminando 2 columnas no deseadas, edite los nombres de las columnas para que sean iguales y, a continuación, agregue 3 tablas

    2) Parece que una tabla de dimensiones (es decir, un tipo de equipo = un nombre de equipo) debería ser buena.

  • Hola

    Reproduzco su caso de uso

    1) Confirmo, necesita limpiar la tabla y tener solo 3 columnas. Agregué el código M para lograr esto aquí abajo.

    2) No es necesario tener 2 tablas dimensionales.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCgjydwl1DlFwVNJRcg0M9QwwBDL8HH1dQTQCxeoglDrBhcEajKAajLAodUYxBKrBGKrBGEWpC/EOcCXggFgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Item = _t, Equipment_Type1 = _t, Equipment_Name1 = _t, Equipment_Type2 = _t, Equipment_Name2 = _t, Equipment_Type3 = _t, Equipment_Name3 = _t]),
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Item"}, "Attribute", "Value"),
        #"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Value] <> "")),
        #"Split Column by Character Transition" = Table.SplitColumn(#"Filtered Rows", "Attribute", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Type", "Index"}),
    
        #"Removed Numeric" = Table.TransformColumns(#"Split Column by Character Transition", {"Type", each Text.Select(_, {"A".."Z","a".."z"}), type text}),
        #"Pivoted Column" = Table.Pivot(#"Removed Numeric", List.Distinct(#"Removed Numeric"[Type]), "Type", "Value"),
    
        #"Renamed Columns" = Table.RenameColumns(#"Pivoted Column", {{"EquipmentType", "Equipment Type"}, {"EquipmentName", "Equipment Name"}}),
        #"Removed Columns" = Table.RemoveColumns(#"Renamed Columns",{"Index"})
    in
        #"Removed Columns"

    Si está respondiendo a su consulta, marque mi respuesta como la solución. ¡Gracias!