Forum Discussion

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

Consulta DAX

Hola, soy un poco nuevo en Power Query y me encantaría recibir ayuda para lograr los requisitos para un determinado panel.

Tengo una tabla de solicitudes donde tengo los atributos:
| RequestId | continente País | Ciudad
1 Europa España Madrid
2 Europa España Madrid
3 Europa Francia París

4 Europa Francia París
5 Europa España Valencia

6 América USA Madrid

Me gustaría tener un gráfico de anillo con solo los 2 'lugares' principales que han hecho solicitudes, donde 'lugares' son la concatenanción de Continent | País | Ciudad. Para este pequeño ejemplo, el gráfico de anillo tendría 2 (recuento de) solicitudes para Europa | España | Madrid, y 2 (cuenta de) solicitudes para Europa | Francia | París. DirectQuery realiza el modo de importación de datos.

Gracias.

3 Replies

  • ¿ @JpSantos_

    Supongo que quieres esto en DAX ya que ese es el nombre del tema? Menciona Power Query, que es diferente a DAX.

    Descargue este archivo PBIX con solución.

    Para hacer lo que quieras, crea una columna en la tabla de datos que concatene el continente, el país y la ciudad

    Place = [Continent] & " | " & [Country] & " | " & [City]

    A continuación, cree una nueva tabla con TOPN que enumere solo los 2 primeros

    Top2 = 
    
    TOPN(
        2,
        SUMMARIZE(
            'TableRaw',
            'TableRaw'[Place], 
            "Requests",
            COUNT('TableRaw'[Request ID])
        ), 
        [Requests]
    )

    A continuación, cree su objeto visual a partir de la nueva tabla

    ring.png

    Saludos

    Phil

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola @PhilipTreacy

      ¡Gracias por el repply!
      Sí, querría la solución en DAX. El problema es que el modo de importación está en DirectQuery (de hecho es una tabla híbrida) y no me permite crear columnas calculadas de esa manera. Así que no estoy seguro de cómo puedo lograr concatenar el "Lugar" sin columnas calculadas. ¿Alguna idea?

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Aquí hay una manera:
        (Mi tabla se llama 'Ubicaciones')
        Utilizando estas medidas:

        Count Locations =
        CALCULATE (
            COUNTROWS ( Locations ),
            ALLEXCEPT (
                Locations,
                Locations[Continent],
                Locations[Country],
                Locations[City]
            )
        )
        
        RANK Locations =
        RANKX ( ALL ( Locations ), [Count Locations],, DESC, SKIP )
        
        Measure for chart = 
        IF([RANK Locations] <=2, [Count Locations])

        Top2Loc.jpg

        visual.jpg

        o si prefieres tenerlo solo en una medida:

        Top 2 =
        IF (
            RANKX (
                ALL ( Locations ),
                CALCULATE (
                    COUNTROWS ( Locations ),
                    ALLEXCEPT (
                        Locations,
                        Locations[Continent],
                        Locations[Country],
                        Locations[City]
                    )
                ),
                ,
                DESC,
                SKIP
            ) <= 2,
            CALCULATE (
                COUNTROWS ( Locations ),
                ALLEXCEPT (
                    Locations,
                    Locations[Continent],
                    Locations[Country],
                    Locations[City]
                )
            )
        )