quarterstart - fonction de script et fonction de graphique
Cette fonction renvoie une valeur correspondant à un horodatage de la première milliseconde du trimestre contenant l'argument date. Le format de sortie par défaut correspond à l'argument DateFormat défini dans le script.
QuarterStart(date[, period_no[, first_month_of_year]])
double
La fonction quarterstart() détermine le trimestre dans lequel tombe la date. Elle renvoie ensuite un horodatage, au format date, pour la première milliseconde du premier mois de ce trimestre-là.
Argument | Description |
---|---|
date | Date ou horodatage à évaluer. |
period_no | period_no est un entier, où la valeur 0 indique le trimestre comprenant l'argument date. Les valeurs négatives de l'argument period_no indiquent les trimestres passés tandis que les valeurs positives désignent les trimestres à venir. |
first_month_of_year | Si vous voulez utiliser des exercices (financiers) qui ne commencent pas en janvier, indiquez une valeur comprise entre 2 et 12 dans l'argument first_month_of_year. |
Cas d'utilisation
La fonction quarterstart() est couramment utilisée dans le cadre d'une expression lorsque l'utilisateur souhaite que le calcul utilise la fraction du trimestre qui s'est écoulée jusqu'à présent. Par exemple, elle peut être utilisée si un utilisateur souhaite calculer les intérêts cumulés au cours d'un trimestre jusqu'à la date d'aujourd'hui.
Exemple | Résultat |
---|---|
quarterstart('10/29/2005') | Renvoie 10/01/2005. |
quarterstart('10/29/2005', -1 ) | Renvoie 07/01/2005. |
quarterstart('10/29/2005', 0, 3) | Renvoie 09/01/2005. |
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 – 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_quarter, qui renvoie un horodatage du début du trimestre au cours duquel les transactions ont eu lieu.
Script de chargement
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterstart(date) as start_of_quarter,
timestamp(quarterstart(date)) as start_of_quarter_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
-
start_of_quarter
-
start_of_quarter_timestamp
date | start_of_quarter | start_of_quarter_timestamp |
---|---|---|
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
3/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
4/1/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
5/7/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
5/16/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
6/15/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
6/26/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
8/2/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
8/8/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
8/19/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
9/26/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
Le champ start_of_quarter est créé dans l'instruction preceding load via la fonction quarterstart() et en transmettant le champ date comme argument de la fonction. La fonction quarterstart() identifie initialement le trimestre au cours duquel tombe la valeur date. Elle renvoie ensuite un horodatage de la première milliseconde de ce trimestre-là.
La transaction 8203 a eu lieu le 8 août. La fonction quarterstart() identifie que la transaction a eu lieu au cours du troisième trimestre et renvoie la première milliseconde de ce trimestre-là, à savoir, le 1er juillet à 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_quarter_start, qui renvoie l'horodatage du début du trimestre avant la transaction.
Script de chargement
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterstart(date,-1) as previous_quarter_start,
timestamp(quarterstart(date,-1)) as previous_quarter_start_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_quarter_start
-
previous_quarter_start_timestamp
date | previous_quarter_start | previous_quarter_start_timestamp |
---|---|---|
1/7/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
1/19/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
2/5/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
2/28/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
3/16/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
4/1/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
5/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
5/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
6/15/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
6/26/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
7/9/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
7/22/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
7/23/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
7/27/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
8/2/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
8/8/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
8/19/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
9/26/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
10/14/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
10/29/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
Dans cet exemple, étant donné que l'argument period_no de -1 a été utilisé comme argument de décalage dans la fonction quarterstart(), la fonction commence par identifier le trimestre au cours duquel les transactions ont lieu. Elle décale ensuite d'un trimestre en arrière et identifie la première milliseconde de ce trimestre-là.
La transaction 8203 a eu lieu le 8 août. La fonction quarterstart() identifie que le trimestre avant la transaction était compris entre le 1er avril et le 30 juin. Elle renvoie alors la première milliseconde de ce trimestre, le 1er avril à 12:00:00 AM.
Exemple 3 – first_month_of_year
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 1er mars comme le début de l'exercice financier.
Script de chargement
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
quarterstart(date,0,3) as start_of_quarter,
timestamp(quarterstart(date,0,3)) as start_of_quarter_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
-
start_of_quarter
-
start_of_quarter_timestamp
date | start_of_quarter | start_of_quarter_timestamp |
---|---|---|
1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
1/19/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
2/5/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
2/28/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
4/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/7/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
5/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
8/2/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
8/8/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
8/19/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
Dans cet exemple, étant donné que l'argument first_month_of_year égal à 3 est utilisé dans la fonction quarterstart(), il reporte le début de l'année du 1er janvier au 1er mars.
La transaction 8203 a eu lieu le 8 août. Étant donné que le début de l'année est le 1er mars, les trimestres de l'année sont les suivants : March-May, June-August, September-November et December-February. La fonction quarterstart() identifie que la transaction a eu lieu au cours du trimestre compris entre le début de juin et d'août et renvoie la première milliseconde de ce trimestre-là, à savoir, le 1er juin à 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 à la fin du trimestre 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.
Ajoutez les mesures suivantes :
-
=quarterstart(date)
-
=timestamp(quarterstart(date))
date | =quarterstart(date) | =timestamp(quarterstart(date)) |
---|---|---|
10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
9/26/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
6/15/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
6/26/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
3/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
La mesure start_of_quarter est créée dans l'objet graphique via la fonction quarterstart() et en transmettant le champ date comme argument de la fonction.
La fonction quarterstart() identifie le trimestre de la valeur date en renvoyant un horodatage pour la première milliseconde de ce trimestre-là.
La transaction 8203 a eu lieu le 8 août. La fonction quarterstart() identifie que la transaction a eu lieu au cours du troisième trimestre et renvoie la première milliseconde de ce trimestre-là. La valeur renvoyée est le 1er juillet à 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 contenant un ensemble de soldes de prêts, chargé dans une table appelée Loans.
-
Données constituées des ID des prêts, du solde au début du trimestre et du taux d'intérêt simple facturé pour chaque prêt par an.
L'utilisateur final souhaite un objet graphique qui affiche, par ID de prêt, les intérêts actuels qui ont été accumulés pour chaque prêt au cours du trimestre jusqu'à la date du jour.
Script de chargement
Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
Résultats
Procédez comme suit :
-
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
-
loan_id
-
start_balance
-
-
Ensuite, pour calculer les intérêts accumulés, créez la mesure suivante :
=start_balance*(rate*(today(1)-quarterstart(today(1)))/365)
-
Définissez le Formatage des nombres des mesures sur Devise.
loan_id | start_balance | =start_balance*(rate*(today(1)-quarterstart(today(1)))/365) |
---|---|---|
8188 | $10000.00 | $15.07 |
8189 | $15000.00 | $128.84 |
8190 | $17500.00 | $63.29 |
8191 | $21000.00 | $107.59 |
8192 | $90000.00 | $1139.18 |
Si on utilise la date d'aujourd'hui comme seul argument, la fonction quarterstart() renvoie la date de début de l'année en cours. Si on soustraie ce résultat de la date actuelle, l'expression renvoie le nombre de jours qui se sont écoulés jusqu'à présent ce trimestre.
Cette valeur est ensuite multipliée par le taux d'intérêt et divisée par 365 pour obtenir le taux d'intérêt effectif encouru pour cette période. Le résultat est ensuite multiplié par le solde initial du prêt pour renvoyer les intérêts cumulés jusqu'à présent ce trimestre.