Filtrare un report usando i parametri della stringa di query nell'URL

Quando si apre un report nel servizio Power BI, ogni pagina del report ha un proprio URL univoco. Per filtrare tale pagina del report, è possibile usare il riquadro Filtri nell'area di disegno report. In alternativa, è possibile aggiungere i parametri della stringa di query all'URL per prefiltrare il report. Se, ad esempio, si vuole mostrare un report ai colleghi applicando un filtro preliminare. basta iniziare dall'URL predefinito del report, aggiungere i parametri di filtro all'URL e quindi inviare l'intero nuovo URL tramite posta elettronica.

Questo articolo usa il report Retail Analysis Sample. Per seguire la procedura è possibile scaricare il report di esempio.

Screenshot del report di Power BI nel servizio.

Usi dei parametri della stringa di query

Si supponga di usare Power BI Desktop. Si vuole creare un report che include collegamenti ad altri report di Power BI, ma è necessario visualizzare solo alcune delle informazioni negli altri report. In primo luogo, filtrare i report usando i parametri della stringa di query e salvare gli URL. Successivamente, creare una tabella in Power BI Desktop con questi nuovi URL di report. Quindi, pubblicare e condividere il report.

I parametri della stringa di query possono essere anche utili per la creazione di una soluzione avanzata di Power BI. In DAX è possibile creare un report che genera un URL del report filtrato in modo dinamico in base alla selezione effettuata dal cliente nel report corrente. Quando i clienti selezionano l'URL, vedono solo le informazioni desiderate.

Sintassi dei parametri della stringa di query per i filtri

Con i parametri, è possibile filtrare il report per uno o più valori, anche se tali valori contengono spazi o caratteri speciali. La sintassi di base è abbastanza semplice: si parte dall'URL del report e si aggiunge la sintassi del filtro in una stringa di query. Una stringa di query in un URL inizia con un punto interrogativo (?), ad esempio:

URL?filter=Tabella/Campo eq 'valore'

Screenshot dell'URL con il filtro.

  • Per i nomi Tabella e Campo viene fatta distinzione tra maiuscole e minuscole, mentre per valore la distinzione non è rilevante.
  • I campi che sono nascosti dalla visualizzazione Report possono comunque essere filtrati.

Se il parametro del filtro non è il primo parametro della stringa di query, viene unito al parametro precedente con una e commerciale (&), ad esempio:

URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&pageName=ReportSection&filter=Tabella/Campo eq 'valore'

Tipi di campo

Il tipo del campo può essere numerico, datetime o stringa e il tipo usato deve corrispondere al tipo impostato nel modello semantico. Ad esempio, la specifica del tipo "string" per una colonna di tabella non funziona se si sta cercando un valore datetime o numerico in un set di colonne del modello semantico impostato come data, ad esempio, Table/StringColumn eq 1.

  • Le stringhe devono essere racchiuse tra virgolette singole, ad esempio 'nome manager'.
  • Per i numeri non è richiesta alcuna formattazione speciale. Per informazioni dettagliate, vedere Tipi di dati numerici in questo articolo.
  • Per le date e ore vedere Tipi di dati di data in questo articolo.

Se è ancora poco chiaro, continuare la lettura per un'analisi approfondita.

Filtrare in base a un campo

Si supponga che l'URL per il report sia il seguente.

Screenshot dell'URL iniziale.

Nella visualizzazione della precedente mappa sono visibili i negozi presenti nella Carolina del Nord. NC è il valore per la Carolina del Nord nel campo Territory (Territorio) della tabella Store (Negozio). Per filtrare il report in modo da visualizzare solo i dati per i negozi in "NC" viene aggiunta all'URL la stringa seguente:

?filter=Store/Territory eq 'NC'

Screenshot dell'URL con il filtro per la Carolina del Nord.

Il report ora è filtrato per la Carolina del Nord; tutte le visualizzazioni nel report visualizzano solo i dati relativi alla Carolina del Nord.

Screenshot del report filtrato per la Carolina del Nord.

Filtrare in base a più di un valore in un campo

Per applicare un filtro in base a più di un valore in un singolo campo, usare l'operatore in anziché l'operatore and. La sintassi è:

URL?filter=Tabella/Campo in ('valore1', 'valore2')

Usando lo stesso esempio, per filtrare il report in modo da visualizzare solo i dati relativi ai negozi in "NC" (Carolina del Nord) o "TN" (Tennessee), aggiungere all'URL quanto segue:

?filter=Store/Territory in ('NC', 'TN')

Vedere la tabella Operatori più avanti nell'articolo per un elenco di altri operatori utili.

