Vai al contenuto principale

Weekend in DAX: trova i weekend e i confini della settimana in Power BI

Migliora le tue dashboard Power BI con formule DAX per weekend e confini della settimana.
· 12 min leggi

Scopri con l'IA

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())

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())

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ì.

Ecco la formula per la colonna calcolata:

WeekEnd_Friday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2)        // Monday = 1, Sunday = 7
VAR DaysToFriday = 5 - WeekdayIndex                // 5 represents Friday
RETURN
'Date'[Date] + IF(DaysToFriday < 0, DaysToFriday + 7, DaysToFriday)

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 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.

Ecco la colonna DAX di accompagnamento:

WeekStart_Saturday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2)       // Monday = 1, Sunday = 7
VAR DaysSinceSaturday = WeekdayIndex - 6          // 6 represents Saturday
RETURN
'Date'[Date] - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)

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)

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.

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_Friday

Count 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 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>]])

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])

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)

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]
)

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")

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.

Oluseye Jeremiah

Autore

Oluseye Jeremiah

Technical writer specializzato in AI, ML e data science: rende idee complesse chiare e accessibili.

Argomenti

Correlato