# 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/cloud-services/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/cloud-services/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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm). |

## Quando usare makeweekdate

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/DD/YYYY. 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. Per ulteriori informazioni, vedere [Modifica delle impostazioni internazionali per applicazioni e script](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Le impostazioni regionali predefinite nelle applicazioni si basano sul profilo utente. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Cloud. Qlik Cloud verrà visualizzato nella stessa lingua del browser utilizzato.

Se si è un creatore di applicazioni, è possibile impostare la regione predefinita per le applicazioni che si creano. Per ulteriori informazioni, vedere [Regolazione delle impostazioni internazionali preferite per la creazione di app e script in Qlik Cloud Analytics](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Esempio 1 – giorno incluso

[](https://help.qlik.com/en-US/cloud-services/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/cloud-services/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/cloud-services/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/cloud-services/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ì.