Filtrare in base a più campi

È possibile anche filtrare in base a più campi aggiungendo parametri aggiuntivi all'URL. Tornare al parametro filtro originale.

?filter=Store/Territory eq 'NC'

Per filtrare in base a più campi, aggiungere un campo "e" e un altro campo nello stesso formato dell'esempio precedente. Ecco un esempio.

?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

Operatori

Power BI supporta molti operatori oltre a "and". La tabella seguente elenca tali operatori insieme al tipo di contenuto supportato.

Operator Definizione String Numero Data Esempio
e e yes yes prodotto/prezzo le 200 and prezzo gt 3.5
eq equals yes yes Indirizzo/Città eq 'Milano'
ne diverso da yes yes Indirizzo/Città ne 'Londra'
ge maggiore o uguale a no yes yes prodotto/prezzo ge 10
gt maggiore di no yes yes prodotto/prezzo gt 20
le minore o uguale a no yes yes prodotto/prezzo le 100
lt minore di no yes yes prodotto/prezzo lt 20
in* incluso yes yes Studente/Età in (27, 29)

* Quando si usa in i valori a destra di in possono essere un elenco delimitato da virgole racchiuso tra parentesi o una singola espressione che restituisce una raccolta. Per esempi, vedere l'articolo Operatore IN.

Tipi di dati numerici

Un filtro URL di Power BI può includere numeri nei formati seguenti.

Tipo di numero Esempio
integer 5
long 5 L o 5 l
double 5,5 o 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 o 5,5 m
float 5 F o 5 f o 0,5e1 F o 0,5e-1 d

Tipi di dati data

Power BI supporta OData V3 e V4 per i tipi di dati Date e DateTimeOffset. Per OData V3, è necessario racchiudere le date tra virgolette singole e precederle con la parola datetime. Non sono necessarie virgolette singole e la parola datetime in OData V4.

Le date sono rappresentate nel formato EDM (2019-02-12T00:00:00): quando si specifica una data come "AAAA-MM-GG", Power BI la interpreta come "AAAA-MM-GGT00:00:00". Il mese e il giorno devono essere composti da due cifre, MM e GG.

Perché è importante questa distinzione? Si supponga di creare un parametro di stringa di query Table/Date gt '2018-08-03'. I risultati includeranno il 3 agosto 2018 oppure partiranno dal 4 agosto 2018? Power BI converte la query in Table/Date gt '2018-08-03T00:00:00'. I risultati includono pertanto tutte le date con una parte dell'ora diversa da zero, perché tali date saranno posteriori a "2018-08-03T00:00:00".

Esistono altre differenze tra V3 e V4. OData v3 non supporta data, solo data e ora. Se quindi si usa il formato V3, è necessario qualificarlo con la data e l'ora complete. I valori letterali di data come "datetime'2019-05-20'"non sono supportati nella notazione V3. È tuttavia possibile scrivere semplicemente "2019-05-20" nella notazione V4. Ecco due query di filtro equivalenti in V3 e V4:

  • Formato OData V4: filter=Table/Date gt 2019-05-20
  • Formato OData V3: filter=Table/Date gt datetime'2019-05-20T00:00:00'

Caratteri speciali nei filtri di URL

Caratteri speciali nei nomi di tabelle e colonne

I caratteri speciali, gli spazi e i numeri iniziali nei nomi di tabella e colonna richiedono una formattazione maggiore. Quando la query contiene spazi, trattini, numeri iniziali o altri caratteri non ASCII, anteporre a questi caratteri speciali un codice di escape costituito da un carattere di sottolineatura e da una X (_x), seguiti dal codice Unicode di quattro cifre e da un altro carattere di sottolineatura. Se il codice Unicode è composto da meno di quattro caratteri, è necessario aggiungere zeri. Di seguito sono riportati alcuni esempi.

Identifier Unicode Codice per Power BI
Nome tabella Lo spazio è 00x20 Nome_x0020_tabella
Colonna@Numero @ è 00x40 Colonna_x0040_Numero
[Colonna] [ è 0x005B ] è 0x005D _x005B_Column_x005D_
Colonna+Più + è 0x2B Colonna_x002B_Più
2TableName 2 è x0032 _x0032_TableName_

Table_x0020_Name/Column_x002B_Plus eq 3 Screenshot del rendering di caratteri speciali per l'oggetto visivo tabella per Unicode.

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Screenshot del rendering di caratteri speciali dell'oggetto visivo tabella per la codifica per Power BI.

Caratteri speciali nei valori

