Risoluzione dei problemi di ricalcolo delle formule DAX
Ogni volta che si verificano modifiche nel modello di dati della cartella di lavoro, Power Pivot esegue un'analisi dei dati esistenti per determinare se è necessario ricalcolare ed esegue l'aggiornamento nel modo più efficiente possibile.
Power Pivot gestisce quanto segue, durante il ricalcolo delle formule DAX:
- Dependencies
- Sequenza di ricalcolo per colonne dipendenti
- Transactions
- Ricalcolo delle funzioni volatili
Dipendenze
Quando una colonna dipende da un'altra colonna e il contenuto di quell'altra colonna cambia in qualche modo, potrebbe essere necessario ricalcolare tutte le colonne correlate.
PowerPivot esegue sempre un ricalcolo completo per una tabella, perché un ricalcolo completo è più efficiente del controllo dei valori modificati. Le modifiche che attivano il ricalcolo potrebbero includere l'eliminazione di una colonna, la modifica del tipo di dati numerici di una colonna o l'aggiunta di una nuova colonna. Questi cambiamenti sono considerati cambiamenti importanti. Tuttavia, anche modifiche apparentemente banali, come la modifica del nome di una colonna, potrebbero attivare il ricalcolo. Questo perché i nomi delle colonne vengono usati come identificatori nelle formule DAX.
In alcuni casi, PowerPivot può determinare che le colonne possono essere escluse dal ricalcolo.
Sequenza di ricalcolo per colonne dipendenti
Le dipendenze vengono calcolate prima di qualsiasi ricalcolo. Se sono presenti più colonne che dipendono l'una dall'altra, PowerPivot segue la sequenza delle dipendenze. Ciò garantisce che le colonne vengano elaborate nel giusto ordine alla massima velocità.
Transazioni
Le operazioni che ricalcolano o aggiornano i dati avvengono come transazione. Ciò significa che se una qualsiasi parte dell'operazione di aggiornamento non riesce, le operazioni rimanenti vengono annullate. Questo per garantire che i dati non vengano lasciati in uno stato parzialmente elaborato. Tuttavia, non è possibile gestire le transazioni come si fa in un database relazionale o creare checkpoint.
Ricalcolo delle funzioni volatili
Le funzioni DAX come NOW, RAND o TODAY non hanno valori fissi e sono indicate come funzioni volatili. Se tali funzioni DAX vengono utilizzate in una colonna calcolata, l'esecuzione di una query o di un filtro in genere non ne determinerà la rivalutazione per evitare problemi di prestazioni.
I risultati per queste funzioni DAX vengono ricalcolati solo quando l'intera colonna viene ricalcolata. Queste situazioni includono l'aggiornamento da un'origine dati esterna o la modifica manuale dei dati che causa la rivalutazione delle formule DAX che contengono queste funzioni.
Tuttavia, tali funzioni verranno sempre ricalcolate se le funzioni vengono utilizzate nella definizione di un campo calcolato.