Perché le colonne calcolate di Power BI rovinano le prestazioni dei report e gonfiano la memoria del modello
By Mirko Peters ·
Scopri perché abusare delle colonne calcolate in Power BI gonfia la memoria del modello e compromette le prestazioni dei report. Impara a ottimizzare l'architettura del modello dati.
Automatically translated with AI from the original post. Read the English original

Usare in modo errato le colonne calcolate in Power BI può gonfiare silenziosamente la memoria del modello dati e rallentare i tempi di visualizzazione dei report. A differenza delle misure dinamiche, le colonne calcolate valutano e memorizzano ogni singola riga durante l'aggiornamento dei dati, consumando RAM preziosa e aumentando il carico di elaborazione nell'architettura del tuo spazio di lavoro.
Punti chiave
- Le colonne calcolate determinano i valori riga per riga durante l'aggiornamento dei dati e li memorizzano in modo permanente in memoria.
- Abusare delle colonne calcolate peggiora drasticamente i rapporti di compressione di VertiPaq, con un forte aumento delle dimensioni del file.
- Il contesto di riga fa sì che i calcoli vengano eseguiti in modo statico, ignorando completamente le selezioni di filtro dell'utente sugli elementi visivi.
- I modelli dati con un numero eccessivo di colonne faticano a scalare, soprattutto se integrati in grandi ambienti Microsoft Fabric aziendali.
- Spostare la logica dalle colonne, che occupano molto spazio di archiviazione, alle misure calcolate al momento della query preserva la RAM di sistema e ottimizza le prestazioni dei report.
Il costo nascosto in memoria della valutazione riga per riga
Quando crei un nuovo report in Power BI, è facile cadere nell'abitudine di usare colonne calcolate per ogni nuovo dato che devi visualizzare. Se ti serve un margine di profitto, un nome completo concatenato o una categoria di fascia per i tuoi dati di vendita, creare una colonna all'interno della tabella sembra intuitivo. Del resto, puoi vedere subito i risultati in Visualizzazione dati, esattamente come in un foglio di Excel.
Tuttavia, Power BI è un motore analitico, non un foglio di calcolo. Ogni volta che crei una colonna calcolata, stai chiedendo al motore di database VertiPaq di calcolare quel valore per ogni singola riga della tabella durante il processo di aggiornamento dei dati. Se la tua tabella delle vendite contiene cinque milioni di righe, la nuova colonna calcolata aggiunge cinque milioni di voci distinte al tuo modello semantico.
Ancora peggio, le colonne calcolate interferiscono con gli algoritmi di compressione del motore. VertiPaq si basa su colonne a bassa cardinalità, cioè colonne con valori ripetitivi e duplicati, per comprimere i dati in modo efficiente. Una colonna calcolata con valori unici spesso annulla questa efficienza di compressione, moltiplicando la RAM necessaria per mantenere il modello residente in memoria. Man mano che il modello cresce, questo gonfiamento della memoria può superare rapidamente i limiti di capacità del tuo spazio di lavoro nel cloud Microsoft.
Come il contesto statico limita la flessibilità dei report
Oltre al consumo di memoria, le colonne calcolate introducono limiti funzionali significativi a causa del modo in cui gestiscono il contesto di valutazione. Una colonna calcolata opera rigorosamente nel contesto di riga. Valuta i valori della riga corrente indipendentemente dalle interazioni dell'utente, dai segmentatori o dalle selezioni di filtro incrociato effettuate sulla tela del report.
Se crei una colonna calcolata per contrassegnare i clienti di alto valore in base a una soglia statica, tale classificazione viene incorporata nel livello di archiviazione. Se un utente modifica in seguito un segmentatore per visualizzare i dati per area geografica o cambia un intervallo di date, la colonna calcolata non tiene conto di tali filtri. Non può adattarsi dinamicamente ai cambiamenti dello stato di aggregazione, perché il suo valore è già stato calcolato e memorizzato ore prima, durante l'ultimo aggiornamento.
Questa rigidità contrasta nettamente con le misure, che calcolano i risultati al volo, basandosi interamente sul contesto di filtro applicato dall'utente in quel preciso momento. Quando un utente interagisce con una visualizzazione, una misura si ricalcola per fornire approfondimenti precisi e consapevoli del contesto, mentre una colonna calcolata si limita a restituire i dati statici memorizzati in RAM.
Progettare modelli più snelli per Microsoft Fabric e Azure
Il reporting cloud aziendale richiede un'elevata efficienza, soprattutto quando si scala tra Microsoft Fabric, Azure e ambienti dati complessi di Microsoft 365. I modelli semantici ridondanti consumano risorse infrastrutturali, rallentano i tempi di risposta delle query e frustrano gli utenti di business che attendono il caricamento delle dashboard.
Per mantenere i report alla massima velocità, limita le colonne calcolate esclusivamente ai casi in cui i valori a livello di riga siano davvero indispensabili. Ad esempio, potresti usare una colonna calcolata se devi creare una chiave di relazione tra tabelle basata su più parametri, oppure se il valore deve essere utilizzato in un segmentatore o in una regola di sicurezza a livello di riga (RLS) dove le misure non sono consentite.
Per tutti gli altri calcoli analitici, come totali, medie, rapporti e aggregazioni condizionali, dovresti spostare la logica nelle misure. Le misure non occupano spazio di archiviazione, perché non memorizzano valori nel modello. Risiedono in memoria solo come codice e vengono eseguite unicamente quando una visualizzazione richiede i dati. Questo approccio preserva la RAM, massimizza la compressione e mantiene la tua infrastruttura cloud in funzione senza intoppi.
Conclusione
Comprendere le differenze fondamentali tra archiviazione a livello di riga ed esecuzione dinamica delle query è essenziale per chiunque crei soluzioni di analisi scalabili. Riducendo al minimo le colonne calcolate non necessarie e puntando sulla potenza delle misure dinamiche, puoi migliorare notevolmente la velocità dei report e ridurre il consumo di memoria.
Per approfondire l'argomento e ascoltare un'analisi completa e priva di gergo tecnico su come il motore gestisce le tue formule, ascolta l'episodio completo. Resta al passo con la strategia di analisi cloud sintonizzandoti per altri approfondimenti di esperti nel podcast M365 FM.
Domande frequenti
Perché le colonne calcolate consumano così tanta memoria in Power BI?
Le colonne calcolate valutano ogni singola riga durante l'aggiornamento dei dati e memorizzano questi valori in modo permanente nella RAM del modello. Questo impedisce al motore VertiPaq di comprimere i dati in modo efficace, portando a una rapida crescita eccessiva del modello.
Le misure occupano spazio di archiviazione in un modello semantico di Power BI?
No, le misure non occupano spazio di archiviazione. Sono memorizzate semplicemente come definizioni di formule nei metadati e vengono calcolate dinamicamente solo quando una visualizzazione o un'interazione dell'utente richiede il calcolo.
Quando è davvero appropriato usare una colonna calcolata?
Le colonne calcolate vanno riservate a scenari specifici in cui il contesto di riga è indispensabile, come la creazione di chiavi composte per le relazioni, l'applicazione di regole di sicurezza a livello di riga (RLS) o l'alimentazione di elementi che devono comparire come valori statici di un segmentatore.
In che modo le colonne calcolate influiscono sulle prestazioni di rendering dei report?
Un numero eccessivo di colonne calcolate aumenta le dimensioni complessive del modello semantico e riduce la compressione dei dati. I modelli più grandi richiedono più memoria e potenza di elaborazione, il che alla fine rallenta l'esecuzione delle query e i tempi di caricamento dei report in tutto il tuo workspace.