I filtri URL supportano la maggior parte dei caratteri speciali nei valori dei campi, ma alcuni richiedono anche codici di escape. Ad esempio, per cercare un carattere virgoletta singola, usare due virgolette singole ('').

  • ?filter=Table/Name eq 'O''Brien' diventa:

    Il Nome è O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' diventa:

    Vertice di Lee

  • Anche l'operatore in supporta questa modalità di escape: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') diventa:

    Vertice di Lee o O'Brien

Ecco un elenco di alcuni caratteri speciali che richiedono codici di escape nei valori dei campi.

Carattere Codice di escape
(uno spazio) 20%
' ''
% 25%
+ %2B
/ %2F
? %3F
# %23
& 26%

Caratteri di escape URL standard

Quando si usa un URL con spazi e altri caratteri speciali, i browser possono sostituirli automaticamente con caratteri di escape standard. Si supponga di creare questa stringa di query URL:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'

Apre l'esempio di redditività dei clienti, filtrato in Andrew Ma. Tuttavia, se si esamina l'URL, potrebbe essere simile al seguente:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27

Il browser ha sostituito lo spazio tra Andrew e Ma con %20, analogamente agli altri spazi. Ha sostituito la barra tra il nome della tabella Executives e il nome del campo Executive con %2F e sostituito la virgoletta singola ' con %27.

Questa versione di un URL può essere utile. Ad esempio, è possibile incollarlo nella chat in Microsoft Teams e restituisce i risultati filtrati desiderati.

Usare DAX per filtrare in base a più valori

Un altro modo per filtrare in base a più campi consiste nel creare una colonna calcolata che concateni due campi in un unico valore. quindi filtrare in base a tale valore.

Ad esempio, ci sono due campi: Territory (Territorio) e Chain (Catena). In Power BI Desktop creare una nuova colonna calcolata (Campo) denominata TerritoryChain. Tenere presente che il nome Campo non può contenere spazi. Ecco la formula DAX per tale colonna.

TerritoryChain = [Territory] & " - " & [Chain]

Pubblicare il report nel servizio Power BI, quindi usare la stringa di query dell'URL per filtrare e visualizzare solo i dati relativi ai negozi Lindseys nella Carolina del Nord.

https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'

Aggiungere un riquadro da un report filtrato

Dopo aver filtrato il report usando i parametri della stringa di query, è possibile aggiungere al dashboard le visualizzazioni da tale report. Il riquadro nel dashboard contiene i dati filtrati; selezionandolo, viene aperto il report usato per crearlo. Tuttavia, i filtri applicati usando l'URL non vengono salvati con il report. Quando si seleziona il riquadro del dashboard, il report viene aperto nello stato non filtrato. I dati visualizzati nel riquadro del dashboard non corrispondono quindi ai dati presenti nella visualizzazione del report.

Questa discrepanza è utile quando si vogliono visualizzare risultati diversi, filtrati nel dashboard e non filtrati nel report.

Considerazioni e risoluzione dei problemi

Ci sono un paio di aspetti da tenere presenti quando si usano i parametri della stringa di query.

  • Quando si usa l'operatore in, i valori a destra di in devono essere un elenco delimitato da virgole racchiuso tra parentesi.

  • Server di report di Power BI supporta anche la possibilità di specificare più di un filtro tramite il parametro URL "filter". Di seguito è riportato un esempio di come potrebbe apparire l'URL in Server di report di Power BI: https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • I filtri URL dei report hanno un limite di 10 espressioni (10 filtri connessi tramite AND).

  • Il tipo di dati long è (2^53-1) a causa di limitazioni di JavaScript.

  • Le stringhe di query URL sono limitate a 2000 caratteri. Questo limite include i codici di escape per i caratteri speciali (ad esempio, uno spazio, %, +).

  • Non è possibile filtrare in base ai nomi di tabella o colonna che iniziano con le lettere maiuscole INF, ad esempio un nome di tabella che inizia con "INFORMATION". INF maiuscolo è un valore speciale in OData. Se si vuole avviare una tabella o un nome di colonna con "INF", impostarlo invece in lettere minuscole "inf".

  • I nomi di tabella e di campo possono contenere caratteri cinesi espressi in formato Unicode. Si supponga, ad esempio, di voler applicare un filtro che 表/人 eq '张力' (questo significa Tabella/Persona eq '张力'). Il filtro viene convertito in _x8868_/_x4eba_ eq '张力'.

    Screenshot dei caratteri cinesi convertiti in formato Unicode in una stringa di ricerca.

Scenari di incorporamento

I filtri URL sono supportati in alcuni scenari di incorporamento e non in altri.

Altre domande? Contattare la community di Power BI