Condividi tramite


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. Un modo per filtrare il report consiste nell'iniziare con l'URL predefinito, aggiungere i parametri di filtro all'URL e quindi inviarli tramite posta elettronica all'intero nuovo URL.

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 online.

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. Creano un report usando DAX (Data Analysis Expressions), 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 uguale 'valore'

Screenshot dell'URL con un 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 filtro non è il primo parametro nella stringa di query, si unisce al parametro precedente con un ampersand (&), ad esempio:

URL?reportId=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&pageName=ReportSection&filter=Table/Field eq 'value'

Regole di sintassi importanti

Quando si creano filtri URL, tenere presenti queste regole critiche:

  1. Nomi di campo con spazi: Utilizzare _x0020_ per rappresentare gli spazi nei nomi di tabella o di campo. Ad esempio, se la tabella è denominata "Sales Data", usare Sales_x0020_Data nel filtro URL.

  2. Citazione dei valori dei campi: Racchiudere solo i valori dei campi di testo con singoli apostrofi. I valori numerici non accettano caratteri circostanti.

    • Valori di testo: filter=Product/Category eq 'Electronics'
    • Valori numerici: filter=Product/Price eq 487
  3. Filtri preesistenti: Tutti i filtri preesistenti devono essere non filtrati (o impostati su Tutti) prima che il filtro URL venga passato. In caso contrario, i filtri esistenti e i nuovi filtri URL creano una relazione AND che può comportare zero record nel set di dati.

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, specificare una colonna di tabella come tipo "string" non funziona se si sta cercando un valore datetime o numerico in una colonna del modello semantico impostata come data. Ad esempio, Table/StringColumn = 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, continua a leggere mentre lo spieghiamo.

Filtrare in base a un campo

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

Schermata dell'URL iniziale del rapporto.

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 del report con un filtro per la Carolina del Nord aggiunto.

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 in Power BI 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/Campoin ('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.

Operatore Definizione Stringa Numero Data Esempio
e e prodotto/prezzo ≤ 200 e prezzo > 3.5
eq uguale Indirizzo/Città eq 'Redmond'
ne diverso da Indirizzo/Città ne 'Londra'
ge maggiore o uguale a no prodotto/prezzo ge 10
gt maggiore di no prodotto/prezzo gt 20
le minore o uguale a no prodotto/prezzo 100
lt minore di no prodotto/prezzo lt 20
in* incluso 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
doppio 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 milioni o 5 metri o 5,5 milioni o 5,5 metri
float 5 F o 5 f o 0,5e1 F o 0,5e-1 d

Tipi di dati per le date

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". Assicurarsi che il mese (MM) e il giorno (DD) siano due cifre.

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 traduce la tua interrogazione in Table/Date gt '2018-08-03T00:00:00'. Pertanto, i risultati includono tutte le date con una parte diversa da zero, perché tali date sarebbero maggiori di '2018-08-03T00:00:00'.

Esistono altre differenze tra V3 e V4. OData V3 non supporta date, ma solo DateTime. 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.

Identificatore Unicode Codice per Power BI
Nome della tabella Lo spazio è 00x20 Table_x0020_Name
Colonna@Numero @ è 00x40 Colonna_x0040_Numero
[Colonna] [ è 0x005B ] è 0x005D _x005B_Column_x005D_
Column+Plus + equivale a 0x2B Colonna_x002B_Più
2TableName 2 è x0032 _x0032_TableName

Table_x0020_Name/Column_x002B_Plus eq 3 Screenshot del rendering di caratteri speciali della visualizzazione tabella per Unicode.

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Screenshot del rendering visivo della tabella con caratteri speciali per la codifica in 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:

    Lee's Summit

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

    Lee's Summit 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 potrebbero 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 su Andrew Ma. Tuttavia, se si esamina ora 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 potrebbe 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 e Chain. In Power BI Desktop, crea una nuova Colonna calcolata (Campo) denominata TerritoryChain. Tenere presente che il nome Campo non può contenere spazi. Ecco la formula DAX per quella colonna.

TerritoryChain = [Territorio] & " - " & [Catena]

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 visualizzazioni da tale report al dashboard. 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 delle limitazioni di JavaScript.

  • Le stringhe di query URL sono limitate a 2.000 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 iniziare una tabella o un nome di colonna con "INF", usare invece "inf" in lettere minuscole.

  • I nomi di tabella e di campo possono contenere caratteri cinesi espressi in formato Unicode. Supponiamo, 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