# makeweekdate Fonction de script et de graphique

Cette fonction renvoie une date calculée à partir de l'année, du numéro de semaine et du jour de la semaine.

Syntaxe :

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

Type de données renvoyé : double

La fonction `makeweekdate()` est disponible comme fonction de script et de graphique. La fonction calculera la date en fonction des paramètres transmis dans la fonction.

Arguments

| Argument | Description |
| --- | --- |
| weekyear | Année telle que définie par la fonction `WeekYear()` pour la date spécifique, à savoir, l'année à laquelle appartient le numéro de semaine.<br><br>Note InformationsL'année constituée de semaines peut, dans certains cas, être différente de l'année dite calendaire, par exemple, si la semaine 1 commence au mois de décembre de l'année précédente. |
| week | Numéro de semaine tel que défini par la fonction `Week()` pour la date spécifique.<br><br>Si aucun numéro de semaine n'est spécifié, le numéro 1 est utilisé. |
| weekday | Jour de la semaine tel que défini par la fonction `WeekDay()` pour la date en question. 0 est le premier jour de la semaine et 6 le dernier.<br><br>Si aucun jour de la semaine n'est spécifié, 0 est utilisé.<br><br>Note InformationsMême si 0 indique toujours le premier jour de la semaine et 6 le dernier, les jours de la semaine auxquels ces numéros correspondent sont déterminés par le paramètre first\_week\_day. S'il est omis, c'est la valeur de la variable FirstWeekDay qui est utilisée.<br><br>En cas d'utilisation de semaine interrompues, avec une combinaison de paramètres impossible, le résultat peut ne pas faire partie de l'année sélectionnée.<br><br>Exemple :<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Renvoie ‘Dec 27 2020’, car ce jour-là est le premier jour (le dimanche) de la semaine spécifiée. Jan 1 2021 était un vendredi. |
| first\_week\_day | Spécifie le jour où débute la semaine. S'il est omis, c'est la valeur de la variable FirstWeekDay qui est utilisée.<br><br>Les valeurs possibles de first\_week\_day sont 0 pour lundi, 1 pour mardi, 2 pour mercredi, 3 pour jeudi, 4 pour vendredi, 5 pour samedi et 6 pour dimanche.<br><br>Pour plus d'informations sur la variable système, voir [FirstWeekDay](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Si vous ne précisez pas la variable broken\_weeks, la valeur de la variable BrokenWeeks est utilisée pour définir si les semaines sont interrompues ou non.<br><br>Pour plus d'informations sur la variable système, voir [BrokenWeeks](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm). |
| reference\_day | Si vous ne précisez pas la variable reference\_day, la valeur de la variable ReferenceDay est utilisée pour spécifier le jour du mois de janvier à définir comme jour de référence pour déterminer la semaine 1.<br><br>Pour plus d'informations sur la variable système, voir [ReferenceDay](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm). |

## Cas d'utilisation de makeweekdate

La fonction `makeweekdate()` est généralement utilisée dans le script pour la génération de données afin de produire une liste de dates, ou pour créer des dates lorsque l'année, la semaine et le jour de la semaine sont fournis dans les données d'entrée.

