weekend - fonction de script et fonction de graphique
Cette fonction renvoie une valeur correspondant à un horodatage de la dernière milliseconde du dernier jour (dimanche) de la semaine calendaire contenant l'argument date. Le format de sortie par défaut correspond à l'argument DateFormat défini dans le script.
WeekEnd(date [, period_no[, first_week_day]])
double
La fonction weekend() détermine la semaine au cours de laquelle tombe la date. Elle renvoie ensuite un horodatage, au format date, pour la dernière milliseconde de cette semaine-là. Le premier jour de la semaine est déterminé par la variable d'environnement FirstWeekDay. Cependant, cela peut être remplacé par l'argument first_week_day dans la fonction weekend().
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. |
broken_weeks |
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. Pour plus d'informations sur la variable système, voir BrokenWeeks. |
Cas d'utilisation
La fonction weekend() est couramment utilisée dans le cadre d'une expression lorsque l'utilisateur souhaite que le calcul utilise les jours restants de la semaine pour la date spécifiée. Par exemple, elle peut être utilisée si un utilisateur souhaite calculer le total des intérêts non encore encourus au cours de la semaine.
Exemple | Résultat |
---|---|
weekend('01/10/2013') | Renvoie 01/12/2013 23:59:59. |
weekend('01/10/2013', -1) | Renvoie 01/05/2013 23:59:59.. |
weekend('01/10/2013', 0, 1) | Renvoie 01/14/2013 23:59:59. |
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 – exemple de base
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 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, end_of_week, qui renvoie un horodatage de la fin de la semaine au cours de laquelle les transactions ont eu lieu.
Script de chargement
SET FirstWeekDay=6;
Transactions:
Load
*,
weekend(date) as end_of_week,
timestamp(weekend(date)) as end_of_week_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
Le champ end_of_week est créé dans l'instruction LOAD précédente via la fonction weekend() et en transmettant le champ date comme argument de la fonction.
La fonction weekend() identifie la semaine de la valeur date et renvoie un horodatage pour la dernière milliseconde de cette semaine-là.
La transaction 8191 a eu lieu le 5 février. La variable système FirstWeekDay définit le premier jour de la semaine comme étant un dimanche. La fonction weekend() identifie que le premier samedi après le 5 février – et par conséquent la fin de la semaine – était le 5 février. Par conséquent, la valeur end_of_week pour cette transaction renvoie la dernière milliseconde de ce jour-là, le 5 février à 11:59:59 PM.
Exemple 2 – period_no
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 premier exemple.
-
Création d'un champ, previous_week_end, qui renvoie l'horodatage du début de la semaine avant la transaction.
Script de chargement
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,-1) as previous_week_end,
timestamp(weekend(date,-1)) as previous_week_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
date
-
previous_week_end
-
previous_week_end_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 11:59:59 PM |
1/19/2022 | 01/15/2022 | 1/15/2022 11:59:59 PM |
2/5/2022 | 01/29/2022 | 1/29/2022 11:59:59 PM |
2/28/2022 | 02/26/2022 | 2/26/2022 11:59:59 PM |
3/16/2022 | 03/12/2022 | 3/12/2022 11:59:59 PM |
4/1/2022 | 03/26/2022 | 3/26/2022 11:59:59 PM |
5/7/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
5/16/2022 | 05/14/2022 | 5/14/2022 11:59:59 PM |
6/15/2022 | 06/11/2022 | 6/11/2022 11:59:59 PM |
6/26/2022 | 06/25/2022 | 6/25/2022 11:59:59 PM |
7/9/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/22/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/23/2022 | 07/16/2022 | 7/16/2022 11:59:59 PM |
7/27/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
8/2/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/8/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/19/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
9/26/2022 | 09/24/2022 | 9/24/2022 11:59:59 PM |
10/14/2022 | 10/08/2022 | 10/8/2022 11:59:59 PM |
10/29/2022 | 10/22/2022 | 10/22/2022 11:59:59 PM |
Dans cet exemple, étant donné qu'un argument period_no égal à -1 a été utilisé comme argument de décalage dans la fonction weekend(), la fonction commence par identifier la semaine au cours de laquelle les transactions ont lieu. Elle regarde ensuite une semaine avant et identifie la dernière milliseconde de cette semaine-là.
La transaction 8196 a eu lieu le 15 juin. La fonction weekend() identifie que la semaine commence le 12 juin. Par conséquent, la semaine précédente se termine le 11 juin à 11:59:59 PM ; il s'agit de la valeur renvoyée pour le champ previous_week_end.
Exemple 3 – 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 le même ensemble de données et le même scénario que ceux du premier exemple. Cependant, dans cet exemple, nous devons définir le mardi comme le premier jour de la semaine de travail.
Script de chargement
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekend(date,0,1) as end_of_week,
timestamp(weekend(date,0,1)) as end_of_week_timestamp,
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/10/2022 | 1/10/2022 11:59:59 PM |
1/19/2022 | 01/24/2022 | 1/24/2022 11:59:59 PM |
2/5/2022 | 02/07/2022 | 5/7/2022 11:59:59 PM |
2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
3/16/2022 | 03/21/2022 | 3/21/2022 11:59:59 PM |
4/1/2022 | 04/04/2022 | 4/4/2022 11:59:59 PM |
5/7/2022 | 05/09/2022 | 5/9/2022 11:59:59 PM |
5/16/2022 | 05/16/2022 | 5/16/2022 11:59:59 PM |
6/15/2022 | 06/20/2022 | 6/20/2022 11:59:59 PM |
6/26/2022 | 06/27/2022 | 6/27/2022 11:59:59 PM |
7/9/2022 | 07/11/2022 | 7/11/2022 11:59:59 PM |
7/22/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/23/2022 | 07/25/2022 | 7/25/2022 11:59:59 PM |
7/27/2022 | 08/01/2022 | 8/1/2022 11:59:59 PM |
8/2/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/8/2022 | 08/08/2022 | 8/8/2022 11:59:59 PM |
8/19/2022 | 08/22/2022 | 8/22/2022 11:59:59 PM |
9/26/2022 | 09/26/2022 | 9/26/2022 11:59:59 PM |
10/14/2022 | 10/17/2022 | 10/17/2022 11:59:59 PM |
10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
Dans ce cas, étant donné que l'argument first_week_date égal à 1 est utilisé dans la fonction weekend(), il définit le premier jour de la semaine comme étant le mardi.
La transaction 8191 a eu lieu le 5 février. La fonction weekend() identifie que le premier lundi après cette date – et par conséquent la fin de la semaine et la valeur renvoyée – était le 6 février à 11:59:59 PM.
Exemple 4 – Exemple d'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 un horodatage correspondant à la fin de la semaine de réalisation des transactions est créé sous forme de mesure dans un objet graphique de l'application.
Script de chargement
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : date.
Pour calculer le début de la semaine d'une transaction, ajoutez les mesures suivantes :
-
=weekend(date)
-
=timestamp(weekend(date))
date | =weekend(date) | =timestamp(weekend(date)) |
---|---|---|
1/7/2022 | 01/08/2022 | 1/8/2022 11:59:59 PM |
1/19/2022 | 01/22/2022 | 1/22/2022 11:59:59 PM |
2/5/2022 | 02/05/2022 | 2/5/2022 11:59:59 PM |
2/28/2022 | 03/05/2022 | 3/5/2022 11:59:59 PM |
3/16/2022 | 03/19/2022 | 3/19/2022 11:59:59 PM |
4/1/2022 | 04/02/2022 | 4/2/2022 11:59:59 PM |
5/7/2022 | 05/07/2022 | 5/7/2022 11:59:59 PM |
5/16/2022 | 05/21/2022 | 5/21/2022 11:59:59 PM |
6/15/2022 | 06/18/2022 | 6/18/2022 11:59:59 PM |
6/26/2022 | 07/02/2022 | 7/2/2022 11:59:59 PM |
7/9/2022 | 07/09/2022 | 7/9/2022 11:59:59 PM |
7/22/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/23/2022 | 07/23/2022 | 7/23/2022 11:59:59 PM |
7/27/2022 | 07/30/2022 | 7/30/2022 11:59:59 PM |
8/2/2022 | 08/06/2022 | 8/6/2022 11:59:59 PM |
8/8/2022 | 08/13/2022 | 8/13/2022 11:59:59 PM |
8/19/2022 | 08/20/2022 | 8/20/2022 11:59:59 PM |
9/26/2022 | 10/01/2022 | 10/1/2022 11:59:59 PM |
10/14/2022 | 10/15/2022 | 10/15/2022 11:59:59 PM |
10/29/2022 | 10/29/2022 | 10/29/2022 11:59:59 PM |
La mesure end_of_week est créée dans l'objet graphique via la fonction weekend() et en transmettant le champ date comme argument de la fonction. La fonction weekend() identifie la semaine de la valeur date, renvoyant un horodatage pour la dernière milliseconde de cette semaine-là.
La transaction 8191 a eu lieu le 5 février. La variable système FirstWeekDay définit le premier jour de la semaine comme étant un dimanche. La fonction weekend() identifie que le premier samedi après le 5 février – et par conséquent la fin de la semaine – était le 5 février. Par conséquent, la valeur end_of_week pour cette transaction renvoie la dernière milliseconde de ce jour-là, le 5 février à 11:59:59 PM.
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 chargé dans une table appelée Employee_Expenses.
-
Données constituées des ID des employés, des noms des employés et des notes de frais quotidiennes moyennes de chaque employé.
L'utilisateur final souhaite un objet graphique qui affiche, par ID d'employé et nom d'employé, les notes de frais estimées qu'il reste à encourir pour le reste de la semaine.
Script de chargement
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
Résultats
Procédez comme suit :
-
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
employee_id
-
employee_name
-
-
Ensuite, pour calculer les intérêts accumulés, créez une mesure :
=(weekend(today(1))-today(1))*avg_daily_claim
-
Définissez le Formatage des nombres des mesures sur Devise.
employee_id | employee_name | =(weekend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $90.00 |
183 | Deryck | $75.00 |
184 | Dexter | $75.00 |
185 | Sydney | $162.00 |
186 | Agatha | $108.00 |
La fonction weekend(), en utilisant la date d'aujourd'hui comme son seul argument, renvoie la date de fin de la semaine en cours. Ensuite, en soustrayant la date d'aujourd'hui de la date de fin de la semaine, l'expression renvoie le nombre de jours restants pour cette semaine.
Cette valeur est ensuite multipliée par les notes de frais quotidiennes moyennes par employé pour calculer la valeur estimée des notes de frais que chaque employé est censé faire au cours du reste de la semaine.