Se hai passato un po’ di tempo a lavorare con DAX, sai già che le date possono diventare complicate in fretta. Te la cavi finché qualcuno non dice: “Ehi, la nostra settimana di reporting inizia il sabato”, oppure “Possiamo evidenziare i weekend in modo diverso nella dashboard?”. All’improvviso ti ritrovi tra i tipi di ritorno di WEEKDAY(), la logica degli offset e a spiegare perché Power BI pensa che il venerdì sia la fine della settimana quando per il tuo business non è così.
A molti di noi è capitato: devi contrassegnare i weekend, calcolare i giorni lavorativi o definire confini di settimana personalizzati che non coincidono con il calendario standard. Magari il tuo magazzino lavora da domenica a giovedì, oppure il team finance vuole contare i giorni lavorativi escludendo i weekend.
Di default, DAX non gestisce tutto questo alla perfezione, ma ti fornisce i mattoni per sistemarlo. In questo articolo vedremo come contrassegnare i weekend con WEEKDAY(), definire confini di settimana (per esempio, sabato–venerdì), calcolare i giorni lavorativi con NETWORKDAYS() o con logica condizionale e usare questi calcoli per alimentare metriche che abbiano davvero senso in Power BI
Capire i weekend in DAX
Partiamo dalle basi: individuare quali giorni sono weekend nel tuo dataset. DAX ti mette a disposizione la funzione WEEKDAY() per questo scopo, ed è sorprendentemente flessibile una volta compreso come funziona la numerazione. Per impostazione predefinita, WEEKDAY() restituisce un numero da 1 a 7 che rappresenta il giorno della settimana per una data. Il secondo argomento controlla come vengono mappati questi numeri. La versione più usata dagli sviluppatori è WEEKDAY(date, 2), che restituisce 1 per il lunedì fino a 7 per la domenica, in linea con lo standard ISO che la maggior parte dei calendari aziendali adotta.
Ecco un esempio rapido:
Data
WEEKDAY(Date, 2)
Giorno
2025-10-13
1
Monday
2025-10-14
2
Tuesday
2025-10-18
6
Saturday
2025-10-19
7
Sunday
Ora rendiamolo utile. Puoi aggiungere una colonna calcolata nella tua tabella Date per contrassegnare i weekend:
IsWeekend =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum > 5, TRUE(), FALSE())Offerto da
Ecco cosa succede:
WEEKDAY('Date'[Date], 2) ti dà il numero del giorno (1 = lunedì, …, 7 = domenica).
DayNum > 5 identifica sabato (6) e domenica (7).
La colonna restituisce TRUE per i weekend, FALSE per i giorni feriali.
Se la tua settimana non segue il classico schema lunedì–venerdì, per esempio se la tua azienda considera venerdì e sabato come weekend, puoi adattare facilmente la logica:
IsWeekend_Custom =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum IN {5, 6}, TRUE(), FALSE())Offerto da
Quella singola modifica rende il modello adatto a calendari operativi personalizzati. Dopo aver creato questa colonna, trascinala in una semplice tabella in Power BI insieme al campo Date e verifica che i giorni di weekend siano corretti.
Come creare confini di settimana personalizzati
La maggior parte dei modelli Power BI presume un calendario lunedì–domenica, ma i report reali raramente seguono una logica così pulita. Le dashboard retail, ad esempio, spesso si chiudono al venerdì; alcune organizzazioni seguono cicli sabato–venerdì. In DAX puoi creare confini di settimana personalizzati che corrispondono al tuo calendario aziendale. Vediamo come farlo in modo pulito, passo dopo passo.
Impostare una settimana che termina di venerdì
Se la tua settimana lavorativa termina di venerdì, puoi assegnare a ogni data il relativo venerdì di chiusura. La logica è semplice: prendi ogni data, trova il suo numero di giorno della settimana e spostala in avanti finché non arriva al venerdì.
WEEKDAY('Date'[Date], 2) ti dà l’indice del giorno (Monday = 1).
Calcoli la distanza di quella data dal venerdì.
Se il giorno ha già superato il venerdì (es. sabato o domenica), passa al venerdì successivo aggiungendo 7 giorni.
Questo approccio raggruppa tutte le date tra sabato e venerdì sotto la stessa settimana con chiusura al venerdì.
Per verificarlo:
Aggiungi questa colonna alla tua tabella Date.
Crea una tabella in Power BI con Date e WeekEnd_Friday.
Vedrai che ogni sequenza sabato–venerdì mappa allo stesso venerdì di chiusura.
Impostare una settimana che inizia di sabato
Se la tua settimana di reporting inizia di sabato, puoi affiancare alla formula precedente una colonna di inizio settimana. Puoi farlo con la stessa logica, ma al contrario: trova il sabato più recente rispetto a ogni data.
Funziona in modo quasi identico all’espressione precedente, ma si sposta all’indietro fino al sabato precedente.
Potresti anche trovare esempi di codice più datati che usano la funzione EARLIER() per acquisire il contesto di riga corrente in una colonna calcolata. Ad esempio:
WeekStart_Saturday =
VAR CurrentDate = EARLIER('Date'[Date])
VAR WeekdayIndex = WEEKDAY(CurrentDate, 2)
VAR DaysSinceSaturday = WeekdayIndex - 6
RETURN
CurrentDate - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)Offerto da
Nel DAX moderno non serve EARLIER() in questo scenario, dato che le colonne calcolate vengono valutate riga per riga; resta comunque utile da conoscere per modelli legacy o quando si annidano contesti di riga in iteratori.
Dopo aver aggiunto entrambe le colonne, prova a inserire WeekStart_Saturday e WeekEnd_Friday in una tabella insieme alla colonna Date. Vedrai confini di settimana chiari che seguono il ritmo del tuo business, non il calendario predefinito.
Poi, puoi usare queste date di inizio e fine settimana come chiavi di raggruppamento nelle visualizzazioni o come ancore nelle misure: perfette per calcolare totali per settimana aziendale, confronti week-over-week o allineamenti con calendari fiscali non standard.
Scegliere tra colonne e misure
Ora che hai impostato i confini di settimana personalizzati, vale la pena decidere come usarli nel modello: come colonne calcolate o come misure. Entrambe hanno il loro posto, e sapere quando usare l’una o l’altra mantiene il tuo modello Power BI efficiente e prevedibile.
Pensa alle colonne calcolate come attributi statici con cui vuoi fare slice o filtrare. Ad esempio, le colonne IsWeekend, WeekStart_Saturday o WeekEnd_Friday descrivono ogni data. Non dipendono dalle interazioni dell’utente o dai filtri; definiscono semplicemente cosa è ciascun giorno. Sono perfette per raggruppare visual, impostare relazioni o costruire gerarchie.
Al contrario, le misure sono calcoli dinamici che rispondono a filtri, slicer e contesto. Se stai riassumendo o confrontando metriche, ad esempio contando i giorni lavorativi in un intervallo selezionato o calcolando le vendite medie per settimana, ti serve una misura.
TotalSalesByWeek = SUM(Sales[Amount]) grouped by WeekStart_Saturday
In breve:
Se ti serve che il risultato sia archiviato con ogni riga (e utilizzabile in slicer o filtri), scegli una colonna.
Se ti serve un calcolo che si aggiorni con le interazioni dell’utente, scegli una misura.
Calcolare i giorni lavorativi con NETWORKDAYS()
Una volta definiti i weekend e i confini di settimana, il passo successivo è calcolare i giorni lavorativi, cioè il numero di giorni feriali tra due date, con l’opzione di escludere le festività. Power BI e DAX rendono questa operazione semplice con la funzione NETWORKDAYS(), introdotta nelle versioni recenti di DAX.
Nella sua forma più semplice, la sintassi è questa:
NETWORKDAYS(<start_date>, <end_date>[, <weekend>[, <holidays>]])Offerto da
Ecco come funziona ogni parametro:
<start_date> e <end_date> definiscono l’intervallo.
<weekend> è opzionale e ti permette di specificare quali giorni contano come weekend.
<holidays> è anch’esso opzionale — puoi passare una colonna o una tabella di date di festività da escludere dal conteggio.
Capire i codici dei weekend
L’argomento <weekend> utilizza dei codici numerici per definire quali giorni sono considerati weekend. Ecco alcune opzioni standard che probabilmente userai:
Code
Weekend Days
Description
1
Saturday, Sunday
Default (Western workweek)
7
Friday, Saturday
Common in Middle Eastern calendars
11
Sunday only
For Sunday-only closures
12
Monday only
For Monday-only non-working days
Ad esempio, se la tua settimana lavorativa va da domenica a giovedì, userai il codice 7 per il weekend venerdì–sabato.
Ecco come calcolare i giorni lavorativi tra due colonne del tuo modello:
WorkingDays_Default =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate])Offerto da
Questa formula presuppone che sabato e domenica siano weekend. Se la tua azienda segue un weekend venerdì–sabato, puoi adattarla così:
WorkingDays_FriSat =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate], 7)Offerto da
Escludere le festività
Puoi fare un passo in più escludendo le festività ufficiali archiviate in una tabella dedicata Holiday. Supponiamo che tu abbia una tabella con una colonna Holiday[Date]. Ecco come includerla:
WorkingDays_WithHolidays =
NETWORKDAYS(
'Sales'[StartDate],
'Sales'[EndDate],
1,
'Holiday'[Date]
)Offerto da
Questa impostazione fa sì che weekend e festività definite dalla tua organizzazione vengano escluse dal conteggio. È una piccola aggiunta che rende i report molto più accurati, soprattutto per la pianificazione del personale, il monitoraggio degli SLA o le dashboard operative.
Caso d’uso di esempio
Immagina che la tua azienda tenga traccia delle tempistiche dei progetti in Power BI. Ogni record ha una StartDate e una EndDate. Aggiungendo la misura WorkingDays_WithHolidays, puoi visualizzare rapidamente:
Quanti giorni lavorativi ha richiesto ogni progetto?
Quali progetti hanno attraversato weekend o festività?
Durata lavorativa media per reparto o tipologia di progetto.
Per vederla in azione, inserisci questa misura in una tabella insieme a Project Name, StartDate ed EndDate. Otterrai subito un quadro più significativo delle tempistiche basato sui giorni effettivamente lavorativi, non solo sulle differenze di data grezze.
Applicazioni pratiche nelle dashboard aziendali
Ora che hai giorni lavorativi, flag dei weekend e confini di settimana personalizzati, vediamo come si inseriscono nelle dashboard Power BI reali. La possibilità di ridefinire weekend o settimane fiscali non è solo un trucchetto tecnico: influisce direttamente su come le metriche vengono calcolate, visualizzate e capite nei vari reparti.
Chiusure per payroll e timesheet
Molte organizzazioni elaborano il payroll su un ciclo fisso sabato–venerdì o domenica–sabato. Definendo i confini di settimana in DAX puoi allineare periodi stipendiali, calcolo degli straordinari e inserimenti dei timesheet alla settimana lavorativa esatta che usa il tuo sistema HR. Per esempio, puoi calcolare le ore totali lavorate o i turni completati per settimana personalizzata, assicurando che i report payroll siano perfettamente allineati ai calendari interni anziché al calendario lunedì–domenica predefinito.
KPI operativi e monitoraggio dei servizi
I team operations e logistica spesso misurano KPI come i tempi di evasione consegne o la risoluzione degli incidenti usando solo i giorni lavorativi. Usare NETWORKDAYS() garantisce che quelle metriche riflettano la reale capacità aziendale, non i weekend in cui non si muove nulla.
Abbinare i calcoli dei giorni lavorativi alle colonne WeekStart_Saturday o WeekEnd_Friday ti consente di raggruppare i dati in base all’esatta settimana operativa che il management segue in meeting e report.
Performance retail e vendite
I retailer seguono raramente le settimane di calendario. Molti preferiscono sabato–venerdì per includere l’intero weekend di vendite in un unico blocco di reporting coerente. Modellando la tua tabella date su quel calendario, i trend di vendita del weekend restano all’interno della stessa settimana, rendendo significativi i confronti tra weekend. Questo piccolo aggiustamento evita visual “settimana su settimana” distorti e restituisce medie mobili più accurate.
Settimane fiscali personalizzate e forecasting
Alcuni team finance lavorano con settimane fiscali che iniziano a metà settimana o seguono uno schema contabile 4-4-5. I tuoi confini di settimana personalizzati si integrano facilmente.Una volta che la tabella date include colonne WeekStart e WeekEnd, misure come riconoscimento dei ricavi, tracciamento delle spese o forecasting possono essere aggregate in modo coerente, indipendentemente da quanto non convenzionale sia il tuo calendario fiscale.
Medie mobili basate sui giorni lavorativi
Quando calcoli medie mobili, soprattutto per KPI come vendite giornaliere o tassi di produzione, è meglio basarsi sui giorni lavorativi anziché sui giorni di calendario.
Per esempio, se i weekend sono esclusi usando il flag IsWeekend, una media mobile a 7 giorni rifletterà davvero una settimana lavorativa di attività, senza picchi o cali fuorvianti nei giorni non lavorativi.
In sintesi, definizioni personalizzate di settimana e logica sui giorni lavorativi avvicinano le tue dashboard Power BI a come la tua azienda opera davvero. Che tu stia monitorando chiusure payroll, lead time di spedizione o picchi di vendita nel weekend, questi pattern DAX rendono gli insight più puliti, equi e molto più azionabili.
Punti chiave da ricordare
Prima di concludere, riepiloghiamo i concetti principali per applicare efficacemente queste tecniche DAX nei tuoi progetti Power BI.
Usa colonne calcolate per classificazioni riga per riga: quando devi etichettare ogni data, ad esempio segnare i weekend, assegnare i confini di settimana o categorizzare i giorni lavorativi, le colonne calcolate sono la scelta migliore. Forniscono attributi statici che funzionano senza problemi in slicer, filtri e relazioni in tutto il modello.
Usa WEEKDAY() con attenzione e il giusto tipo di ritorno: ricorda che WEEKDAY(date, 2) inizia il conteggio di lunedì (1) e termina di domenica (7). Regolare questo parametro ti aiuta ad allineare i calcoli agli standard settimanali regionali o organizzativi. Controlla sempre il tipo di ritorno: è una delle fonti più comuni di errori “off-by-one” nella logica temporale DAX.
NETWORKDAYS() è la scelta giusta per escludere weekend e festività: questa funzione semplifica i calcoli sui giorni lavorativi, evitando filtri data complessi o cicli manuali. Combinala con il codice weekend della tua azienda e una tabella di festività per ottenere conteggi accurati che riflettano i giorni lavorativi reali, non solo gli intervalli di calendario.
Padroneggiando queste basi — strutture settimanali personalizzate, logica attenta dei giorni della settimana e conteggi precisi dei giorni lavorativi — porterai più accuratezza e flessibilità in ogni dashboard Power BI che costruisci. La prossima volta che imposti un modello date o allinei report ai calendari aziendali, questi pattern DAX dovrebbero essere in cima alla tua cassetta degli attrezzi
Errori comuni da evitare
Anche sviluppatori Power BI esperti possono incappare in insidie sottili quando lavorano con logica di date e settimane in DAX. Ecco alcuni problemi a cui prestare attenzione:
Confondere gli apici nei confronti di testo
DAX distingue tra apici singoli (') e doppi (") e usare quello sbagliato può rompere la logica, soprattutto quando si confrontano valori testuali come nomi di giorni o flag. Ad esempio:
IsWeekend = IF(WEEKDAY('Date'[Date], 2) > 5, "Weekend", "Weekday")Offerto da
Usa sempre i doppi apici per le stringhe di testo nelle funzioni
Gli apici singoli sono riservati a riferimenti a tabelle e colonne, come 'Date'[Date].
Dimenticare il contesto di riga
Questo è uno degli errori concettuali più comuni. Le colonne calcolate valutano ogni riga in modo indipendente, mentre le misure dipendono dal contesto di filtro e di valutazione. Se in una misura fai riferimento a una colonna senza aggregazione, non si comporterà come previsto perché non esiste contesto di riga. Ad esempio, IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE()) funziona come colonna calcolata, ma se vuoi che risponda dinamicamente ai filtri, devi inserirla in un iteratore come SUMX() o usarla in una misura che conti o filtri le righe.
Ignorare fusi orari o allineamento dei calendari
Quando usi dati importati con timestamp, le funzioni data di DAX operano sulla porzione di data della colonna. Se i tuoi dati attraversano fusi orari o usano aggiustamenti UTC, quei flag di weekend potrebbero spostarsi in modo inatteso. Pulisci e normalizza sempre i campi datetime in Power Query prima di applicare logica DAX.
Hardcodare la logica dei weekend
Evita di inserire logiche fisse come “sabato e domenica” direttamente in più formule. Definisci invece una variabile riutilizzabile o una tabella disconnessa che elenchi i giorni di weekend della tua organizzazione. Questo rende la manutenzione più semplice quando cambiano i calendari aziendali.
Cogliere questi piccoli problemi in anticipo può farti risparmiare ore di debug. In caso di dubbio, usa la visualizzazione Dati in Power BI per ispezionare i risultati delle colonne calcolate riga per riga: è uno dei modi più rapidi per verificare che la tua logica DAX si comporti come previsto prima di portarla in visual o misure.
Conclusione
Lavorare con weekend e confini di settimana personalizzati in DAX non è solo matematica sulle date: significa far riflettere ai tuoi modelli Power BI come la tua azienda funziona davvero. Che tu stia segnando sabato e domenica come non lavorativi, allineando la settimana fiscale da sabato a venerdì o calcolando i giorni lavorativi escludendo le festività, l’obiettivo è lo stesso: accuratezza e contesto in ogni calcolo.
Hai visto come funzioni come WEEKDAY() e NETWORKDAYS() aiutino a definire una logica di date flessibile e come colonne calcolate e misure svolgano ciascuna il proprio ruolo: una per la struttura e l’altra per l’analisi dinamica. Lungo il percorso, abbiamo esaminato casi d’uso reali, dai cutoff del payroll ai calendari retail, e imparato come evitare errori comuni in DAX, come l’uso errato degli apici o la perdita del contesto di riga.
La prossima volta che costruisci una dashboard Power BI che gestisce date, vai oltre il calendario predefinito. Personalizza la tua settimana, rendi espliciti i weekend e tratta i giorni lavorativi come metriche di prima classe, come meritano di essere. Con questi pattern DAX nella tua toolkit, i tuoi report non mostreranno solo il tempo, ma il tempo così come lo vive la tua organizzazione.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Se hai passato un po’ di tempo a lavorare con DAX, sai già che le date possono diventare complicate in fretta. Te la cavi finché qualcuno non dice: “Ehi, la nostra settimana di reporting inizia il sabato”, oppure “Possiamo evidenziare i weekend in modo diverso nella dashboard?”. All’improvviso ti ritrovi tra i tipi di ritorno di
WEEKDAY(), la logica degli offset e a spiegare perché Power BI pensa che il venerdì sia la fine della settimana quando per il tuo business non è così.A molti di noi è capitato: devi contrassegnare i weekend, calcolare i giorni lavorativi o definire confini di settimana personalizzati che non coincidono con il calendario standard. Magari il tuo magazzino lavora da domenica a giovedì, oppure il team finance vuole contare i giorni lavorativi escludendo i weekend.
Di default, DAX non gestisce tutto questo alla perfezione, ma ti fornisce i mattoni per sistemarlo. In questo articolo vedremo come contrassegnare i weekend con
WEEKDAY(), definire confini di settimana (per esempio, sabato–venerdì), calcolare i giorni lavorativi conNETWORKDAYS()o con logica condizionale e usare questi calcoli per alimentare metriche che abbiano davvero senso in Power BICapire i weekend in DAX
Partiamo dalle basi: individuare quali giorni sono weekend nel tuo dataset. DAX ti mette a disposizione la funzione
WEEKDAY()per questo scopo, ed è sorprendentemente flessibile una volta compreso come funziona la numerazione. Per impostazione predefinita,WEEKDAY()restituisce un numero da 1 a 7 che rappresenta il giorno della settimana per una data. Il secondo argomento controlla come vengono mappati questi numeri. La versione più usata dagli sviluppatori èWEEKDAY(date, 2), che restituisce1per il lunedì fino a7per la domenica, in linea con lo standard ISO che la maggior parte dei calendari aziendali adotta.Ecco un esempio rapido:
Data
WEEKDAY(Date, 2)
Giorno
2025-10-13
1
Monday
2025-10-14
2
Tuesday
2025-10-18
6
Saturday
2025-10-19
7
Sunday
Ora rendiamolo utile. Puoi aggiungere una colonna calcolata nella tua tabella
Dateper contrassegnare i weekend:Ecco cosa succede:
WEEKDAY('Date'[Date], 2)ti dà il numero del giorno (1= lunedì, …,7= domenica).DayNum > 5identifica sabato (6) e domenica (7).La colonna restituisce
TRUEper i weekend,FALSEper i giorni feriali.Se la tua settimana non segue il classico schema lunedì–venerdì, per esempio se la tua azienda considera venerdì e sabato come weekend, puoi adattare facilmente la logica:
Quella singola modifica rende il modello adatto a calendari operativi personalizzati. Dopo aver creato questa colonna, trascinala in una semplice tabella in Power BI insieme al campo
Datee verifica che i giorni di weekend siano corretti.Come creare confini di settimana personalizzati
La maggior parte dei modelli Power BI presume un calendario lunedì–domenica, ma i report reali raramente seguono una logica così pulita. Le dashboard retail, ad esempio, spesso si chiudono al venerdì; alcune organizzazioni seguono cicli sabato–venerdì. In DAX puoi creare confini di settimana personalizzati che corrispondono al tuo calendario aziendale. Vediamo come farlo in modo pulito, passo dopo passo.
Impostare una settimana che termina di venerdì
Se la tua settimana lavorativa termina di venerdì, puoi assegnare a ogni data il relativo venerdì di chiusura. La logica è semplice: prendi ogni data, trova il suo numero di giorno della settimana e spostala in avanti finché non arriva al venerdì.
Ecco la formula per la colonna calcolata:
Ecco cosa fa:
WEEKDAY('Date'[Date], 2)ti dà l’indice del giorno (Monday = 1).Calcoli la distanza di quella data dal venerdì.
Se il giorno ha già superato il venerdì (es. sabato o domenica), passa al venerdì successivo aggiungendo 7 giorni.
Questo approccio raggruppa tutte le date tra sabato e venerdì sotto la stessa settimana con chiusura al venerdì.
Per verificarlo:
Aggiungi questa colonna alla tua tabella Date.
Crea una tabella in Power BI con
DateeWeekEnd_Friday.Vedrai che ogni sequenza sabato–venerdì mappa allo stesso venerdì di chiusura.
Impostare una settimana che inizia di sabato
Se la tua settimana di reporting inizia di sabato, puoi affiancare alla formula precedente una colonna di inizio settimana. Puoi farlo con la stessa logica, ma al contrario: trova il sabato più recente rispetto a ogni data.
Ecco la colonna DAX di accompagnamento:
Funziona in modo quasi identico all’espressione precedente, ma si sposta all’indietro fino al sabato precedente.
Potresti anche trovare esempi di codice più datati che usano la funzione
EARLIER()per acquisire il contesto di riga corrente in una colonna calcolata. Ad esempio:Nel DAX moderno non serve
EARLIER()in questo scenario, dato che le colonne calcolate vengono valutate riga per riga; resta comunque utile da conoscere per modelli legacy o quando si annidano contesti di riga in iteratori.Dopo aver aggiunto entrambe le colonne, prova a inserire
WeekStart_SaturdayeWeekEnd_Fridayin una tabella insieme alla colonnaDate. Vedrai confini di settimana chiari che seguono il ritmo del tuo business, non il calendario predefinito.Poi, puoi usare queste date di inizio e fine settimana come chiavi di raggruppamento nelle visualizzazioni o come ancore nelle misure: perfette per calcolare totali per settimana aziendale, confronti week-over-week o allineamenti con calendari fiscali non standard.
Scegliere tra colonne e misure
Ora che hai impostato i confini di settimana personalizzati, vale la pena decidere come usarli nel modello: come colonne calcolate o come misure. Entrambe hanno il loro posto, e sapere quando usare l’una o l’altra mantiene il tuo modello Power BI efficiente e prevedibile.
Pensa alle colonne calcolate come attributi statici con cui vuoi fare slice o filtrare. Ad esempio, le colonne
IsWeekend,WeekStart_SaturdayoWeekEnd_Fridaydescrivono ogni data. Non dipendono dalle interazioni dell’utente o dai filtri; definiscono semplicemente cosa è ciascun giorno. Sono perfette per raggruppare visual, impostare relazioni o costruire gerarchie.Al contrario, le misure sono calcoli dinamici che rispondono a filtri, slicer e contesto. Se stai riassumendo o confrontando metriche, ad esempio contando i giorni lavorativi in un intervallo selezionato o calcolando le vendite medie per settimana, ti serve una misura.
Ecco un rapido confronto da tenere a mente:
Use Case
Type
Example
Identify weekends or week boundaries
Calculated column
IsWeekend = IF(WEEKDAY('Date'[Date],2)>5,TRUE(),FALSE())Slice visuals by custom week ranges
Calculated column
WeekStart_Saturday,WeekEnd_FridayCount working days in current filter
Measure
WorkingDays = COUNTROWS(FILTER('Date', 'Date'[IsWeekend] = FALSE()))Compare total sales between custom weeks
Measure
TotalSalesByWeek = SUM(Sales[Amount])grouped byWeekStart_SaturdayIn breve:
Calcolare i giorni lavorativi con NETWORKDAYS()
Una volta definiti i weekend e i confini di settimana, il passo successivo è calcolare i giorni lavorativi, cioè il numero di giorni feriali tra due date, con l’opzione di escludere le festività. Power BI e DAX rendono questa operazione semplice con la funzione
NETWORKDAYS(), introdotta nelle versioni recenti di DAX.Nella sua forma più semplice, la sintassi è questa:
Ecco come funziona ogni parametro:
<start_date>e<end_date>definiscono l’intervallo.<weekend>è opzionale e ti permette di specificare quali giorni contano come weekend.<holidays>è anch’esso opzionale — puoi passare una colonna o una tabella di date di festività da escludere dal conteggio.Capire i codici dei weekend
L’argomento
<weekend>utilizza dei codici numerici per definire quali giorni sono considerati weekend. Ecco alcune opzioni standard che probabilmente userai:Code
Weekend Days
Description
1
Saturday, Sunday
Default (Western workweek)
7
Friday, Saturday
Common in Middle Eastern calendars
11
Sunday only
For Sunday-only closures
12
Monday only
For Monday-only non-working days
Ad esempio, se la tua settimana lavorativa va da domenica a giovedì, userai il codice
7per il weekend venerdì–sabato.Ecco come calcolare i giorni lavorativi tra due colonne del tuo modello:
Questa formula presuppone che sabato e domenica siano weekend. Se la tua azienda segue un weekend venerdì–sabato, puoi adattarla così:
Escludere le festività
Puoi fare un passo in più escludendo le festività ufficiali archiviate in una tabella dedicata
Holiday. Supponiamo che tu abbia una tabella con una colonnaHoliday[Date]. Ecco come includerla:Questa impostazione fa sì che weekend e festività definite dalla tua organizzazione vengano escluse dal conteggio. È una piccola aggiunta che rende i report molto più accurati, soprattutto per la pianificazione del personale, il monitoraggio degli SLA o le dashboard operative.
Caso d’uso di esempio
Immagina che la tua azienda tenga traccia delle tempistiche dei progetti in Power BI. Ogni record ha una
StartDatee unaEndDate. Aggiungendo la misuraWorkingDays_WithHolidays, puoi visualizzare rapidamente:Per vederla in azione, inserisci questa misura in una tabella insieme a
Project Name,StartDateedEndDate. Otterrai subito un quadro più significativo delle tempistiche basato sui giorni effettivamente lavorativi, non solo sulle differenze di data grezze.Applicazioni pratiche nelle dashboard aziendali
Ora che hai giorni lavorativi, flag dei weekend e confini di settimana personalizzati, vediamo come si inseriscono nelle dashboard Power BI reali. La possibilità di ridefinire weekend o settimane fiscali non è solo un trucchetto tecnico: influisce direttamente su come le metriche vengono calcolate, visualizzate e capite nei vari reparti.
Chiusure per payroll e timesheet
Molte organizzazioni elaborano il payroll su un ciclo fisso sabato–venerdì o domenica–sabato. Definendo i confini di settimana in DAX puoi allineare periodi stipendiali, calcolo degli straordinari e inserimenti dei timesheet alla settimana lavorativa esatta che usa il tuo sistema HR. Per esempio, puoi calcolare le ore totali lavorate o i turni completati per settimana personalizzata, assicurando che i report payroll siano perfettamente allineati ai calendari interni anziché al calendario lunedì–domenica predefinito.
KPI operativi e monitoraggio dei servizi
I team operations e logistica spesso misurano KPI come i tempi di evasione consegne o la risoluzione degli incidenti usando solo i giorni lavorativi. Usare
NETWORKDAYS()garantisce che quelle metriche riflettano la reale capacità aziendale, non i weekend in cui non si muove nulla.Abbinare i calcoli dei giorni lavorativi alle colonne
WeekStart_SaturdayoWeekEnd_Fridayti consente di raggruppare i dati in base all’esatta settimana operativa che il management segue in meeting e report.Performance retail e vendite
I retailer seguono raramente le settimane di calendario. Molti preferiscono sabato–venerdì per includere l’intero weekend di vendite in un unico blocco di reporting coerente. Modellando la tua tabella date su quel calendario, i trend di vendita del weekend restano all’interno della stessa settimana, rendendo significativi i confronti tra weekend. Questo piccolo aggiustamento evita visual “settimana su settimana” distorti e restituisce medie mobili più accurate.
Settimane fiscali personalizzate e forecasting
Alcuni team finance lavorano con settimane fiscali che iniziano a metà settimana o seguono uno schema contabile 4-4-5. I tuoi confini di settimana personalizzati si integrano facilmente.Una volta che la tabella date include colonne
WeekStarteWeekEnd, misure come riconoscimento dei ricavi, tracciamento delle spese o forecasting possono essere aggregate in modo coerente, indipendentemente da quanto non convenzionale sia il tuo calendario fiscale.Medie mobili basate sui giorni lavorativi
Quando calcoli medie mobili, soprattutto per KPI come vendite giornaliere o tassi di produzione, è meglio basarsi sui giorni lavorativi anziché sui giorni di calendario.
Per esempio, se i weekend sono esclusi usando il flag
IsWeekend, una media mobile a 7 giorni rifletterà davvero una settimana lavorativa di attività, senza picchi o cali fuorvianti nei giorni non lavorativi.In sintesi, definizioni personalizzate di settimana e logica sui giorni lavorativi avvicinano le tue dashboard Power BI a come la tua azienda opera davvero. Che tu stia monitorando chiusure payroll, lead time di spedizione o picchi di vendita nel weekend, questi pattern DAX rendono gli insight più puliti, equi e molto più azionabili.
Punti chiave da ricordare
Prima di concludere, riepiloghiamo i concetti principali per applicare efficacemente queste tecniche DAX nei tuoi progetti Power BI.
Usa colonne calcolate per classificazioni riga per riga: quando devi etichettare ogni data, ad esempio segnare i weekend, assegnare i confini di settimana o categorizzare i giorni lavorativi, le colonne calcolate sono la scelta migliore. Forniscono attributi statici che funzionano senza problemi in slicer, filtri e relazioni in tutto il modello.
Usa
WEEKDAY()con attenzione e il giusto tipo di ritorno: ricorda cheWEEKDAY(date, 2)inizia il conteggio di lunedì (1) e termina di domenica (7). Regolare questo parametro ti aiuta ad allineare i calcoli agli standard settimanali regionali o organizzativi. Controlla sempre il tipo di ritorno: è una delle fonti più comuni di errori “off-by-one” nella logica temporale DAX.NETWORKDAYS()è la scelta giusta per escludere weekend e festività: questa funzione semplifica i calcoli sui giorni lavorativi, evitando filtri data complessi o cicli manuali. Combinala con il codice weekend della tua azienda e una tabella di festività per ottenere conteggi accurati che riflettano i giorni lavorativi reali, non solo gli intervalli di calendario.Padroneggiando queste basi — strutture settimanali personalizzate, logica attenta dei giorni della settimana e conteggi precisi dei giorni lavorativi — porterai più accuratezza e flessibilità in ogni dashboard Power BI che costruisci. La prossima volta che imposti un modello date o allinei report ai calendari aziendali, questi pattern DAX dovrebbero essere in cima alla tua cassetta degli attrezzi
Errori comuni da evitare
Anche sviluppatori Power BI esperti possono incappare in insidie sottili quando lavorano con logica di date e settimane in DAX. Ecco alcuni problemi a cui prestare attenzione:
Confondere gli apici nei confronti di testo
DAX distingue tra apici singoli (') e doppi (") e usare quello sbagliato può rompere la logica, soprattutto quando si confrontano valori testuali come nomi di giorni o flag. Ad esempio:
Usa sempre i doppi apici per le stringhe di testo nelle funzioni
Gli apici singoli sono riservati a riferimenti a tabelle e colonne, come
'Date'[Date].Dimenticare il contesto di riga
Questo è uno degli errori concettuali più comuni. Le colonne calcolate valutano ogni riga in modo indipendente, mentre le misure dipendono dal contesto di filtro e di valutazione. Se in una misura fai riferimento a una colonna senza aggregazione, non si comporterà come previsto perché non esiste contesto di riga. Ad esempio,
IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE())funziona come colonna calcolata, ma se vuoi che risponda dinamicamente ai filtri, devi inserirla in un iteratore come SUMX() o usarla in una misura che conti o filtri le righe.Ignorare fusi orari o allineamento dei calendari
Quando usi dati importati con timestamp, le funzioni data di DAX operano sulla porzione di data della colonna. Se i tuoi dati attraversano fusi orari o usano aggiustamenti UTC, quei flag di weekend potrebbero spostarsi in modo inatteso. Pulisci e normalizza sempre i campi datetime in Power Query prima di applicare logica DAX.
Hardcodare la logica dei weekend
Evita di inserire logiche fisse come “sabato e domenica” direttamente in più formule. Definisci invece una variabile riutilizzabile o una tabella disconnessa che elenchi i giorni di weekend della tua organizzazione. Questo rende la manutenzione più semplice quando cambiano i calendari aziendali.
Cogliere questi piccoli problemi in anticipo può farti risparmiare ore di debug. In caso di dubbio, usa la visualizzazione Dati in Power BI per ispezionare i risultati delle colonne calcolate riga per riga: è uno dei modi più rapidi per verificare che la tua logica DAX si comporti come previsto prima di portarla in visual o misure.
Conclusione
Lavorare con weekend e confini di settimana personalizzati in DAX non è solo matematica sulle date: significa far riflettere ai tuoi modelli Power BI come la tua azienda funziona davvero. Che tu stia segnando sabato e domenica come non lavorativi, allineando la settimana fiscale da sabato a venerdì o calcolando i giorni lavorativi escludendo le festività, l’obiettivo è lo stesso: accuratezza e contesto in ogni calcolo.
Hai visto come funzioni come
WEEKDAY()eNETWORKDAYS()aiutino a definire una logica di date flessibile e come colonne calcolate e misure svolgano ciascuna il proprio ruolo: una per la struttura e l’altra per l’analisi dinamica. Lungo il percorso, abbiamo esaminato casi d’uso reali, dai cutoff del payroll ai calendari retail, e imparato come evitare errori comuni in DAX, come l’uso errato degli apici o la perdita del contesto di riga.La prossima volta che costruisci una dashboard Power BI che gestisce date, vai oltre il calendario predefinito. Personalizza la tua settimana, rendi espliciti i weekend e tratta i giorni lavorativi come metriche di prima classe, come meritano di essere. Con questi pattern DAX nella tua toolkit, i tuoi report non mostreranno solo il tempo, ma il tempo così come lo vive la tua organizzazione.