# makeweekdate - Funzione per script e grafici

Questa funzione restituisce una data calcolata dall'anno, dal numero di settimana e dal giorno della settimana.

Sintassi:

MakeWeekDate(weekyear [, week [, weekday [, first\_week\_day [, broken\_weeks [, reference\_day]]]]])

Tipo di dati restituiti: duale

La funzione `makeweekdate()` è disponibile sia come script che come grafico. La funzione calcola la data in base ai parametri inseriti nella funzione.

Argomenti

| Argomento | Descrizione |
| --- | --- |
| weekyear | L'anno definito dalla funzione `WeekYear()` per la data specifica, ovvero l'anno a cui appartiene il numero della settimana.<br><br>Nota informaticaIn alcuni casi l'anno della settimana può essere diverso dall'anno solare, ad esempio se la settimana 1 inizia già a dicembre dell'anno precedente. |
| week | Il numero della settimana definito dalla funzione `Week()` per la data specifica.<br><br>Se non viene dichiarato alcun numero di settimana, viene utilizzato -1. |
| weekday | Il giorno della settimana definito dalla funzione `WeekDay()` per la data in questione. 0 è il primo giorno della settimana e 6 è l'ultimo giorno della settimana.<br><br>Se non si indica alcun giorno della settimana, verrà utilizzato il valore 0.<br><br>Nota informaticaAnche se 0 significa sempre primo giorno della settimana e 6 è sempre l'ultimo, il parametro first\_week\_day determina a quali giorni della settimana corrisponde. Se omesso, viene utilizzato il valore della variabile FirstWeekDay.<br><br>Se si utilizzano settimane parziali, insieme a una combinazione impossibile di parametri, si può ottenere un risultato che non appartiene all'anno scelto.<br><br>Esempio:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Restituisce "27 dicembre 2020", poiché questo giorno è il primo (la domenica) della settimana specificata. Il 1° gennaio 2021 era un venerdì. |
| first\_week\_day | Specifica il giorno di inizio della settimana. Se omesso, viene utilizzato il valore della variabile FirstWeekDay.<br><br>I valori possibili per first\_week\_day sono 0 per lunedì, 1 per martedì, 2 per mercoledì, 3 per giovedì, 4 per venerdì, 5 per sabato e 6 per domenica.<br><br>Per maggiori informazioni sulle variabili di sistema, vedere [FirstWeekDay](https://help.qlik.com/it-IT/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Se non si specifica broken\_weeks, il valore della variabile BrokenWeeks verrà utilizzato per definire se le settimane sono parziali o meno.<br><br>Per maggiori informazioni sulle variabili di sistema, vedere [BrokenWeeks](https://help.qlik.com/it-IT/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm). |
| reference\_day | Se non si specifica reference\_day, il valore della variabile ReferenceDay verrà utilizzato per definire quale giorno di gennaio impostare come giorno di riferimento per definire la settimana 1.<br><br>Per maggiori informazioni sulle variabili di sistema, vedere [ReferenceDay](https://help.qlik.com/it-IT/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm). |

## Casi di utilizzo

La funzione `makeweekdate()` viene comunemente utilizzata nello script per la generazione di dati per generare un elenco di date o per costruire date quando l'anno, la settimana e il giorno della settimana sono forniti nei dati di input.

Gli esempi seguenti presuppongono:

```
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
```

Esempi di funzioni

| Esempio | Risultato |
| --- | --- |
| `makeweekdate(2014,6,6)` | restituisce 02/09/2014 |
| `makeweekdate(2014,6,1)` | restituisce 02/04/2014 |
| `makeweekdate(2014,6)` | restituisce 02/03/2014 (viene utilizzato il giorno della settimana 0) |

## Impostazioni locali

Se non diversamente specificato, gli esempi di questo argomento utilizzano il seguente formato di data: MM/GG/AAAA. Il formato della data viene specificato nell'istruzione `SET DateFormat` nello script di caricamento dei dati. La formattazione predefinita della data potrebbe essere diversa nel proprio sistema, a causa delle impostazioni regionali e di altri fattori. È possibile modificare i formati degli esempi seguenti in base alle proprie esigenze. In alternativa, è possibile modificare i formati nel proprio script di caricamento per adattarli a questi esempi.

Le impostazioni regionali predefinite delle app si basano sulle impostazioni regionali del sistema del computer o del server in cui risulta installato Qlik Sense. Se il server Qlik Sense a cui si accede è impostato in Svezia, l'editor caricamento dati utilizzerà le impostazioni regionali svedesi per date, ora e valuta. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Sense. Qlik Sense verrà visualizzato nella stessa lingua del browser utilizzato.

## Esempio 1 – giorno incluso

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati contenente il totale delle vendite settimanali per il 2022 in una tabella chiamata `Sales`.

* Le date delle transazioni sono fornite in due campi: `year`, `week` e `sales`.

* Un caricamento precedente, utilizzato per creare una misura, `end_of_week`, utilizza la funzione `makeweekdate()` per restituire la data del venerdì di quella settimana nel formato MM/GG/AAAA.

Per dimostrare che la data restituita è un venerdì, l'espressione `end_of_week` viene anche racchiusa nella funzione `weekday()` per mostrare il giorno della settimana.

Script di caricamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week,4) as end_of_week,
        weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Tabella dei risultati

| anno\_transazione | settimana\_transazione | end\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Ven |
| 2022 | 02 | 01/14/2022 | Ven |
| 2022 | 03 | 01/21/2022 | Ven |
| 2022 | 04 | 01/28/2022 | Ven |
| 2022 | 05 | 02/04/2022 | Ven |
| 2022 | 06 | 02/11/2022 | Ven |
| 2022 | 07 | 18/02/2022 | Ven |

Il campo '`end_of_week`' viene creato nell'istruzione di caricamento precedente utilizzando la funzione `makeweekdate()`. I campi `transaction_year`, `transaction_week` vengono passati alla funzione come argomenti dell'anno e della settimana. Il valore 4 viene utilizzato per l'argomento giorno.

La funzione combina e converte questi valori in un campo data, restituendo i risultati nel formato della variabile di sistema `DateFormat`.

La funzione `makeweekdate()` e i relativi argomenti sono anche avvolti in una funzione `weekday()` per restituire il campo `week_day`; e come si può vedere nella tabella precedente, il campo `week_day` mostra che queste date si verificano di venerdì.

## Esempio 2 - giorno escluso

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati contenente i totali delle vendite settimanali per il 2022 in una tabella chiamata Sales.

* Le date delle transazioni sono fornite in due campi: year, week e sales.

* Un caricamento precedente, che viene sfruttato per creare una misura, first\_day\_of\_week, utilizzando la funzione makeweekdate(). Questo restituirà la data del lunedì di quella settimana nel formato MM/GG/AAAA.

Per dimostrare che la data restituita è un lunedì, l'espressione first\_day\_of\_week viene anche racchiusa nella funzione weekday() per mostrare il giorno della settimana.

Script di caricamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week) as first_day_of_week,
        weekday(makeweekdate(transaction_year, transaction_week)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Tabella dei risultati

| anno\_transazione | settimana\_transazione | primo\_giorno\_della\_settimana | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/03/2022 | Mon |
| 2022 | 02 | 01/10/2022 | Mon |
| 2022 | 03 | 01/17/2022 | Mon |
| 2022 | 04 | 01/24/2022 | Mon |
| 2022 | 05 | 01/31/2022 | Mon |
| 2022 | 06 | 02/07/2022 | Mon |
| 2022 | 07 | 02/14/2022 | Mon |

Il campo first\_day\_of\_week viene creato nell'istruzione LOAD precedente utilizzando la funzione makeweekdate(). I parametri transaction\_year e transaction\_week vengono passati come argomenti della funzione, mentre il parametro giorno viene lasciato vuoto.

La funzione combina e converte questi valori in un campo data, restituendo i risultati nel formato della variabile di sistema DateFormat.

La funzione makeweekdate() e i relativi argomenti sono anche avvolti in una funzione weekday() che restituisce il campo week\_day. Come si può vedere nella tabella precedente, il campo week\_day restituisce Lunedì in tutti i casi, poiché questo parametro è stato lasciato vuoto nella funzione makeweekdate(), che ha come valore predefinito 0 (primo giorno della settimana), e il primo giorno della settimana è impostato su Lunedì dalla variabile di sistema FirstWeekDay.

## Esempio 3 - Esempio di oggetto grafico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Script di caricamento ed espressione del grafico

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati contenente i totali delle vendite settimanali per il 2022 in una tabella chiamata Sales.

* Le date delle transazioni sono fornite in due campi: year, week e sales.

In questo esempio, si utilizzerà un oggetto grafico per creare una misura equivalente al calcolo end\_of\_week del primo esempio. Questa misura utilizzerà la funzione makeweekdate() per restituire la data del venerdì di quella settimana nel formato MM/GG/AAAA.

Per dimostrare che la data restituita è un venerdì, viene creata una seconda misura per restituire il giorno della settimana.

Script di caricamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Risultati

Procedere come indicato di seguito:

1. Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

   * transaction\_year

   * transaction\_week

2. Per eseguire il calcolo equivalente a quello del end\_of\_weekcampo del primo esempio, creare la seguente misura:

   =makeweekdate(transaction\_year,transaction\_week,4)

3. Per calcolare il giorno della settimana per ogni transazione, creare la seguente misura:

   =weekday(makeweekdate(transaction\_year,transaction\_week,4))

Tabella dei risultati

| anno\_transazione | settimana\_transazione | =makeweekdate(anno\_transazione,settimana\_transazione,4) | =GIORNO.SETTIMANA(makeweekdate(anno\_transazione,settimana\_transazione,4)) |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Ven |
| 2022 | 02 | 01/14/2022 | Ven |
| 2022 | 03 | 01/21/2022 | Ven |
| 2022 | 04 | 01/28/2022 | Ven |
| 2022 | 05 | 02/04/2022 | Ven |
| 2022 | 06 | 02/11/2022 | Ven |
| 2022 | 07 | 18/02/2022 | Ven |

Un campo equivalente a end\_of\_week viene creato nell'oggetto grafico come misura utilizzando la funzione makeweekdate(). I campi transaction\_year e transaction\_week vengono passati come argomenti dell'anno e della settimana. Il valore 4 viene utilizzato per l'argomento giorno.

La funzione combina e converte questi valori in un campo data, restituendo i risultati nel formato della variabile di sistema DateFormat.

Anche la funzione makeweekdate() e i relativi argomenti sono disposti in una funzione weekday() per restituire un calcolo equivalente a quello del campo week\_day del primo esempio. Come si può vedere nella tabella precedente, l'ultima colonna a destra mostra che queste date si verificano di venerdì.

## Esempio 4 – Scenario

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.htm)

