Condividi tramite


Usare parametri a catena nei report impaginati

Questo articolo è destinato a te in qualità di autore di report che progetta i report impaginati di Power BI . Fornisce scenari per la progettazione di parametri a catena. I parametri a catena sono parametri del report con dipendenze. Quando un utente del report seleziona un valore di parametro (o valori), viene usato per impostare i valori disponibili per un altro parametro.

Nota

Un'introduzione ai parametri a catena e a come configurarle non è descritta in questo articolo. Se non hai completa familiarità con i parametri a cascata, prima di tutto è consigliabile leggere Aggiungere parametri a cascata a un report in Generatore report di Power BI.

Scenari di progettazione

Esistono due scenari di progettazione per l'uso di parametri a catena. Possono essere usati in modo efficace per:

  • Filtra grandi set di elementi
  • Presenta elementi pertinenti

Database di esempio

Gli esempi presentati in questo articolo si basano su un database SQL di Azure. Il database registra le operazioni di vendita e contiene varie tabelle che archiviano rivenditori, prodotti e ordini di vendita.

Una tabella denominata Reseller archivia un record per ogni rivenditore e contiene molte migliaia di record. La tabella Reseller include le colonne seguenti:

  • CodiceRivenditore (intero)
  • ResellerName
  • Country-Region
  • State-Province
  • Città
  • Codice Postale

Esiste anche una tabella denominata Sales. Archivia i record degli ordini di vendita e ha una relazione di chiave esterna con la tabella Reseller, nella colonna ResellerCode.

Requisito di esempio

È necessario sviluppare un report del profilo del rivenditore. Il report deve essere progettato per visualizzare informazioni per un singolo rivenditore. Non è opportuno che l'utente del report immetta un codice rivenditore, perché raramente li memorizza.

Filtrare set di elementi di grandi dimensioni

Verranno ora esaminati tre esempi che consentono di limitare grandi set di articoli disponibili, ad esempio i rivenditori. Sono:

In questo esempio l'utente del report interagisce con cinque parametri del report. Devono selezionare paese-regione, provincia, città e quindi codice postale. Un parametro finale elenca quindi i rivenditori che risiedono in tale posizione geografica.

Screenshot dei parametri del report impaginato di Power BI che mostrano il filtro utilizzando le colonne correlate.

Ecco come sviluppare i parametri a catena:

  1. Creare i cinque parametri del report, ordinati nella sequenza corretta.

  2. Creare il set di dati CountryRegion che recupera i valori distinti dell'area geografica del paese usando l'istruzione di query seguente:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. Creare il dataset stato-provincia che recupera i valori distinti di stato-provincia per il paese-regione selezionato, usando la seguente istruzione di query.

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. Creare il set di dati City che recupera i valori distinti della città per il paese-regione e lo stato-provincia selezionati, usando la seguente istruzione di query.

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. Continuare questo modello per creare il set di dati Codice Postale .

  6. Creare il set di dati Reseller per recuperare tutti i rivenditori per i valori geografici selezionati, usando l'istruzione di query seguente.

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. Per ogni set di dati, ad eccezione del primo, eseguire il mapping dei parametri di query ai parametri del report corrispondenti.

Nota

Tutti i parametri di query (preceduti dal simbolo @) illustrati in questi esempi possono essere incorporati all'interno di istruzioni SELECT o passati alle stored procedure.

In genere, le stored procedure sono un approccio di progettazione migliore. Perché i piani di query vengono memorizzati nella cache per un'esecuzione più rapida e consentono di sviluppare logica più sofisticata, se necessario. Tuttavia, non sono attualmente supportati per le origini dati relazionali attraverso un gateway, ovvero SQL Server, Oracle e Teradata.

Infine, è consigliabile assicurarsi sempre che esistano indici adatti per supportare un recupero efficiente dei dati. In caso contrario, i parametri del report potrebbero caricarsi lentamente e il database potrebbe diventare sovraccarico. Per ulteriori informazioni sull'indicizzazione di SQL Server, vedere SQL Server Index Architecture and Design Guide.

Filtrare in base a una colonna di raggruppamento

In questo esempio l'utente del report interagisce con un parametro del report per selezionare la prima lettera del rivenditore. Un secondo parametro elenca quindi i rivenditori quando il nome inizia con la lettera selezionata.

Screenshot dei parametri del report paginati di Power BI che mostrano il filtraggio per una colonna di raggruppamento.

Ecco come sviluppare i parametri a catena:

  1. Creare i parametri del report ReportGroup e del Reseller, ordinati nella sequenza corretta.

  2. Creare il set di dati ReportGroup per recuperare le prime lettere usate da tutti i rivenditori usando l'istruzione di query seguente:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. Creare il set di dati Rivenditore per recuperare tutti i rivenditori che iniziano con la lettera selezionata, usando la seguente istruzione di query:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. Mappare il parametro di query del dataset Reseller al parametro di report corrispondente.

