Power BI: Selección múltiple en parámetros M dinámicos

Aun cuando la documentación para parámetros M dinámicos menciona cómo podemos usar selección múltiple en el código M en Power BI para nuestros queries de Power Query. Esto nos ayudaría practicarlo con un ejemplo detallado donde veamos cómo hacerlo y explicar qué es lo que ocurre cuando hacemos selección múltiple.

Parámetros DirectQuery

Una vez más vamos a usar Azure Data Explorer como nuestra fuente de datos DirectQuerty para este ejemplo. Consideremos el siguiente query KQL, el cual nos regresa una lista de municipios y el precio promedio pagado por inmobiliario en cada uno:

pricepaid
| where county in ('DEVON', 'CORNWALL', 'KENT')
| summarize avg(price) by county
Power BI múltiple parámetros M 1

La tercera línea del query usa una combinación de los operadores where e in para filtrar la lista de municipios, similar a otros lenguajes query. El reto es escribir una expresión M que genere la lista delimitada por comas de nombres de municipios en paréntesis al final de esta línea. Tomar el query de arriba y generar una tabla no dinámica DirectQuery en PowerBI es bastante directo, ahora asumamos que ya hemos creado un parámetro M llamado «Selected County»:

Power BI múltiple parámetros M 2

Así como una tabla con los nombres de los municipios:

Enlazamos la columna de Municipio de esta tabla al parámetro M «SelectedCounty» y activamos la opción Selección múltiple en Vista Modelo en la ventana principal:

Query M dinámico

Ahora viene algo que podría resultarnos confuso, y es que el parámetro M «SelectedCounty» que cree fue de tipo Text, pero el código de ejemplo en la documentación fue escrito por un parámetro M de tipo lista (siendo que no es posible crear un parámetro M de tipo lista en Power Query Editor). Resulta que cuando la opción de selección múltiple es activada, Power BI es capaz de enviar un valor de tipo lista al parámetro sin importar qué tipo tengamos definido para el mismo.

Teniendo esto en cuenta, aquí tenemos un ejemplo de un query M para generar el query usando el parámetro:

let
  CountyList =
    if
    //check to see if the parameter is a list
      Type.Is(
        Value.Type(SelectedCounty),
        List.Type
      ) then
        //if it is a list
        let
          //add single quotes around each value in the list
          AddSingleQuotes = List.Transform(
              SelectedCounty,
              each "'" & _ & "'"
            ),
          //then turn it into a comma-delimited list
          DelimitedList = Text.Combine(
              AddSingleQuotes,
              ","
            )
        in
          DelimitedList
    else
      //if the parameter isn't a list
      //just add single quotes around the parameter value
      "'" & SelectedCounty & "'",
  //generate and run the KQL query
  Source = AzureDataExplorer.Contents(
      "https://mycluster.northeurope.kusto.windows.net",
      "pricepaid",
      "pricepaid#(lf)
       | where county in
       ("
        & CountyList &
       ")#(lf)
       | summarize avg(price) by county",
      [
        MaxRows                 = null,
        MaxSize                 = null,
        NoTruncate              = null,
        AdditionalSetStatements = null
      ]
    )
in
  Source

Nótese que el paso CountyList tiene que revisar el tipo de datos del parámetro usando un statement if, por lo que en el Query Editor siempre será de tipo Text mientras que en el reporte será una lista si la selección múltiple está activada y Text si no.

Aquí tenemos el reporte final mostrando un separador de selección múltiple pasando valores dentro de este query:

Power BI múltiple parámetros M 3

Con esto terminamos la revision de la selección múltiple parámetros M en Power BI. Cualquier duda nos leemos abajo.

FUENTE:
https://blog.crossjoin.co.uk/2020/11/08/handling-multi-select-in-power-bi-dynamic-m-parameters/

Power BI: Selección múltiple en parámetros M dinámicos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Scroll hacia arriba