weekname - fonction de script et fonction de graphique
Cette fonction renvoie une valeur affichant l'année et le numéro de la semaine avec une valeur numérique sous-jacente correspondant à un horodatage de la première milliseconde du premier jour de la semaine contenant l'argument date.
WeekName(date[, period_no[,first_week_day]])
La fonction weekname() détermine la semaine dans laquelle la date tombe et renvoie le numéro de semaine et l'année de cette semaine. Le premier jour de la semaine est déterminé par la variable système FirstWeekDay. Cependant, vous pouvez également modifier le premier jour de la semaine en utilisant l'argument first_week_day dans la fonction weekname().
Par défaut, les applications Qlik Sense utilisent des semaines interrompues (définies par la variable système BrokenWeeks ) et, par conséquent, le décompte des numéros de semaine commence le 1er janvier et se termine le jour précédant la variable système FirstWeekDay, quel que soit le nombre de jours écoulés.
Cependant, si votre application utilise des semaines ininterrompues, la semaine 1 peut commencer l'année précédente ou les premiers jours de janvier. Cela dépend de la façon dont vous utilisez les variables système ReferenceDay et FirstWeekDay.
Cas d'utilisation
La fonction weekname() est utile lorsque vous souhaitez comparer des agrégations par semaines.
Par exemple, si vous souhaitez voir les ventes totales de produits par semaine. Pour maintenir la cohérence avec la variable d'environnement BrokenWeeks dans l'application, utilisez weekname() au lieu de lunarweekname(). Si l'application utilise des semaines ininterrompues, la semaine 1 peut contenir des dates de décembre de l'année précédente ou exclure des dates de janvier de l'année en cours. Si l'application utilise des semaines interrompues, la semaine 1 peut contenir moins de sept jours.
double
Argument | Description |
---|---|
date | Date ou horodatage à évaluer. |
period_no | shift est un entier, où la valeur 0 indique la semaine comprenant l'argument date. Les valeurs négatives spécifiées pour shift indiquent les semaines passées tandis que les valeurs positives désignent les semaines à venir. |
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. 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. Pour plus d'informations sur la variable système, voir FirstWeekDay. |
Vous pouvez utiliser les valeurs suivantes pour définir le premier jour de la semaine dans l'argument first_week_day :
Jour | Valeur |
---|---|
Lundi | 0 |
Mardi | 1 |
Mercredi | 2 |
Jeudi | 3 |
Vendredi | 4 |
Samedi | 5 |
Dimanche | 6 |
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 | Résultat |
---|---|
weekname('01/12/2013') | Renvoie 2013/02. |
weekname('01/12/2013', -1) | Returns 2013/01. |
weekname('01/12/2013', 0, 1) | Renvoie 2013/02. |
Exemple 1 – date sans aucun argument supplémentaire
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'.
-
Variable système DateFormat définie au format MM/DD/YYYY.
-
Variable système BrokenWeeks définie sur 1.
-
Variable système FirstWeekDay définie sur 6.
-
Chargement précédent contenant les éléments suivants :
-
La fonction weekday(), qui est définie comme le champ, 'week_number', qui renvoie l'année et le numéro de semaine de réalisation des transactions.
-
La fonction weekname(), qui est définie comme le champ appelé 'week_day', pour afficher la valeur weekday de chaque date de transaction.
-
Script de chargement
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(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
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Mon | 2021/53 |
8184 | 12/28/2021 | Tue | 2021/53 |
8185 | 12/29/2021 | Wed | 2021/53 |
8186 | 12/30/2021 | Thu | 2021/53 |
8187 | 12/31/2021 | Fri | 2021/53 |
8188 | 01/01/2022 | Sat | 2022/01 |
8189 | 01/02/2022 | Sun | 2022/02 |
8190 | 01/03/2022 | Mon | 2022/02 |
8191 | 01/04/2022 | Tue | 2022/02 |
8192 | 01/05/2022 | Wed | 2022/02 |
8193 | 01/06/2022 | Thu | 2022/02 |
8194 | 01/07/2022 | Fri | 2022/02 |
8195 | 01/08/2022 | Sat | 2022/02 |
8196 | 01/09/2022 | Sun | 2022/03 |
8197 | 01/10/2022 | Mon | 2022/03 |
8198 | 01/11/2022 | Tue | 2022/03 |
8199 | 01/12/2022 | Wed | 2022/03 |
8200 | 01/13/2022 | Thu | 2022/03 |
8201 | 01/14/2022 | Fri | 2022/03 |
Le champ 'week_number' est créé dans l'instruction LOAD précédente via la fonction weekname() et en transmettant le champ date comme argument de la fonction.
La fonction weekname() identifie initialement la semaine dans laquelle tombe la valeur date et renvoie le nombre de semaines et l'année de la transaction.
La variable système FirstWeekDay définit le dimanche comme le premier jour de la semaine. La variable système BrokenWeeks définit l'application de sorte qu'elle utilise des semaines interrompues, ce qui signifie que la semaine 1 commencera le 1er janvier.
La semaine 1 commence le 1er janvier, qui est un samedi, et, par conséquent, les transactions effectuées à cette date renvoient la valeur 2022/01 (l'année et le numéro de semaine).
Étant donné que l'application utilise des semaines interrompues et que le premier jour de la semaine est le dimanche, les transactions effectuées du 2 au 8 janvier renvoient la valeur 2022/02 (semaine numéro 2 en 2022). Un exemple de ceci serait la transaction 8192, qui a eu lieu le 5 janvier et qui renvoie la valeur 2022/02 pour le champ 'week_number'.
Exemple 2 – period_no
Vue d'ensemble
Le même ensemble de données et le même scénario que ceux du premier exemple sont utilisés.
Cependant, dans cet exemple, la tâche consiste à créer un champ, 'previous_week_number', qui renvoie l'année et le numéro de semaine précédant la réalisation des transactions.
Ouvrez l'Éditeur de chargement de données et ajoutez le script de chargement suivant à un nouvel onglet.
Script de chargement
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_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
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Mon | 2021/52 |
8184 | 12/28/2021 | Tue | 2021/52 |
8185 | 12/29/2021 | Wed | 2021/52 |
8186 | 12/30/2021 | Thu | 2021/52 |
8187 | 12/31/2021 | Fri | 2021/52 |
8188 | 01/01/2022 | Sat | 2021/52 |
8189 | 01/02/2022 | Sun | 2021/53 |
8190 | 01/03/2022 | Mon | 2021/53 |
8191 | 01/04/2022 | Tue | 2021/53 |
8192 | 01/05/2022 | Wed | 2021/53 |
8193 | 01/06/2022 | Thu | 2021/53 |
8194 | 01/07/2022 | Fri | 2021/53 |
8195 | 01/08/2022 | Sat | 2022/01 |
8196 | 01/09/2022 | Sun | 2022/02 |
8197 | 01/10/2022 | Mon | 2022/02 |
8198 | 01/11/2022 | Tue | 2022/02 |
8199 | 01/12/2022 | Wed | 2022/02 |
8200 | 01/13/2022 | Thu | 2022/02 |
8201 | 01/14/2022 | Fri | 2022/02 |
Étant donné qu'une valeur period_no de -1 est utilisée comme argument de décalage dans la fonction weekname(), la fonction commence par identifier la semaine au cours de laquelle les transactions ont lieu. Elle regarde ensuite une semaine avant et identifie la première milliseconde de cette semaine.
La transaction 8192 a eu lieu le 5 janvier 2022. La fonction weekname() recherche une semaine avant, le 30 décembre 2021, et renvoie le numéro de semaine et l'année de cette date : 2021/53.
Exemple 3 – first_week_day
Vue d'ensemble
Le même ensemble de données et le même scénario que ceux du premier exemple sont utilisés.
Cependant, dans cet exemple, la politique de l'entreprise stipule que la semaine de travail commence le mardi.
Ouvrez l'Éditeur de chargement de données et ajoutez le script de chargement suivant à un nouvel onglet.
Script de chargement
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) 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
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Mon | 2021/52 |
8184 | 12/28/2021 | Tue | 2021/53 |
8185 | 12/29/2021 | Wed | 2021/53 |
8186 | 12/30/2021 | Thu | 2021/53 |
8187 | 12/31/2021 | Fri | 2021/53 |
8188 | 01/01/2022 | Sat | 2022/01 |
8189 | 01/02/2022 | Sun | 2022/01 |
8190 | 01/03/2022 | Mon | 2022/01 |
8191 | 01/04/2022 | Tue | 2022/02 |
8192 | 01/05/2022 | Wed | 2022/02 |
8193 | 01/06/2022 | Thu | 2022/02 |
8194 | 01/07/2022 | Fri | 2022/02 |
8195 | 01/08/2022 | Sat | 2022/02 |
8196 | 01/09/2022 | Sun | 2022/02 |
8197 | 01/10/2022 | Mon | 2022/02 |
8198 | 01/11/2022 | Tue | 2022/03 |
8199 | 01/12/2022 | Wed | 2022/03 |
8200 | 01/13/2022 | Thu | 2022/03 |
8201 | 01/14/2022 | Fri | 2022/03 |
Étant donné que l'argument first_week_date égal à 1 est utilisé dans la fonction weekname(), le mardi est utilisé comme le premier jour de la semaine. La fonction détermine donc que la semaine 53 2021 commence le mardi 28 décembre ; et, du fait que l'application utilise des semaines interrompues, la semaine 1 commence le 1er janvier 2022 et se termine la dernière milliseconde du lundi 3 janvier 2022.
La transaction 8192 a eu lieu le 5 janvier 2022. Par conséquent, avec l'utilisation d'un paramètre first_week_day défini sur Tuesday (mardi), la fonction weekname() renvoie la valeur 2022/02 pour le champ 'week_number'.
Exemple 4 – Exemple d'objet graphique
Vue d'ensemble
Le même ensemble de données et le même scénario que ceux du premier exemple sont utilisés.
Cependant, dans cet exemple, l'ensemble de données est le même et chargé dans l'application. Le calcul qui renvoie l'année de la semaine de réalisation des transactions est créé sous forme de mesure dans un objet graphique de l'application.
Script de chargement
SET BrokenWeeks=1;
Transactions:
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 (date)
Pour calculer le début de la semaine d'une transaction, créez la mesure suivante :
=weekname(date)
id | date | =weekday(date) | =weekname(date) |
---|---|---|---|
8183 | 12/27/2021 | Mon | 2021/53 |
8184 | 12/28/2021 | Tue | 2021/53 |
8185 | 12/29/2021 | Wed | 2021/53 |
8186 | 12/30/2021 | Thu | 2021/53 |
8187 | 12/31/2021 | Fri | 2021/53 |
8188 | 01/01/2022 | Sat | 2022/01 |
8189 | 01/02/2022 | Sun | 2022/02 |
8190 | 01/03/2022 | Mon | 2022/02 |
8191 | 01/04/2022 | Tue | 2022/02 |
8192 | 01/05/2022 | Wed | 2022/02 |
8193 | 01/06/2022 | Thu | 2022/02 |
8194 | 01/07/2022 | Fri | 2022/02 |
8195 | 01/08/2022 | Sat | 2022/02 |
8196 | 01/09/2022 | Sun | 2022/03 |
8197 | 01/10/2022 | Mon | 2022/03 |
8198 | 01/11/2022 | Tue | 2022/03 |
8199 | 01/12/2022 | Wed | 2022/03 |
8200 | 01/13/2022 | Thu | 2022/03 |
8201 | 01/14/2022 | Fri | 2022/03 |
Le champ 'week_number' est créé sous forme de mesure dans l'objet graphique via la fonction weekname() et en transmettant le champ date comme argument de la fonction.
La fonction weekname() identifie initialement la semaine dans laquelle tombe la valeur date et renvoie le nombre de semaines et l'année de la transaction.
La variable système FirstWeekDay définit le dimanche comme le premier jour de la semaine. La variable système BrokenWeeks définit l'application de sorte qu'elle utilise des semaines interrompues, ce qui signifie que la semaine 1 commence le 1er janvier.
Étant donné que l'application utilise des semaines interrompues et que le premier jour de la semaine est le dimanche, les transactions effectuées du 2 au 8 janvier renvoient la valeur 2022/02, à savoir, la semaine numéro 2 de 2022. Notez que la transaction 8192 a eu lieu le 5 janvier et qu'elle renvoie la valeur 2022/02 pour le champ 'week_number'.
Exemple 5 – 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'.
-
Variable système BrokenWeeks définie sur 0.
-
Variable système ReferenceDay définie sur 2.
-
Variable système DateFormat définie au format MM/DD/YYYY.
Script de chargement
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Résultats
Chargez les données et ouvrez une feuille. Créez un tableau.
Créez une dimension calculée à l'aide de l'expression suivante :
=weekname(date)
Pour calculer les ventes totales, créez la mesure d'agrégation suivante :
=sum(amount)
Définissez le Formatage des nombres des mesures sur Devise.
weekname(date) | =sum(amount) |
---|---|
2019/52 | $125.69 |
2020/01 | $346.51 |
2020/02 | $347.57 |
2020/03 | $122.01 |
Pour démontrer les résultats de l'utilisation de la fonction weekname() dans ce scénario, ajoutez le champ suivant comme dimension :
date
weekname(date) | date | =sum(amount) |
---|---|---|
2019/52 | 12/27/2019 | $58.27 |
2019/52 | 12/28/2019 | $67.42 |
2020/01 | 12/29/2019 | $23.80 |
2020/01 | 12/30/2019 | $82.06 |
2020/01 | 12/31/2019 | $40.56 |
2020/01 | 01/01/2020 | $37.23 |
2020/01 | 01/02/2020 | $17.17 |
2020/01 | 01/03/2020 | $88.27 |
2020/01 | 01/04/2020 | $57.42 |
2020/02 | 01/05/2020 | $53.80 |
2020/02 | 01/06/2020 | $82.06 |
2020/02 | 01/07/2020 | $40.56 |
2020/02 | 01/08/2020 | $53.67 |
2020/02 | 01/09/2020 | $26.63 |
2020/02 | 01/10/2020 | $72.48 |
2020/02 | 01/11/2020 | $18.37 |
2020/03 | 01/12/2020 | $45.26 |
2020/03 | 01/13/2020 | $58.23 |
2020/03 | 01/14/2020 | $18.52 |
Étant donné que l'application utilise des semaines ininterrompues et que la semaine 1 nécessite un minimum de deux jours en janvier en raison de la variable système ReferenceDay, la semaine 1 2020 inclut les transactions du 29 décembre 2019.