Configurare l'aggiornamento incrementale e i dati in tempo reale
Questo articolo descrive come configurare l'aggiornamento incrementale e i dati in tempo reale per i modelli semantici. Per informazioni sulla configurazione dell'aggiornamento incrementale per i flussi di dati, vedere Funzionalità Premium dei flussi di dati - Aggiornamento incrementale.
La configurazione dell'aggiornamento incrementale include la creazione di parametri RangeStart e RangeEnd, l'applicazione di filtri e la definizione di un criterio di aggiornamento incrementale. Dopo la pubblicazione nel servizio Power BI, si eseguirà un'operazione di aggiornamento iniziale sul modello. L'operazione di aggiornamento iniziale e le operazioni di aggiornamento successive applicano i criteri di aggiornamento incrementale definiti. Prima di completare questi passaggi, assicurarsi di comprendere appieno le funzionalità descritte in Aggiornamento incrementale e dati in tempo reale per i modelli semantici.
Creare un parametro
In questa attività si userà l'editor di Power Query per creare parametri RangeStart e RangeEnd con valori predefiniti. I valori predefiniti si applicano solo quando si filtrano i dati da caricare nel modello in Power BI Desktop. I valori immessi devono includere solo una piccola quantità di dati più recenti dell'origine dati. Quando viene pubblicato nel servizio, i criteri di aggiornamento incrementale sostituiscono questi valori di intervallo di tempo. Ovvero, i criteri creano finestre di dati in ingresso, una dopo l'altra.
In Power BI Desktop selezionare Trasforma dati nella barra multifunzione Home per aprire l'editor di Power Query.
Selezionare l'elenco a discesa Gestisci parametri e quindi scegliere Nuovo parametro.
Nel campo Nome immettere RangeStart (con distinzione tra maiuscole e minuscole). Nel campo Tipo selezionare data/ora dall'elenco a discesa. Nel campo valore corrente immettere un valore di data e ora di inizio.
Selezionare Nuovo per creare un secondo parametro denominato RangeEnd. Nel campo Tipo selezionare data/ora e quindi nel campo valore corrente immettere un valore di data e ora di fine. Seleziona OK.
Dopo aver definito i parametri RangeStart e RangeEnd, è possibile filtrare i dati da caricare nel modello in base a tali parametri.
Filtro dei dati
Nota
Prima di continuare con questa attività, verificare che nella tabella di origine sia presente una colonna data di tipo data/ora. Se non ha una colonna Data/Ora, ma ha una colonna data di chiavi surrogate integer sotto forma di yyyymmdd
, seguire i passaggi descritti in Convertire DateTime in integer più avanti in questo articolo per creare una funzione che converte il valore di data/ora nei parametri in modo che corrisponda alla chiave surrogata integer della tabella di origine.
A questo punto si applicherà un filtro in base alle condizioni nei parametri RangeStart e RangeEnd.
Nell'editor di Power Query selezionare la colonna data in base alla quale filtrare e quindi scegliere la freccia a discesa >Filtri data>Filtro personalizzato.
In Filtra righe, per specificare la prima condizione, selezionare è dopo o è dopo o uguale a, quindi scegliere Parametro e quindi scegliere RangeStart.
Per specificare la seconda condizione, se è stata selezionata è dopo nella prima condizione, scegliere è prima o uguale a oppure se è stata selezionata è dopo o uguale a nella prima condizione, scegliere è prima per la seconda condizione, quindi scegliere Parametro e quindi scegliere RangeEnd.
Importante: Verificare che le query abbiano un valore uguale a (=) in RangeStart o RangeEnd, ma non entrambe. Se il criterio uguale a (=) è presente in entrambi i parametri, una riga può soddisfare le condizioni per due partizioni, il che potrebbe causare la duplicazione dei dati nel modello. Ad esempio,
= Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd)
potrebbe generare dati duplicati se è presente un OrderDate che è uguale sia a RangeStart che a RangeEnd.Selezionare OK per chiudere.
Nella barra multifunzione Home nell'editor di Power Query, selezionare Chiudi e applica. Power Query carica i dati in base ai filtri definiti dai parametri RangeStart e RangeEnd e a tutti gli altri filtri definiti.
Power Query carica solo i dati specificati tra i parametri RangeStart e RangeEnd. A seconda della quantità di dati in quel periodo, la tabella deve essere caricata rapidamente. Se sembra lento e intensivo del processo, è probabile che la query non sia piegata.
Definire criterio
Dopo aver definito i parametri RangeStart e RangeEnd e aver filtrato i dati in base a tali parametri, si definiranno criteri di aggiornamento incrementale. Questo criterio viene applicato solo dopo la pubblicazione del modello nel servizio e viene eseguita un'operazione di aggiornamento manuale o pianificata.
Nella visualizzazione Tabella fare clic con il pulsante destro del mouse su una tabella nel riquadro dati e selezionare aggiornamento incrementale.
In Aggiornamento incrementale e dati in tempo reale>Selezionare la tabella, verificare o selezionare la tabella. Il valore predefinito della casella di riepilogo Seleziona tabella è la tabella selezionata nella visualizzazione Tabella.
Specificare le impostazioni richieste:
In Impostare intervalli di importazione e aggiornamento>Aggiornare in modo incrementale questa tabella spostare il dispositivo di scorrimento su On. Se il dispositivo di scorrimento è disabilitato, significa che l'espressione di Power Query per la tabella non include un filtro basato sui parametri RangeStart e RangeEnd.
In Archiviare i dati a partire daspecificare il periodo di archivio cronologico da includere nel modello. Tutte le righe con date in questo periodo verranno caricate nel modello nel servizio, a meno che non vengano applicati altri filtri.
In Aggiornare in modo incrementale i dati a partire da, specificare il periodo di aggiornamento. Tutte le righe con date in questo periodo verranno aggiornate nel modello ogni volta che viene eseguita un'operazione di aggiornamento manuale o pianificata dal servizio Power BI.
Specificare le impostazioni facoltative:
In Scegliere le impostazioni facoltative, selezionare Ottenere i dati più recenti in tempo reale con DirectQuery (solo Premium) per includere le modifiche più recenti apportate all'origine dati dopo l'ultimo periodo di aggiornamento. Questa impostazione determina l'aggiunta di una partizione DirectQuery alla tabella dai criteri di aggiornamento incrementale.
Selezionare Aggiorna solo giorni completi per aggiornare solo giorni interi. Se l'operazione di aggiornamento rileva che un giorno non è completo, le righe per l'intero giorno non vengono aggiornate. Questa opzione viene abilitata automaticamente quando si seleziona Ottenere i dati più recenti in tempo reale con DirectQuery (solo Premium).
Selezionare Rileva modifiche ai dati per specificare una colonna data/ora usata per identificare e aggiornare solo i giorni in cui i dati sono stati modificati. Una colonna di data/ora deve esistere, in genere a scopo di controllo, nell'origine dati. Questa colonna non deve essere la stessa colonna usata per partizionare i dati con i parametri RangeStart e RangeEnd. Il valore massimo di questa colonna viene valutato per ciascuno dei periodi dell'intervallo incrementale. Se non è stato modificato dopo l'ultimo aggiornamento, il periodo corrente non viene aggiornato. Per i modelli pubblicati nelle capacità Premium, è anche possibile specificare una query personalizzata. Per altre informazioni, vedere Aggiornamento incrementale avanzato - Query personalizzate per rilevare le modifiche ai dati.
A seconda delle impostazioni, i criteri dovrebbero avere un aspetto simile al seguente:
Esaminare le impostazioni e quindi selezionare Applica per completare i criteri di aggiornamento. Questo passaggio non carica i dati.
Salvare e pubblicare nel servizio
Ora che i parametri RangeStart e RangeEnd, i filtri e le impostazioni dei criteri di aggiornamento sono stati completati, salvare il modello e quindi pubblicarlo nel servizio. Se il modello diventa grande, assicurati di abilitare il formato di archiviazione per modelli grandiprima di avviare il primo aggiornamento all'interno del servizio.
Aggiornare il modello
Nel servizio aggiornare il modello. Il primo aggiornamento carica sia i dati nuovi che aggiornati nel periodo di aggiornamento, nonché i dati cronologici per l'intero periodo di archiviazione. A seconda della quantità di dati, l'aggiornamento può richiedere molto tempo. Gli aggiornamenti successivi, sia manuali che pianificati, sono in genere molto più veloci perché i criteri di aggiornamento incrementale vengono applicati e vengono aggiornati solo i dati per il periodo specificato nell'impostazione dei criteri di aggiornamento.
Convertire DateTime in integer
Questa attività è necessaria solo se la tabella usa chiavi surrogate integer anziché valori di data/ora nella colonna data usata per la definizione del filtro RangeStart e RangeEnd.
Il tipo di dati dei parametri RangeStart e RangeEnd deve essere di tipo data/ora indipendentemente dal tipo di dati della colonna date. Tuttavia, per molte origini dati, le tabelle non hanno una colonna di tipo data/ora, ma hanno invece una colonna data di chiavi surrogate integer sotto forma di yyyymmdd
. In genere non è possibile convertire queste chiavi surrogate integer nel tipo di dati Data/Ora perché il risultato sarebbe un'espressione di query non piegabile, ma è possibile creare una funzione che converte il valore di data/ora nei parametri in modo che corrisponda alla chiave surrogata integer della tabella di origine dati senza perdere la piegabilità. La funzione viene quindi chiamata in un passaggio di filtro. Questo passaggio di conversione è obbligatorio se la tabella dell'origine dati contiene solo una chiave surrogata come tipo di dati integer.
Nella barra multifunzione Home in Editor di Power Query selezionare l'elenco a discesa Nuova origine e quindi scegliere Query vuota.
In Impostazioni query immettere un nome, ad esempio DateKey e quindi nell'editor di formule, immettere la formula seguente:
= (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)
Per testare la formula, in Immettere il parametro immettere un valore di data/ora e quindi selezionare Richiamare. Se la formula è corretta, viene restituito un valore intero per la data. Dopo la verifica, eliminare questa nuova query funzione richiamata.
In Query, selezionare la tabella e quindi modificare la formula della query per chiamare la funzione con i parametri RangeStart e RangeEnd.
= Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))