A la hora de embeber un informe de Power BI o simplemente al llamarlo desde otra aplicación surge la duda ¿cómo filtrar un informe mediante URL en Power BI? ¿cómo se lo envío a mi compañero prefiltrado? ¿cómo muestro una única página de un informe ? ¿Quieres aprender a filtrar un informe mediante URL en Power BI? Sigue leyendo…
Especificaciones del entorno
- Windows 11
- Servicio de Power BI
URL Base
Para empezar, debes saber que cuando ejecutas un informe desde el servicio de Power BI cada página tiene su propia URL que se compone de varios identificadores como son el área de trabajo, el id del informe y el id de la página.
https://app.powerbi.com/groups/groupObjectId/reports/reportObjectId/ReportSection
Lenguaje del código: JavaScript (javascript)
- https://app.powerbi.com/: URL del servicio de Power BI, común para todos los usuarios.
- groups: palabra fija.
- groupObjectId: guid de 36 caracteres que identifica el área de trabajo.
- reports: palabra fija.
- reportObjectId: identificador (guid) del informe de 36 caracteres.
- ReportSectionX: identificador de la página
Aquí puedes ver un ejemplo real:
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf
Lenguaje del código: JavaScript (javascript)
- https://app.powerbi.com/: URL del servicio de Power BI, común para todos los usuarios.
- groups: palabra fija.
- groupObjectId: 1b05dc84-e477-4d6c-8410-38a2b2b5cbdd
- reports: palabra fija.
- reportObjectId: 0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300
- ReportSection: ReportSectionabae8263044cf740aabf
Aclarar que el último parámetro (ReportSection) si se escribe sin ningún identificador abrirá la primera página.
URL Base de un informe embebido
La URL base de un informe embebido difiere un poco. Tiene la siguiente estructura:
https://app.powerbi.com/reportEmbed?reportId=XX&autoAuth=[true,false]&ctid=XX
Lenguaje del código: JavaScript (javascript)
- https://app.powerbi.com/: URL del servicio de Power BI, común para todos los usuarios.
- reportEmbed?: palabra fija. Indica que es una URL embebida.
- reportId=:utilizado para especificar el id del informe.
- autoAuth=: auto identificación. Sus posibles valores son true o false.
- ctid: identificador de organización del elemento. Es un guid de 36 caracteres. (opcional)
Si vemos un ejemplo real…
https://app.powerbi.com/reportEmbed?reportId=0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300&autoAuth=true&ctid=6cd48cd7-fe21-4571-9528-5f6d734932a6
Lenguaje del código: JavaScript (javascript)
- https://app.powerbi.com/: URL del servicio de Power BI, común para todos los usuarios.
- reportEmbed?: palabra fija. Indica que es una URL embebida.
- reportId: 0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300
- autoAuth=: true
- ctid: 6cd48cd7-fe21-4571-9528-5f6d734932a6
Tipos de campos
Ha de saber que no es lo mismo filtrar un campo de fecha, número o una cadena, además el tipo debe coincidir exactamente con el tipo de dato definido en el modelo semántico.
- Las cadenas deben ir entre comillas simples, como por ejemplo la siguiente cadena: ‘Web’
- Las fechas y horas pueden llegar a ser complicadas… aunque visualmente muestres la fecha por ejemplo en formato dd/mm/yyyy siempre le tendrás que enviar la fecha en formato yyyy-mm-dd.
- Los números no requieren ningún formato especial, pero dependerá del tipo en concreto:
Tipo | Ejemplo |
---|---|
integer | 5 |
long | 5 L o 5 l |
double | 5.5 or 55e-1 o 0.55e+1 o 5D o 5d o 0.5e1D o 0.5e1d o 5.5D o 5.5d o 55e-1D o 55e-1d |
decimal | 5 M o 5 m o 5.5 M or 5.5 m |
float | 5 F o 5 f o 0.5e1 F o 0.5e-1 d |
Operadores
Los operadores en una URL van a indicar si el filtro contendrá un valor o varios o si debe ser mayor o igual que, etc. Están disponibles los siguientes operadores en Power BI:
Operador | Definición | Cadena | Número | Fecha |
---|---|---|---|---|
and | y | sí | sí | sí |
eq | igual | sí | sí | sí |
ne | no igual | sí | sí | sí |
ge | mayor o igual que | no | sí | sí |
gt | mayor que | no | sí | sí |
le | menor o igual que | no | sí | sí |
lt | menor que | no | sí | sí |
in | incluye | sí | sí | sí |
Caracteres especiales
Es posible que tu navegador no sepa interpretar ciertos caracteres especiales tanto en el nombre de la tabla/columna como en el resto de caracteres de la URL.
Caracteres especiales en tablas o campos
Como hemos visto anteriormente para filtrar en una URL necesitamos incluir el nombre de la tabla y el nombre del campo. Si tienes nombre comunes como mes, ciudad, cliente no tendrás problemas, pero si el nombre de tu tabla o campo contiene arrobas, espacios o algún otro como la siguiente tabla, deberás codificarlos:
Nombre Tabla/Campo | Unicode | Código para Power BI |
---|---|---|
Fecha del pedido | Los espacios son: 00×20 | Fecha00x20del00x20pedido |
Fecha@pedido | Las @ son:is 00×40 | Fecha00x40pedido |
[Genero] | [ es 0x005B y ] es 0x005D | x005B_Genero_x005D |
Nombre+Apellido | + es 0x2B | Nombre_x002B_Apellido |
Otros caracteres especiales
En general, en los valores por los que quieres filtrar y en el resto de la URL debes sustituir los siguientes valores por los códigos de escape (aunque el navegador muchas veces sabe interpretarlo y los modifica automáticamente):
Caracter | Código de escape |
---|---|
espacio | %20 |
‘ | %27 |
% | %25 |
+ | %2B |
/ | %2F |
? | %3F |
# | %23 |
& | %26 |
Existe una lista muy amplia de caracteres de escape que puedes leer aquí.
Ejemplos
Si vas a filtrar una URL base no embebida hay que añadir al final de la URL ?filter o &filter y en el caso de que sea un informe embebido &filter. ¿Cuál es la diferencia? Por no entrar en detalles muy técnicos, fijate si tu URL contiene ya un símbolo de interrogación, si lo tiene escribe al final &filter, sino lo tiene escribe ?filter.
Filtrar un solo campo
En el caso que quieras filtrar por un solo campo incluye la siguiente sintaxis al final de tu URL:
&filter=NombreTabla/NombreCampo eq valorNumerico o
&filter=NombreTabla/NombreCampo eq 'valorCadena' o
&filter=NombreTabla/NombreCampo eq fecha
Lenguaje del código: JavaScript (javascript)
En el siguiente ejemplo filtrar una URL base por el campo mes de la tabla calendario y le indicamos que sea igual a 1.
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf?experience=power-bi&filter=Calendario/Mes eq 1
Lenguaje del código: JavaScript (javascript)
Es posible que te funcione, pero la forma correcta que funcionara a todos es como os escribo a continuación. Fijate que he sustituido el caracter / por %2F y los espacios por %20:
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf?experience=power-bi&filter=Calendario%2FMes%20eq%201
Lenguaje del código: JavaScript (javascript)
Filtrar dos campos
Es tan sencillo como incluir la palabra and y seguir la misma filosofía. En este otro ejemplo filtramos por el mes 1 de la tabla calendario y que sea menor del dia 15 de esa misma tabla:
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf?experience=power-bi&filter=Calendario%2FMes%20eq%201%20and%20Calendario%2FDia%20lt%2015
Lenguaje del código: JavaScript (javascript)
Filtrar por una fecha
Ahora ya sabes filtrar por un campo o por varios y pueden ser de tipo cadena, número o fecha. En el siguiente ejemplo filtraremos por el campo de fecha de la tabla calendario para que la fecha esté comprendida entre el 02/01/2012 y el 05/01/2012:
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf?experience=power-bi&filter=Calendario%2FFecha%20ge%202012-01-02%20and%20Calendario%2FFecha%20le%202012-01-05
Lenguaje del código: JavaScript (javascript)
Filtrar por un campo cuya tabla tiene un espacio
El siguiente ejemplo tiene como peculiaridad que el nombre de la tabla contiene espacios y al tratarse de un espacio dentro del propio nombre de la tabla o campo tiene una codificación especial (_x0020_). El nombre de la tabla es Territorio de Ventas (recuerda que el nombre es sensible a mayúsculas y minúsculas) y el campo se llama Nombre. Además recuerda que al ser una cadena debe ir entrecomillada (%27).
https://app.powerbi.com/groups/1b05dc84-e477-4d6c-8410-38a2b2b5cbdd/reports/0d8dcb5f-2571-4bdc-9f02-0cc5bb75c300/ReportSectionabae8263044cf740aabf?experience=power-bi&filter=<em>Territorio</em>_x0020_<em>de</em>_x0020_<em>Ventas</em>%2FNombre%20eq%20%27France%27
Lenguaje del código: HTML, XML (xml)
Consideraciones
- Cuando se utiliza el operador in, los valores a la derecha de in deben ser una lista separada por comas y encerrada entre paréntesis.
- Power BI Report Server también permite especificar más de un filtro utilizando el parámetro URL «filter». Este es un ejemplo del aspecto que podría tener la URL en Power BI Report Server: https://reportserver/reports/powerbi/Tienda?rs:Embed=true&filter= Cliente/Nombre eq ‘Miguel’ and Tienda/Ciudad eq ‘Madrid’
- Los filtros URL de informes tienen un límite de 10 expresiones (10 filtros conectados por AND).
- El tipo de datos long es (2^53-1) debido a las limitaciones de JavaScript.
- Las cadenas de consulta URL están limitadas a 2000 caracteres. Este límite incluye códigos de escape para caracteres especiales (por ejemplo, un espacio, %, +).
- No se puede filtrar por nombres de tabla o columna que empiecen por las letras mayúsculas INF, incluyendo, por ejemplo, un nombre de tabla que empiece por «INFORMACIÓN». INF en mayúsculas es un valor especial en OData.