Les exemples suivants supposent :

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

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `makeweekdate(2014,6,6)` | renvoie 02/09/2014 |
| `makeweekdate(2014,6,1)` | renvoie 02/04/2014 |
| `makeweekdate(2014,6)` | renvoie 02/03/2014 (en supposant l'utilisation du jour de la semaine 0). |

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/DD/YYYY. Le format de date est indiqué dans l'instruction `SET DateFormat` de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples. Pour plus d'informations, consultez [Modification des paramètres régionaux des applications et des scripts](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Les paramètres régionaux par défaut des applications sont basés sur le profil utilisateur. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Cloud. Qlik Cloud sera affiché dans la même langue que celle du navigateur que vous utilisez.

Si vous êtes un créateur d'applications, vous pouvez définir la région par défaut des applications que vous créez. Pour plus d'informations, consultez [Sélection des paramètres régionaux de votre choix pour la création d'applications et de scripts dans Qlik Cloud Analytics](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Exemple 1 – jour inclus

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données contenant le total des ventes hebdomadaires pour l'année 2022 dans une table appelée `Sales`.

* Dates de transaction fournies sur trois champs : `year`, `week` et `sales`.

* Instruction preceding load, utilisée pour créer une mesure, `end_of_week`, via la fonction `makeweekdate()`, pour renvoyer la date du vendredi de cette semaine-là au format MM/DD/YYYY.

Pour prouver que la date renvoyée est un vendredi, l'expression `end_of_week` est également imbriquée dans la fonction `weekday()` pour afficher le jour de la semaine.

Script de chargement

```
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
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Tableau de résultats

| transaction\_year | transaction\_week | end\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Fri |
| 2022 | 02 | 01/14/2022 | Fri |
| 2022 | 03 | 01/21/2022 | Fri |
| 2022 | 04 | 01/28/2022 | Fri |
| 2022 | 05 | 02/04/2022 | Fri |
| 2022 | 06 | 02/11/2022 | Fri |
| 2022 | 07 | 02/18/2022 | Fri |

Le champ `end_of_week` est créé dans l'instruction preceding load à l'aide de la fonction `makeweekdate()`. Les champs `transaction_year` et `transaction_week` sont transmis via la fonction comme arguments year (année) et week (semaine). Une valeur 4 est utilisée pour l'argument day (jour).

La fonction combine ensuite ces valeurs et les convertit en un champ date, renvoyant les résultats au format de la variable système `DateFormat`.

La fonction `makeweekdate()` et ses arguments sont également imbriqués dans une fonction `weekday()` pour renvoyer le champ `week_day` ; et, comme indiqué dans le tableau ci-dessus, le champ `week_day` montre que ces dates ont lieu un vendredi.

## Exemple 2 – jour exclu

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données contenant les totaux des ventes hebdomadaires pour l'année 2022 dans une table appelée Sales.

* Dates de transaction fournies sur trois champs : year, week et sales.

* Chargement précédent utilisé pour créer une mesure, first\_day\_of\_week, via la fonction makeweekdate(). Cela renverra la date du lundi de cette semaine-là au format MM/DD/YYYY.

Pour prouver que la date renvoyée est un lundi, l'expression first\_day\_of\_week est également imbriquée dans la fonction weekday() pour afficher le jour de la semaine.

Script de chargement

```
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
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Tableau de résultats

| transaction\_year | transaction\_week | first\_day\_of\_week | 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 |

Le champ first\_day\_of\_week est créé dans l'instruction LOAD précédente à l'aide de la fonction makeweekdate(). Les paramètres transaction\_year et transaction\_week sont transmis comme arguments de la fonction et le paramètre day (jour) est laissé vide.

La fonction combine ensuite ces valeurs et les convertit en un champ date, renvoyant les résultats au format de la variable système DateFormat.

La fonction makeweekdate() et ses arguments sont également imbriqués dans une fonction weekday() pour renvoyer le champ week\_day. Comme indiqué dans le tableau ci-dessus, le champ week\_day renvoie Monday (Lundi) dans tous les cas, car ce paramètre a été laissé vide dans la fonction makeweekdate(), qui, par défaut, prend la valeur 0 (premier jour de la semaine), et le premier jour de la semaine est défini sur Monday par la variable système FirstWeekDay.

## Exemple 3 – exemple objet graphique

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

#### Script de chargement et expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données contenant les totaux des ventes hebdomadaires pour l'année 2022 dans une table appelée Sales.

* Dates de transaction fournies sur trois champs : year, week et sales.

Dans cet exemple, un objet graphique sera utilisé pour créer une mesure équivalente au calcul end\_of\_week du premier exemple. Cette mesure utilisera la fonction makeweekdate() pour renvoyer la date du vendredi de cette semaine-là au format MM/DD/YYYY.

Pour prouver que la date renvoyée est un vendredi, une deuxième mesure est créée pour renvoyer le jour de la semaine.

Script de chargement

```
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
];
```

Résultats

Procédez comme suit :

1. Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

   * transaction\_year

   * transaction\_week

2. Pour effectuer le calcul équivalent à celui du champ end\_of\_week du premier exemple, créez la mesure suivante :

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

3. Pour calculer le jour de la semaine de chaque transaction, créez la mesure suivante :

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

Tableau de résultats

| transaction\_year | transaction\_week | =makeweekdate(transaction\_year,transaction\_week,4) | =weekday(makeweekdate(transaction\_year,transaction\_week,4)) |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Fri |
| 2022 | 02 | 01/14/2022 | Fri |
| 2022 | 03 | 01/21/2022 | Fri |
| 2022 | 04 | 01/28/2022 | Fri |
| 2022 | 05 | 02/04/2022 | Fri |
| 2022 | 06 | 02/11/2022 | Fri |
| 2022 | 07 | 02/18/2022 | Fri |

Un champ équivalent au champ end\_of\_week est créé dans l'objet graphique sous forme de mesure à l'aide de la fonction makeweekdate(). Les champs transaction\_year et transaction\_week sont transmis comme arguments year (année) et week (semaine). Une valeur 4 est utilisée pour l'argument day (jour).

La fonction combine ensuite ces valeurs et les convertit en un champ date, renvoyant les résultats au format de la variable système DateFormat.

La fonction makeweekdate() et ses arguments sont également imbriqués dans une fonction weekday() pour renvoyer un calcul équivalent à celui du champ week\_day du premier exemple. Comme indiqué dans le tableau ci-dessus, la dernière colonne à droite montre que ces dates se produisent un vendredi.

## Exemple 4 – scénario

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

#### Script de chargement et expression de graphique

Vue d'ensemble

Dans cet exemple, créez une liste de dates contenant tous les vendredis de l'année 2022.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Script de chargement

```
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;
```

Résultats

Tableau de résultats

| date | jour de la semaine |
| --- | --- |
| 01/07/2022 | Fri |
| 01/14/2022 | Fri |
| 01/21/2022 | Fri |
| 01/28/2022 | Fri |
| 02/04/2022 | Fri |
| 02/11/2022 | Fri |
| 02/18/2022 | Fri |
| 02/25/2022 | Fri |
| 03/04/2022 | Fri |
| 03/11/2022 | Fri |
| 03/18/2022 | Fri |
| 03/25/2022 | Fri |
| 04/01/2022 | Fri |
| 04/08/2022 | Fri |
| 04/15/2022 | Fri |
| 04/22/2022 | Fri |
| 04/29/2022 | Fri |
| 05/06/2022 | Fri |
| 05/13/2022 | Fri |
| 05/20/2022 | Fri |
| 05/27/2022 | Fri |
| 06/03/2022 | Fri |
| 06/10/2022 | Fri |
| 06/17/2022 | Fri |
| + 27 lignes supplémentaires |  |

La fonction makeweekdate() trouve chaque vendredi de l'année 2022. L'utilisation d'un paramètre week égal à -2 garantit qu'il ne manque aucune date. Pour finir, un chargement précédent crée un champ weekday supplémentaire à des fins de clarté, pour indiquer que chaque valeur date est un vendredi.