weekend - script- en diagramfunctie
Deze functie retourneert een waarde die overeenkomt met een tijdstempel van de laatste milliseconde van de laatste dag (zondag) van de kalenderweek die date bevat. De standaarduitvoernotatie is de DateFormat die is ingesteld in het script.
Syntaxis:
WeekEnd(date [, period_no[, first_week_day]])
Retourgegevenstypen: dual
De weekend()-functie bepaalt welke week de datum in valt. Het retourneert vervolgens een tijdstempel, in datumnotatie, voor de laatste milliseconde van die week. De eerste dag van de week wordt bepaald door de omgevingsvariabele FirstWeekDay. Maar dit kan worden vervangen door het first_week_day-argument in de weekend()-functie.
Argument | Beschrijving |
---|---|
date | De te evalueren datum of tijdstempel. |
period_no | shift is een geheel getal, waarbij de waarde 0 de week aangeeft die date bevat. Negatieve waarden in verschuiving geven voorgaande weken aan en positieve waarden geven volgende weken aan. |
first_week_day |
Geeft de dag op waarop de week begint. Bij weglating wordt de waarde van de variabele FirstWeekDay gebruikt. De mogelijke waarden voor first_week_day zijn 0 voor maandag, 1 voor dinsdag, 2 voor woensdag, 3 voor donderdag, 4 voor vrijdag, 5 voor zaterdag en 6 voor zondag. Zie FirstWeekDay voor meer informatie over de systeemvariabele |
broken_weeks |
Als u broken_weeks (gebroken weken) niet specificeert, dan wordt de waarde van variabele BrokenWeeks gebruikt om te definiëren of weken al dan niet gebroken zijn. Zie BrokenWeeks voor meer informatie over de systeemvariabele |
Wanneer gebruiken
De weekend()-functie wordt doorgaans gebruikt als onderdeel van een uitdrukking als de gebruiker wil dat in de berekening de resterende dagen van de week voor de opgegeven datum wordt gebruikt. Hij zou bijvoorbeeld kunnen worden gebruikt als een gebruiker de totale rente wil berekenen die tijdens de week nog niet is opgebouwd.
Voorbeeld | Resultaat |
---|---|
weekend('01/10/2013') | Retourneert 01/12/2013 23:59:59. |
weekend('01/10/2013', -1) | Retourneert 01/05/2013 23:59:59.. |
weekend('01/10/2013', 0, 1) | Retourneert 01/14/2013 23:59:59. |
Landinstellingen
Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. De datumopmaak wordt opgegeven in de opdracht SET DateFormat in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden.
Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Voorbeeld 1 – Basisvoorbeeld
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensset met een set transacties voor 2022 die wordt geladen in een tabel met de naam Transactions.
-
Het datumveld opgegeven in de DateFormat-systeemvariabele (MM/DD/YYYY) indeling.
-
Het maken van een veld, end_of_week, dat een tijdstempel voor het einde van de week retourneert waarin de transactie plaatsvond.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 |
Het veld end_of_week wordt gemaakt in de voorafgaande load-instructie met behulp van de functie weekend() en geeft het datumveld door als het argument van de functie.
De functie weekend() identificeert in welke week de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van die week.
Transactie 8191 vond plaats op 5 februari. De systeemvariabele FirstWeekDay stelt de eerste dag van de week in op een zondag. De weekend()-functie identificeert dat de eerste zaterdag na 5 februari, en daarom het einde van de week, op 5 februari viel. Daarom retourneert de end_of_week-waarde voor die transactie de laatste milliseconde van die dag, die op 5 februari om 11:59:59 PM was.
Voorbeeld 2 – period_no
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Dezelfde gegevensset en het scenario uit het eerste voorbeeld.
-
Het maken van een veld, previous_week_end, dat de tijdstempel voor het einde van de week retourneert voordat de transactie plaatsvond.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 |
In dit geval, omdat een period_no van -1 werd gebruikt als het offset-argument in de weekend()-functie, identificeert de functie eerst de week waarin de transacties plaatsvinden. Het kijkt dan een week eerder en identificeert de laatste milliseconde van die week.
Transactie 8196 vond plaats op 15 juni. De weekend()-functie identificeert dat de week op 12 juni begint. Daarom eindigt de vorige week op 11 juni om 11:59:59 PM; dit is de waarde die voor het previous_week_end-veld wordt geretourneerd.
Voorbeeld 3 – first_week_day
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat dezelfde gegevensset en scenario als het eerste voorbeeld. Maar in dit voorbeeld moeten we dinsdag instellen als de eerste dag van de werkweek.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
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 | 2/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 |
In dit geval geldt dat omdat het first_week_date-argument 1 wordt gebruikt in de weekend()-functie, dinsdag als eerste dag van de week wordt ingesteld.
Transactie 8191 vond plaats op 5 februari. De weekend()-functie identificeert dat de eerste maandag na deze datum, en daarom het einde van de week en geretourneerde waarde, op 6 februari om 11:59:59 PM viel.
Voorbeeld 4 – diagramobjectvoorbeeld
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat dezelfde gegevensset en scenario als het eerste voorbeeld. In dit voorbeeld wordt de ongewijzigde gegevensset echter in de applicatie geladen. De berekening die een tijdstempel retourneert voor het einde van de week waarin de transacties plaatsvonden, wordt gemaakt als meting in een diagramobject van de toepassing.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie: date.
Voeg de volgende metingen toe om de start van de week waarin een transactie plaatsvindt te berekenen:
-
=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 |
De meting end_of_week wordt gemaakt in het diagramobject met behulp van de functie weekend() en geeft het veld door als het argument van de functie. De weekend()-functie identificeert in welke week de datumwaarde valt en retourneert een tijdstempel voor de laatste milliseconde van die week.
Transactie 8191 vond plaats op 5 februari. De systeemvariabele FirstWeekDay stelt de eerste dag van de week in op een zondag. De weekend()-functie identificeert dat de eerste zaterdag na 5 februari, en daarom het einde van de week, op 5 februari viel. Daarom retourneert de end_of_week-waarde voor die transactie de laatste milliseconde van die dag, die op 5 februari om 11:59:59 PM was.
Voorbeeld 5 – Scenario
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensset die wordt geladen in een tabel met de naam Employee_Expenses.
-
Gegevens omvatten werknemers-id's, werknemersnamen en de gemiddelde dagelijkse onkostendeclaraties van elke werknemer.
De eindgebruiker wil graag een diagramobject dat per werknemer-id en werknemersnaam de geschatte nog te maken onkostendeclaraties voor de rest van de week weergeeft.
Load-script
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
];
Resultaten
Doe het volgende:
-
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
employee_id
-
employee_name
-
-
Maak nu een meting om de opgebouwde rente te berekenen:
=(weekend(today(1))-today(1))*avg_daily_claim
-
Stel de Getalnotatie van de meting in op Geld.
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 |
Door de datum van vandaag als het enige argument te gebruiken, retourneert de weekend()-functie de einddatum van de huidige week. Door vervolgens de datum van vandaag af te trekken van de einddatum van de week, retourneert de uitdrukking het aantal resterende dagen in deze week.
Deze waarde wordt vervolgens vermenigvuldigd met de gemiddelde dagelijkse onkostendeclaratie van elke werknemer om de geschatte waarde te berekenen van de declaraties die elke werknemer naar verwachting in de resterende week zal indienen.