weekstart - fonction de script et fonction de graphique
Cette fonction renvoie une valeur correspondant à un horodatage de la première milliseconde du premier jour de la semaine calendaire contenant l'argument date. Le format de sortie par défaut correspond au format de date DateFormat défini dans le script.
La fonction weekstart() détermine la semaine au cours de laquelle tombe la date. Elle renvoie ensuite un horodatage, au format date, pour la premiè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 weekstart().
Arguments
Argument
Description
timestamp
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.
Cas d'utilisation
La fonction weekstart() est couramment utilisée dans le cadre d'une expression lorsque l'utilisateur souhaite que le calcul utilise la fraction de la semaine qui s'est écoulée jusqu'à présent. Par exemple, cela peut permettre à un utilisateur de calculer le total des salaires touchés par les employés au cours de la semaine jusqu'à ce jour.
Les exemples suivants supposent :
SET FirstWeekDay=0;
Exemples de fonction
Exemple
Résultat
weekstart('01/12/2013')
Renvoie 01/07/2013.
weekstart('01/12/2013', -1 )
Renvoie 11/31/2012.
weekstart('01/12/2013', 0, 1)
Renvoie 01/08/2013.
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.
Si vous souhaitez utiliser des paramètres ISO pour les semaines et les numéros de semaine, assurez-vous que votre script comporte les éléments suivants :
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
Si vous souhaitez utiliser des paramètres US, assurez-vous que votre script comporte les éléments suivants :
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
Les exemples ci-dessus aboutissent au résultat suivant via la fonction weekstart() :
Exemple de fonction Weekstart
Date
Début de semaine ISO
Début de semaine US
Sat 2020 Dec 26
2020-12-21
12/20/2020
Sun 2020 Dec 27
2020-12-21
12/27/2020
Mon 2020 Dec 28
2020-12-28
12/27/2020
Tue 2020 Dec 29
2020-12-28
12/27/2020
Wed 2020 Dec 30
2020-12-28
12/27/2020
Thu 2020 Dec 31
2020-12-28
12/27/2020
Fri 2021 Jan 1
2020-12-28
12/27/2020
Sat 2021 Jan 2
2020-12-28
12/27/2020
Sun 2021 Jan 3
2020-12-28
1/3/2021
Mon 2021 Jan 4
2021-01-04
1/3/2021
Tue 2021 Jan 5
2021-01-04
1/3/2021
Note InformationsLes débuts de semaine sont les lundis dans la colonne ISO et les dimanches dans la colonne US.
Exemple 1 – 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 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, start_of_week, qui renvoie un horodatage du début de la semaine au cours de laquelle les transactions ont eu lieu.
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
date
start_of_week
start_of_week_timestamp
Tableau de résultats
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/17/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
Le champ start_of_week est créé dans l'instruction LOAD précédente via la fonction weekstart() et en transmettant le champ date comme argument de la fonction.
La fonction weekstart() identifie initialement la semaine de la valeur date, renvoyant un horodatage pour la premiè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 weekstart() identifie que le premier dimanche avant le 5 février – et par conséquent le début de la semaine – était le 30 janvier. Par conséquent, la valeur start_of_week pour cette transaction renvoie la première milliseconde de ce jour-là, le 30 janvier à 12:00:00 AM.
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_start, qui renvoie l'horodatage du début du trimestre avant la transaction.
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
date
previous_week_start
previous_week_start_timestamp
Tableau de résultats
date
previous_week_start
previous_week_start_timestamp
1/7/2022
12/26/2021
12/26/2021 12:00:00 AM
1/19/2022
01/09/2022
1/9/2022 12:00:00 AM
2/5/2022
01/23/2022
1/23/2022 12:00:00 AM
2/28/2022
02/20/2022
2/20/2022 12:00:00 AM
3/16/2022
03/06/2022
3/6/2022 12:00:00 AM
4/1/2022
03/20/2022
3/20/2022 12:00:00 AM
5/7/2022
04/24/2022
4/24/2022 12:00:00 AM
5/16/2022
05/08/2022
5/8/2022 12:00:00 AM
6/15/2022
06/05/2022
6/5/2022 12:00:00 AM
6/26/2022
06/19/2022
6/19/2022 12:00:00 AM
7/9/2022
06/26/2022
6/26/2022 12:00:00 AM
7/22/2022
07/10/2022
7/10/2022 12:00:00 AM
7/23/2022
07/10/2022
7/10/2022 12:00:00 AM
7/27/2022
07/17/2022
7/17/2022 12:00:00 AM
8/2/2022
07/24/2022
7/17/2022 12:00:00 AM
8/8/2022
07/31/2022
7/31/2022 12:00:00 AM
8/19/2022
08/07/2022
8/7/2022 12:00:00 AM
9/26/2022
09/18/2022
9/18/2022 12:00:00 AM
10/14/2022
10/02/2022
10/2/2022 12:00:00 AM
10/29/2022
10/16/2022
10/16/2022 12:00:00 AM
Dans cet exemple, étant donné que la valeur period_no de -1 a été utilisée comme argument de décalage dans la fonction weekstart(), 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 8196 a eu lieu le 15 juin. La fonction weekstart() identifie que la semaine commence le 12 juin. Par conséquent, la semaine précédente a commencé le 5 juin à 12:00:00 AM ; il s'agit de la valeur renvoyée pour le champ previous_week_start.
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.
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
date
start_of_week
start_of_week_timestamp
Tableau de résultats
date
start_of_week
start_of_week_timestamp
1/7/2022
01/04/2022
1/4/2022 12:00:00 AM
1/19/2022
01/18/2022
1/18/2022 12:00:00 AM
2/5/2022
02/01/2022
2/1/2022 12:00:00 AM
2/28/2022
02/22/2022
2/22/2022 12:00:00 AM
3/16/2022
03/15/2022
3/15/2022 12:00:00 AM
4/1/2022
03/29/2022
3/29/2022 12:00:00 AM
5/7/2022
05/03/2022
5/3/2022 12:00:00 AM
5/16/2022
05/10/2022
5/10/2022 12:00:00 AM
6/15/2022
06/14/2022
6/14/2022 12:00:00 AM
6/26/2022
06/21/2022
6/21/2022 12:00:00 AM
7/9/2022
07/05/2022
7/5/2022 12:00:00 AM
7/22/2022
07/19/2022
7/19/2022 12:00:00 AM
7/23/2022
07/19/2022
7/19/2022 12:00:00 AM
7/27/2022
07/26/2022
7/26/2022 12:00:00 AM
8/2/2022
08/02/2022
8/2/2022 12:00:00 AM
8/8/2022
08/02/2022
8/2/2022 12:00:00 AM
8/19/2022
08/16/2022
8/16/2022 12:00:00 AM
9/26/2022
09/20/2022
9/20/2022 12:00:00 AM
10/14/2022
10/11/2022
10/11/2022 12:00:00 AM
10/29/2022
10/25/2022
10/25/2022 12:00:00 AM
Dans ce cas, étant donné que l'argument first_week_date égal à 1 est utilisé dans la fonction weekstart(), 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 weekstart() identifie que le premier mardi avant cette date – et par conséquent le début de la semaine et la valeur renvoyée – était le 1er février à 12:00:00 AM.
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 au début de la semaine de réalisation des transactions est créé sous forme de mesure dans un objet graphique de l'application.
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 :
=weekstart(date)
=timestamp(weekstart(date))
Tableau de résultats
date
start_of_week
start_of_week_timestamp
1/7/2022
01/02/2022
1/2/2022 12:00:00 AM
1/19/2022
01/16/2022
1/16/2022 12:00:00 AM
2/5/2022
01/30/2022
1/30/2022 12:00:00 AM
2/28/2022
02/27/2022
2/27/2022 12:00:00 AM
3/16/2022
03/13/2022
3/13/2022 12:00:00 AM
4/1/2022
03/27/2022
3/27/2022 12:00:00 AM
5/7/2022
05/01/2022
5/1/2022 12:00:00 AM
5/16/2022
05/15/2022
5/15/2022 12:00:00 AM
6/15/2022
06/12/2022
6/12/2022 12:00:00 AM
6/26/2022
06/26/2022
6/26/2022 12:00:00 AM
7/9/2022
07/03/2022
7/3/2022 12:00:00 AM
7/22/2022
07/17/2022
7/17/2022 12:00:00 AM
7/23/2022
07/17/2022
7/17/2022 12:00:00 AM
7/27/2022
07/24/2022
7/17/2022 12:00:00 AM
8/2/2022
07/31/2022
7/31/2022 12:00:00 AM
8/8/2022
08/07/2022
8/7/2022 12:00:00 AM
8/19/2022
08/14/2022
8/14/2022 12:00:00 AM
9/26/2022
09/25/2022
9/25/2022 12:00:00 AM
10/14/2022
10/09/2022
10/9/2022 12:00:00 AM
10/29/2022
10/23/2022
10/23/2022 12:00:00 AM
La mesure start_of_week est créée dans l'objet graphique via la fonction weekstart() et en transmettant le champ date comme argument de la fonction.
La fonction weekstart() identifie initialement la semaine de la valeur date, renvoyant un horodatage pour la premiè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 weekstart() identifie que le premier dimanche avant le 5 février – et par conséquent le début de la semaine – était le 30 janvier. Par conséquent, la valeur start_of_week de cette transaction renvoie la première milliseconde de ce jour-là, à savoir, le 30 janvier à 12:00:00 AM.
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 Payroll.
Données constituées des ID des employés, des noms des employés et du salaire quotidien touché par chaque employé.
Les employés commencent à travailler le lundi et travaillent six jours par semaine. La variable système FirstWeekDay ne doit pas être modifiée.
L'utilisateur final souhaite un objet graphique qui affiche, par ID d'employé et nom d'employé, les salaires touchés au cours de la semaine jusqu'à la date du jour.
La fonction weekstart(), en utilisant la date d'aujourd'hui comme premier argument et 0 comme troisième argument, définit le lundi comme le premier jour de la semaine et renvoie la date de début de la semaine en cours. En soustrayant ce résultat de la date actuelle, l'expression renvoie alors le nombre de jours qui se sont écoulés jusqu'à présent cette semaine.
La condition évalue ensuite si cette semaine comptait plus de six jours. Si c'est le cas, la valeur day_rate de l'employé est multipliée par 6 jours. Sinon, la valeur day_rate est multipliée par le nombre de jours qui se sont déroulés jusqu'à ce jour cette semaine.
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 !