#### Script di caricamento ed espressione del grafico

Panoramica

In questo esempio, si crea un elenco di date contenente tutti i venerdì dell'anno 2022.

Aprire l'Editor di caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.

Script di caricamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Calendar:
    load
	    *,
        weekday(date) as weekday
    where year(date)=2022;
load
    makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
```

Risultati

Tabella dei risultati

| date | giorno feriale |
| --- | --- |
| 01/07/2022 | Ven |
| 01/14/2022 | Ven |
| 01/21/2022 | Ven |
| 01/28/2022 | Ven |
| 02/04/2022 | Ven |
| 02/11/2022 | Ven |
| 18/02/2022 | Ven |
| 02/25/2022 | Ven |
| 03/04/2022 | Ven |
| 03/11/2022 | Ven |
| 03/18/2022 | Ven |
| 03/25/2022 | Ven |
| 04/01/2022 | Ven |
| 04/08/2022 | Ven |
| 04/15/2022 | Ven |
| 04/22/2022 | Ven |
| 04/29/2022 | Ven |
| 05/06/2022 | Ven |
| 05/13/2022 | Ven |
| 05/20/2022 | Ven |
| 05/27/2022 | Ven |
| 06/03/2022 | Ven |
| 06/10/2022 | Ven |
| 06/17/2022 | Ven |
| + altre 27 righe |  |

La funzione makeweekdate() trova ogni venerdì del 2022. L'utilizzo di un parametro di settimana pari a -2 garantisce che non vengano perse delle date. Infine, un caricamento precedente crea un campo weekday aggiuntivo per chiarezza, per mostrare che ogni valore date è un venerdì.