week - fonction de script et fonction de graphique
Cette fonction renvoie un entier représentant le numéro de la semaine selon la norme ISO 8601. Le numéro de la semaine est calculé à partir de l'interprétation de date de l'expression, conformément à l'interprétation standard des nombres.
Le comptage des numéros de semaine commence le 1er janvier (car Qlik Sense est défini par défaut pour utiliser des semaines interrompues). La première semaine se termine le jour précédant la variable système FirstWeekDay, quel que soit le nombre de jours de cette semaine-là. La variable système FirstWeekDay peut être remplacée au sein de la fonction week() par l'argument first_week_day.
La fonction week() permet aussi de spécifier s'il faut utiliser des semaines interrompues ou ininterrompues via l'argument broken_weeks. Si la fonctionnalité de semaines interrompues est employée, la semaine 1 doit contenir un certain nombre de jours en janvier, tel que défini par la variable système ReferenceDay. Par conséquent, la semaine 1 peut potentiellement commencer en décembre, ou, sinon, la semaine 52 ou 53 peut se poursuivre en janvier. Pour finir, l'argument reference_day permet à la fonction de remplacer la variable système ReferenceDay.
Contrairement à la fonction weekname(), la fonction week() ne renvoie pas également la valeur year. Cela permet aux agrégations de comparer des semaines sur des années.
Dans cette fonction, quatre arguments peuvent être utilisés.
Argument n° 1 : timestamp
Il s'agit de la date à évaluer sous forme d'horodatage ou d'expression aboutissant à un horodatage, pour convertir, par exemple, '2012-10-12'.
Argument n° 2 : first_week_day
Si vous ne précisez pas la variable first_week_day, la valeur de la variable FirstWeekDay sera utilisée comme premier jour de la semaine.
Si vous souhaitez utiliser un autre jour comme premier jour de la semaine, définissez les valeurs suivantes pour la variable first_week_day :
0 pour lundi
1 pour mardi
2 pour mercredi
3 pour jeudi
4 pour vendredi
5 pour samedi
6 pour dimanche
L'entier renvoyé par la fonction utilise désormais le premier jour de la semaine que vous avez défini grâce à la variable first_week_day.
Si vous ne précisez pas la variable broken_weeks, la valeur de la variable BrokenWeeks sera utilisée pour définir si les semaines sont interrompues ou non.
Par défaut, les fonctions Qlik Sense utilisent des semaines ininterrompues. Autrement dit :
Certaines années, la semaine 1 commence en décembre, tandis que d'autres années, la semaine 52 ou 53 se poursuit en janvier.
La semaine 1 comporte toujours au moins 4 jours en janvier.
L'alternative consiste à utiliser des semaines interrompues.
La semaine 52 ou 53 ne se poursuit pas en janvier.
La semaine 1 débute le 1er janvier et n'est, dans la plupart des cas, pas une semaine complète.
Si vous ne spécifiez pas reference_day, la valeur de la variable ReferenceDay sera utilisée pour spécifier le jour du mois de janvier devant être défini comme jour de référence pour définir la semaine 1. Par défaut, les fonctions Qlik Sense utilisent le 4 comme jour de référence. Cela signifie que la semaine 1 doit contenir le 4 janvier ou, en d'autres termes, que la semaine 1 doit toujours comprendre au moins 4 jours en janvier.
Les valeurs suivantes peuvent s'utiliser pour définir un autre jour de référence :
La fonction The week() est utile lorsque vous souhaitez comparer des agrégations par semaine. Par exemple, elle peut être utilisée si vous souhaitez voir les ventes totales de produits par semaine. La fonction week() est préférée à la fonction weekname() lorsque l'utilisateur souhaite que le calcul n'utilise pas forcément la variable système BrokenWeeks, FirstWeekDay ou ReferenceDay de l'application.
De plus, la fonction week() est celle sélectionnée lorsque vous souhaitez effectuer une comparaison sur plusieurs années. Grâce à la fonction week(), l'utilisateur peut créer sa propre combinaison de ces variables à utiliser dans les cas dans lesquels la fonction est utilisée.
Ces dimensions peuvent être créées soit dans le script de chargement, en utilisant la fonction pour créer un champ dans une table Master Calendar, soit directement dans un graphique sous forme de dimension calculée.
Exemples de fonction
Exemple
Résultat
week(
'10/12/2012')
Renvoie 41.
week(
'35648')
Renvoie 32, car 35648 = 08/06/1997.
week('10/12/2012', 0, 1)
Renvoie 42.
Paramètres régionaux
Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. 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.
Les paramètres régionaux par défaut des applications sont basés sur les paramètres système régionaux de l'ordinateur ou du serveur sur lequel Qlik Sense est installé. Si le serveur Qlik Sense auquel vous accédez est configuré sur la Suède, l'éditeur de chargement de données utilisera les paramètres régionaux suédois pour les dates, l'heure et la devise. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Sense. Qlik Sense sera affiché dans la même langue que celle du navigateur que vous utilisez.
Exemple 1 – variables système par défaut
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Ensemble de données contenant un ensemble de transactions pour la dernière semaine de 2021 et les deux premières semaines de 2022, chargé dans une table appelée Transactions.
Champ de date fourni dans la variable système DateFormat au format (MM/DD/YYYY).
Création d'un champ, week_number, qui renvoie l'année et le numéro de semaine des transactions.
Création d'un champ appelé week_day, montrant la valeur weekday de chaque date de transaction.
Script de chargement
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
id
date
week_day
week_number
Tableau de résultats
id
date
week_day
week_number
8183
12/27/2021
Mon
53
8184
12/28/2021
Tue
53
8185
12/29/2021
Wed
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
2
8190
01/03/2022
Mon
2
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
3
8197
01/10/2022
Mon
3
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Le champ week_number est créé dans l'instruction LOAD précédente via la fonction week() et en transmettant le champ date comme argument de la fonction.
Aucun autre paramètre n'est transmis à la fonction. Par conséquent, les variables par défaut qui affectent la fonction week() sont les suivantes :
BrokenWeeks : Le comptage des semaines commence le 1er janvier.
FirstWeekDay : Le premier jour de la semaine est un dimanche.
Étant donné que l'application utilise la variable système BrokenWeeks par défaut, la semaine 1 commence le 1er janvier, un samedi.
En raison de la variable système FirstWeekDay par défaut, les semaines commencent un dimanche. Le premier dimanche après le 1er janvier est le 2 janvier, date à laquelle commence la semaine 2.
Exemple 2 – first_week_day
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Création d'un champ, week_number, qui renvoie l'année et le numéro de semaine des transactions.
Création d'un champ appelé week_day, montrant la valeur weekday de chaque date de transaction.
Dans cet exemple, nous voulons déterminer le début de la semaine de travail sur le mardi.
Script de chargement
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
id
date
week_day
week_number
Tableau de résultats
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
53
8185
12/29/2021
Wed
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
L'application continue à utiliser des semaines interrompues. Cependant, l'argument first_week_day a été défini sur 1 dans la fonction week(). Cela détermine le premier jour de la semaine comme étant un mardi.
L'application utilise la variable système BrokenWeeks par défaut ; par conséquent, la semaine 1 commence le 1er janvier, un samedi.
L'argument first_week_day de la fonction week() détermine le premier jour de la semaine comme étant un mardi. Par conséquent, la semaine 53 commence le 28 décembre 2021.
Cependant, étant donné que la fonction continue à utiliser des semaines interrompues, la semaine 1 ne dure que deux jours, car le premier mardi après le 1er janvier tombe le 3 janvier.
Exemple 3 – unbroken_weeks
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient le même ensemble de données et le même scénario que ceux du premier exemple.
Dans cet exemple, nous utilisons des semaines ininterrompues.
Script de chargement
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
id
date
week_day
week_number
Tableau de résultats
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
52
8185
12/29/2021
Wed
52
8186
12/30/2021
Thu
52
8187
12/31/2021
Fri
52
8188
01/01/2022
Sat
52
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
1
8192
01/05/2022
Wed
1
8193
01/06/2022
Thu
1
8194
01/07/2022
Fri
1
8195
01/08/2022
Sat
1
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
2
8199
01/12/2022
Wed
2
8200
01/13/2022
Thu
2
8201
01/14/2022
Fri
2
Le paramètre first_week_date est défini sur 1, faisant du mardi le premier jour de la semaine. Le paramètre broken_weeks est défini sur 0, obligeant la fonction à utiliser des semaines ininterrompues. Pour finir, le troisième paramètre définit la valeur reference_day sur 2.
Le paramètre first_week_date est défini sur 6, faisant du dimanche le premier jour de la semaine. Le paramètre broken_weeks est défini sur 0, obligeant la fonction à utiliser des semaines ininterrompues.
Si on utilise des semaines ininterrompues, la semaine 1 ne commence pas forcément le 1er janvier ; en revanche, elle doit compter au moins quatre jours. Par conséquent, dans l'ensemble de données, la semaine 52 se termine le samedi 1er janvier 2022. La semaine 1 commence donc le jour de la variable système FirstWeekDay, à savoir, le dimanche 2 janvier. Cette semaine se termine le samedi suivant, le 8 janvier.
Exemple 4 – reference_day
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Même ensemble de données et même scénario que ceux du troisième exemple.
Création d'un champ, week_number, qui renvoie l'année et le numéro de semaine des transactions.
Création d'un champ appelé week_day, montrant la valeur weekday de chaque date de transaction.
En outre, les conditions suivantes doivent être remplies :
La semaine de travail commence un mardi.
L'entreprise utilise des semaines ininterrompues.
La valeur reference_day est égale à 2. En d'autres termes, le nombre minimal de jours en janvier la semaine 1 est de 2.
Script de chargement
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
id
date
week_day
week_number
Tableau de résultats
id
date
week_day
week_number
8183
12/27/2021
Mon
52
8184
12/28/2021
Tue
1
8185
12/29/2021
Wed
1
8186
12/30/2021
Thu
1
8187
12/31/2021
Fri
1
8188
01/01/2022
Sat
1
8189
01/02/2022
Sun
1
8190
01/03/2022
Mon
1
8191
01/04/2022
Tue
2
8192
01/05/2022
Wed
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Sun
2
8197
01/10/2022
Mon
2
8198
01/11/2022
Tue
3
8199
01/12/2022
Wed
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Le paramètre first_week_date est défini sur 1, faisant du mardi le premier jour de la semaine. Le paramètre broken_weeks est défini sur 0, obligeant la fonction à utiliser des semaines ininterrompues. Pour finir, le troisième paramètre définit le paramètre reference_day sur 2.
Étant donné que la fonction utilise des semaines ininterrompues et qu'une valeur reference_day égale à 2 est utilisée comme paramètre, la semaine 1 n'a besoin d'inclure que deux jours en janvier. Le premier jour de la semaine étant un mardi, la semaine 1 commence le 28 décembre 2021 et se termine le lundi 3 janvier 2022.
Exemple 5 – exemple objet graphique
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient le même ensemble de données et le même scénario que ceux du premier exemple.
Cependant, dans cet exemple, le même ensemble de données est chargé dans l'application. Le calcul qui renvoie le numéro de semaine est créé sous forme de mesure dans un objet graphique.
Chargez les données et ouvrez une feuille. Créez un tableau.
Ajoutez les champs suivants comme dimensions :
id
date
Ensuite, créez la mesure suivante :
=week (date)
Créez une mesure , week_day pour indiquer la valeur weekday de chaque date de transaction :
=weekday(date)
Tableau de résultats
id
date
=week(date)
=weekday(date)
8183
12/27/2021
53
Mon
8184
12/28/2021
53
Tue
8185
12/29/2021
53
Wed
8186
12/30/2021
53
Thu
8187
12/31/2021
53
Fri
8188
01/01/2022
1
Sat
8189
01/02/2022
2
Sun
8190
01/03/2022
2
Mon
8191
01/04/2022
2
Tue
8192
01/05/2022
2
Wed
8193
01/06/2022
2
Thu
8194
01/07/2022
2
Fri
8195
01/08/2022
2
Sat
8196
01/09/2022
3
Sun
8197
01/10/2022
3
Mon
8198
01/11/2022
3
Tue
8199
01/12/2022
3
Wed
8200
01/13/2022
3
Thu
8201
01/14/2022
3
Fri
Le champ week_number est créé dans l'instruction LOAD précédente via la fonction week() et en transmettant le champ date comme argument de la fonction.
Aucun autre paramètre n'est transmis à la fonction. Par conséquent, les variables par défaut qui affectent la fonction week() sont les suivantes :
BrokenWeeks : Le comptage des semaines commence le 1er janvier.
FirstWeekDay : Le premier jour de la semaine est un dimanche.
Étant donné que l'application utilise la variable système BrokenWeeks par défaut, la semaine 1 commence le 1er janvier, un samedi.
En raison de la variable système FirstWeekDay par défaut, les semaines commencent un dimanche. Le premier dimanche après le 1er janvier est le 2 janvier, date à laquelle commence la semaine 2.
Exemple 6 – scénario
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Ensemble de données contenant un ensemble de transactions pour la dernière semaine de 2019 et les deux premières semaines de 2020, chargé dans une table appelée Transactions.
Champ de date fourni dans la variable système DateFormat au format (MM/DD/YYYY).
L'application utilise principalement des semaines interrompues sur son tableau de bord. Cependant, l'utilisateur final souhaite un objet graphique présentant les ventes totales par semaine via des semaines ininterrompues. Le jour de référence doit être le 2 janvier, avec des semaines commençant un mardi. Cela est possible même lorsque cette dimension n'est pas disponible dans le modèle de données, en utilisant la fonction week() comme dimension calculée dans le graphique.
Chargez les données et ouvrez une feuille. Créez un tableau.
Créez la dimension calculée suivante :
=week(date)
Ensuite, créez la mesure d'agrégation suivante :
=sum(amount)
Définissez le Formatage des nombres des mesures sur Devise.
Sélectionnez le menu Tri et, pour la dimension calculée, supprimez le tri personnalisé.
Désélectionnez les options Trier par nombre et Trier par ordre alphabétique.
Tableau de résultats
week(date)
sum(amount)
52
$125.69
53
$146.42
1
$200.09
2
$347.57
3
$122.01
Cette page vous a-t-elle aidé ?
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !