Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago

Columna personalizada de Power Query

Estoy intentando agregar una columna personalizada en Power BI Power Query Editor, pero tengo algunas dificultades.
La siguiente tabla es un ejemplo de 2 columnas que tengo y 1 columna que requiero.

Necesito un Sí para estar en la columna Y/N siempre que un ID NO tenga asignado un DOI. ID puede tener duplicados, por lo que cuando cualquiera de los mismos ID tiene un DOI, entonces será NO, de lo contrario Sí.

Data Example.png

Gracias

4 Replies

  • @KelvC ,

    De acuerdo con su descripción, aquí está mi solución. Copie y pegue el código en una consulta en blanco para ver los pasos aplicados.

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQyVNJRSlSK1YGxdbGwjYhgGxPBNkGyCxfbFEm9KZo4LjZMvRkOtjkRbAsktiWS+ZZo4kB2LAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, DOI = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"DOI", type text}}),
        #"Replaced Value" = Table.ReplaceValue(#"Changed Type","-","",Replacer.ReplaceText,{"DOI"}),
        #"Merged Queries" = Table.NestedJoin(#"Replaced Value", {"ID"}, Table.Group(#"Replaced Value", {"ID"}, {{"Max", each List.Max([DOI]), type nullable text}}), {"ID"}, "Max", JoinKind.LeftOuter),
        #"Expanded Max" = Table.ExpandTableColumn(#"Merged Queries", "Max", {"Max"}, {"Max"}),
        #"Added Custom" = Table.AddColumn(#"Expanded Max", "Custom", each if[#"Max"]=""then"Yes"else"No"),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Max"})
    in
        #"Removed Columns"

    Obtén el resultado.

    Adjunto mi muestra a continuación como referencia.

    Saludos
    Equipo de apoyo a la comunidad _ kalyj

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola, gracias por tu respuesta. Funciona para el ejemplo que proporcioné, pero cuando intento usar el código en los datos reales con los que quiero ejecutar la consulta, vuelve a pasar por los datos de ejemplo.

      ¿Cómo conseguiría que esta consulta funcionara con otros datos similares con los mismos encabezados?

      Gracias

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @KelvC ,

        Siga los pasos detallados:

        1.Seleccione la columna DOI, haga clic con el botón derecho y seleccione Reemplazar valor, reemplace - con "".

        2.Haga clic con el botón derecho en la tabla y seleccione Duplicar.

        3.In la nueva tabla, seleccione la columna ID y, a continuación, haga clic en Agrupar por.

        Configúralo como se muestra a continuación.

        Obtenga el valor máximo para cada ID. Si todas las filas DOI están en blanco del mismo ID, su valor máximo también está en blanco.

        4.Seleccione la tabla original y, a continuación, haga clic en Combinar consultas.

        Configúrelo así:

        5.Ahora, en el código del paso Consultas combinadas de la tabla, reemplace el #"Tabla(2)" por el código del último paso de la tabla(2)

        Obtenga esto, luego puede eliminar la Tabla(2).

        6.Expanda la nueva columna con el campo Max.

        7.Agregue una columna personalizada.

        if[#"Table (2).Max"]=""then"Yes"else"No"

        A continuación, elimine la columna innecesaria, obtenga el resultado esperado.

        Saludos
        Equipo de apoyo a la comunidad _ kalyj

        Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.