È più efficiente aggiungere la colonna di raggruppamento alla tabella Reseller. Se persistente e indicizzato, offre il risultato migliore. Per ulteriori informazioni, consultare Specificare colonne calcolate all'interno di una tabella.

ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED

Questa tecnica può offrire un potenziale ancora maggiore. Considera lo script seguente che aggiunge una nuova colonna di raggruppamento per filtrare i rivenditori attraverso le bande di lettere predefinite . Crea inoltre un indice per recuperare in modo efficiente i dati richiesti dai parametri del report.

ALTER TABLE [Reseller]
ADD [ReportGroup2] AS CASE
  WHEN [ResellerName] LIKE '[A-C]%' THEN 'A-C'
  WHEN [ResellerName] LIKE '[D-H]%' THEN 'D-H'
  WHEN [ResellerName] LIKE '[I-M]%' THEN 'I-M'
  WHEN [ResellerName] LIKE '[N-S]%' THEN 'N-S'
  WHEN [ResellerName] LIKE '[T-Z]%' THEN 'T-Z'
  ELSE '[Other]'
END PERSISTED
GO

CREATE NONCLUSTERED INDEX [Reseller_ReportGroup2]
ON [Reseller] ([ReportGroup2]) INCLUDE ([ResellerCode], [ResellerName])
GO

Filtrare in base al criterio di ricerca

In questo esempio l'utente del report interagisce con un parametro del report per immettere un criterio di ricerca. Un secondo parametro elenca quindi i rivenditori quando il nome contiene il modello.

Screenshot dei parametri del report impaginati di Power BI che mostrano il filtro in base al criterio di ricerca.

Ecco come sviluppare i parametri a catena:

  1. Creare i parametri del report per ricerca e rivenditore, ordinati nella sequenza corretta.

  2. Creare il set di dati Reseller per recuperare tutti i rivenditori che contengono il testo di ricerca usando l'istruzione di query seguente:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. Effettuare il mapping del parametro di query del dataset Reseller al parametro del report corrispondente.

Mancia

È possibile migliorare questa progettazione per fornire un maggiore controllo per gli utenti del report. Consente loro di definire il proprio valore di corrispondenza dei criteri. Ad esempio, il valore di ricerca "rosso%" filtra i rivenditori con nomi che iniziano con i caratteri "rosso".

Per altre informazioni, vedere LIKE (Transact-SQL).

Ecco come consentire agli utenti del report di definire il proprio modello.

WHERE
  [ResellerName] LIKE @Search

Molti professionisti non di database, tuttavia, non conoscono il carattere jolly percentuale (%). Hanno invece familiarità con il carattere asterisco (*) . Modificando la clausola WHERE, è possibile consentire loro di usare questo carattere.

WHERE
  [ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')

Presentare gli elementi pertinenti

In questo scenario è possibile usare i dati dei fatti per limitare i valori disponibili. Agli utenti del report verranno mostrati gli elementi in cui è stata registrata l'attività.

In questo esempio l'utente del report interagisce con tre parametri del report. I primi due impostano un intervallo di date degli ordini di vendita. Il terzo parametro elenca quindi i rivenditori in cui gli ordini sono stati creati durante tale periodo di tempo.

Screenshot dei parametri del report di Power BI impaginati con tre parametri del report: Data di inizio ordine, Data di fine ordine e Rivenditore.

Ecco come sviluppare i parametri a catena:

  1. Crea i parametri OrderDateStart, OrderDateEnde Reseller, ordinati nella sequenza corretta.

  2. Creare il set di dati Reseller per recuperare tutti i rivenditori che hanno creato ordini nell'intervallo di date, usando l'istruzione di query seguente:

    SELECT DISTINCT
      [r].[ResellerCode],
      [r].[ResellerName]
    FROM
      [Reseller] AS [r]
    INNER JOIN [Sales] AS [s]
      ON [s].[ResellerCode] = [r].[ResellerCode]
    WHERE
      [s].[OrderDate] >= @OrderDateStart
      AND [s].[OrderDate] < DATEADD(DAY, 1, @OrderDateEnd)
    ORDER BY
      [r].[ResellerName]
    

Consigli

È consigliabile progettare i report con parametri a catena, quando possibile. È perché loro:

  • Offrire esperienze intuitive e utili per gli utenti del report
  • Sono efficienti perché recuperano set più piccoli di valori disponibili

Assicurarsi di ottimizzare le origini dati in base a:

  • Uso delle stored procedure, quando possibile
  • Aggiunta di indici appropriati per un recupero efficiente dei dati
  • Materializzazione dei valori delle colonne e persino delle righe per evitare valutazioni costose in fase di query

Per altre informazioni relative a questo articolo, vedere le risorse seguenti: