Deze functie retourneert een waarde die overeenkomt met een tijdstempel van de eerste milliseconde van de eerste dag van de kalenderweek die date bevat. De standaarduitvoernotatie is de DateFormat die is ingesteld in het script.
De weekstart()-functie bepaalt welke week de datum in valt. Het retourneert vervolgens een tijdstempel, in datumnotatie, voor de eerste milliseconde van die week. De eerste dag van de week wordt bepaald door de omgevingsvariabeleFirstWeekDay. Maar dit kan worden vervangen door het first_week_day-argument in de weekstart()-functie.
Argumenten
Argument
Beschrijving
timestamp
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 first_week_day-waarden 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.
Wanneer gebruiken
De functie weekstart() wordt doorgaans gebruikt als onderdeel van een uitdrukking als de gebruiker wil dat in de berekening het deel van de week wordt gebruikt dat al is geweest. Bijvoorbeeld: het zou kunnen worden gebruikt om het totale salaris te berekenen dat werknemers op een week tot dusver hebben verdiend.
De volgende voorbeelden gaan uit van het volgende:
SET FirstWeekDay=0;
Voorbeelden van functies
Voorbeeld
Resultaat
weekstart('01/12/2013')
Retourneert 01/07/2013.
weekstart('01/12/2013', -1 )
Retourneert 11/31/2012.
weekstart('01/12/2013', 0, 1)
Retourneert 01/08/2013.
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. Ga voor meer informatie naar Regionale instellingen voor apps en scripts aanpassen.
Standaard landinstellingen van de app zijn gebaseerd op het gebruikersprofiel. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Cloud. Qlik Cloud wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Als u ISO-instellingen wilt voor weken en weeknummers, moet u het volgende opnemen in het script:
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
Als u US-instellingen wilt, moet u het volgende opnemen in het script:
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
De bovenstaande voorbeelden resulteren in het volgende op basis van de functie weekstart():
Voorbeeld van de functie Weekstart
Date
ISO eerste dag van de week
US eerste dag van de week
Za 2020 Dec 26
2020-12-21
12/20/2020
Zo 2020 Dec 27
2020-12-21
12/27/2020
Ma 2020 Dec 28
2020-12-28
12/27/2020
Di 2020 Dec 29
2020-12-28
12/27/2020
Wo 2020 Dec 30
2020-12-28
12/27/2020
Do 2020 Dec 31
2020-12-28
12/27/2020
Vr 2021 Jan 1
2020-12-28
12/27/2020
Za 2021 Jan 2
2020-12-28
12/27/2020
Zo 2021 Jan 3
2020-12-28
1/3/2021
Ma 2021 Jan 4
2021-01-04
1/3/2021
Di 2021 Jan 5
2021-01-04
1/3/2021
InformatieDe week begint op maandag in de ISO-kolom en op zondag in de US-kolom.
Voorbeeld 1 – geen aanvullende argumenten
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensverzameling met een set transacties voor 2022 die wordt geladen in de tabel Transactions.
Het datumveld opgegeven in de DateFormat-systeemvariabele (MM/DD/YYYY) indeling.
Het maken van een veld, start_of_week, dat een tijdstempel voor het begin van de week retourneert waarin de transactie plaatsvond.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
date
start_of_week
start_of_week_timestamp
Resultatentabel
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/24/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
Het veld 'start_of_week' wordt gemaakt in de voorafgaande load-instructie met behulp van de functie weekstart() en geeft het datumveld door als het argument van de functie.
De weekstart()-functie identificeert aanvankelijk in welke week de datumwaarde valt en retourneert een tijdstempel voor de eerste 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 weekstart()-functie identificeert dat de eerste zaterdag vóór 5 februari, en daarom het begin van de week, op 30 februari viel. Daarom retourneert de start_of_week-waarde voor die transactie de eerste milliseconde van die dag, die op 30 januari om 12:00:00 AM 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_start, dat de tijdstempel voor het begin van het kwartaal retourneert voordat de transactie plaatsvond.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
date
previous_week_start
previous_week_start_timestamp
Resultatentabel
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/24/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
In dit geval, omdat een period_no van -1 werd gebruikt als het offset-argument in de weekstart()-functie, identificeert de functie eerst de week waarin de transacties plaatsvinden. Het kijkt dan een week eerder en identificeert de eerste milliseconde van die week.
Transactie 8196 vond plaats op 15 juni. De weekstart()-functie identificeert dat de week op 12 juni begint. Daarom begon de vorige week op 5 juni om 12:00:00 AM; dit is de waarde die voor het previous_week_start-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.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
date
start_of_week
start_of_week_timestamp
Resultatentabel
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
In dit geval geldt dat omdat het first_week_date-argument 1 wordt gebruikt in de weekstart()-functie, dinsdag als eerste dag van de week wordt ingesteld.
Transactie 8191 vond plaats op 5 februari. De weekstart()-functie identificeert dat de eerste dinsdag vóór deze datum, en daarom het begin van de week en geretourneerde waarde, op 1 februari om 12:00:00 AM 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 begin van de week waarin de transacties plaatsvonden, wordt gemaakt als meting in een diagramobject van de toepassing.
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 het begin van de week waarin een transactie plaatsvindt te berekenen:
=weekstart(date)
=timestamp(weekstart(date))
Resultatentabel
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/24/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
De meting start_of_week wordt gemaakt in het diagramobject met behulp van de functie weekstart() en geeft het veld date door als het argument van de functie.
De weekstart()-functie identificeert aanvankelijk in welke week de datumwaarde valt en retourneert een tijdstempel voor de eerste 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 weekstart()-functie identificeert dat de eerste zondag vóór 5 februari, en daarom het begin van de week, op 30 januari viel. De start_of_week-waarde voor die transactie retourneert daarom de eerste milliseconde van die dag, 30 januari om 12:00:00 AM.
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 Payroll.
Gegevens omvatten werknemers-id's, werknemersnamen en het gemiddelde dagsalaris dat elke werknemer verdient.
Werknemers beginnen hun werk op maandag en werken zes dagen per week. De FirstWeekDay-systeemvariabele mag niet worden aangepast.
De eindgebruiker wil een diagramobject dat de salarissen weergeeft op werknemers-id en werknemersnaam, die in de week tot dusver zijn verdiend.
De weekstart()-functie die door de datum van vandaag als het eerste argument en 0 als het derde argument te gebruiken, maandag instelt als de eerste dag van de week en de begindatum van de huidige week retourneert. Door dat resultaat af te trekken van de huidige datum, retourneert de uitdrukking vervolgens het aantal dagen dat in deze week tot nu toe is verstreken.
De voorwaarde bepaalt vervolgens of er meer dan zes dagen deze week zijn geweest. Als dat zo is dan wordt het day_rate van de werknemer vermenigvuldigd met 6 dagen. Anders wordt het day_rate vermenigvuldigd met het aantal dagen tot nu toe deze week.
Was deze pagina nuttig?
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!