weekname - script- en diagramfunctie
Deze functie retourneert het jaar en weeknummer met een onderliggende numerieke waarde die overeenkomt met een tijdstempel van de eerste milliseconde van de eerste dag van de week die date bevat.
Syntaxis:
WeekName(date[, period_no[,first_week_day]])
De functie weekname() bepaalt in welke week de datum valt en retourneert het weeknummer en het jaar van die week. De eerste dag van de week wordt bepaald door de systeemvariabele FirstWeekDay. U kunt echter ook de eerste dag van de week wijzigen door het argument first_week_day in de functie weekname() te gebruiken.
Qlik Sense-toepassingen gebruiken standaard gebroken weken (gedefinieerd door de systeemvariabele BrokenWeeks) en daarom begint het aantal weken op 1 januari en eindigt op de dag voorafgaand aan de systeemvariabele FirstWeekDay, ongeacht hoeveel dagen er zijn verstreken.
Als uw toepassing echter ononderbroken weken gebruikt, kan week 1 in het voorgaande jaar of in de eerste paar dagen van januari beginnen. Dit hangt af van hoe u de systeemvariabelen ReferenceDay en FirstWeekDay gebruikt.
Wanneer gebruiken
De functie weekname() is handig als u aggregaties per week wilt vergelijken.
Bijvoorbeeld als u de totale verkoop van producten per week wilt zien. Gebruik weekname() in plaats van lunarweekname() om consistentie te behouden met de omgevingsvariabele BrokenWeeks in de toepassing. Als de toepassing ononderbroken weken gebruikt, kan week 1 datums van december van het voorgaande jaar bevatten of datums in januari van het lopende jaar uitsluiten. Als de toepassing gebruikmaakt van gebroken weken, kan week 1 minder dan zeven dagen bevatten.
Retourgegevenstypen: dual
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 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. |
U kunt de volgende waarden gebruiken om de dag in te stellen waarop de week begint in het argument first_week_day:
Dag | Waarde |
---|---|
Maandag | 0 |
Dinsdag | 1 |
Woensdag | 2 |
Donderdag | 3 |
Vrijdag | 4 |
Zaterdag | 5 |
Zondag | 6 |
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 | Resultaat |
---|---|
weekname('01/12/2013') | Retourneert 2013/02. |
weekname('01/12/2013', -1) | Returns 2013/01. |
weekname('01/12/2013', 0, 1) | Retourneert 2013/02. |
Voorbeeld 1 – datum zonder 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 gegevensset met een set transacties voor de laatste week van 2021 en eerste twee weken van 2022 wordt geladen in een tabel met de naam 'Transactions'.
-
De systeemvariabele DateFormat die is ingesteld op de indeling MM/DD/YYYY.
-
De systeemvariabele BrokenWeeks die is ingesteld op 1.
-
De systeemvariabele FirstWeekDay die is ingesteld op 6.
-
Een voorgaande lading die het volgende bevat:
-
De functie weekday() die is ingesteld als het veld, 'week_number', dat het jaar- en weeknummer retourneert wanneer de transacties plaatsvonden.
-
De functie weekname() die is ingesteld als het veld met de naam 'week_day', om de weekdagwaarde van elke transactiedatum weer te geven.
-
Load-script
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Ma | 2021/53 |
8184 | 12/28/2021 | Di | 2021/53 |
8185 | 12/29/2021 | Wo | 2021/53 |
8186 | 12/30/2021 | Do | 2021/53 |
8187 | 12/31/2021 | Vr | 2021/53 |
8188 | 01/01/2022 | Za | 2022/01 |
8189 | 01/02/2022 | Zo | 2022/02 |
8190 | 01/03/2022 | Ma | 2022/02 |
8191 | 01/04/2022 | Di | 2022/02 |
8192 | 01/05/2022 | Wo | 2022/02 |
8193 | 01/06/2022 | Do | 2022/02 |
8194 | 01/07/2022 | Vr | 2022/02 |
8195 | 01/08/2022 | Za | 2022/02 |
8196 | 01/09/2022 | Zo | 2022/03 |
8197 | 01/10/2022 | Ma | 2022/03 |
8198 | 01/11/2022 | Di | 2022/03 |
8199 | 01/12/2022 | Wo | 2022/03 |
8200 | 01/13/2022 | Do | 2022/03 |
8201 | 01/14/2022 | Vr | 2022/03 |
Het veld 'week_number' wordt gemaakt in de voorafgaande load-instructie met behulp van de functie weekname() en geeft het datumveld door als het argument van de functie.
De functie weekname() identificeert aanvankelijk in welke week de datumwaarde valt en retourneert het aantal weeknummers en het jaar waarin de transactie plaatsvindt.
De systeemvariabele FirstWeekDay stelt zondag in als de eerste dag van de week. De systeemvariabele BrokenWeeks stelt de toepassing in op het gebruik van gebroken weken, wat betekent dat week 1 op 1 januari begint.
Week 1 begint op 1 januari, wat een zaterdag is, en daarom retourneren transacties die op deze datum plaatsvinden de waarde 2022/01 (het jaar- en weeknummer).
Omdat de toepassing gebroken weken gebruikt en de eerste weekdag zondag is, retourneren transacties die plaatsvinden van 2 januari tot 8 januari de waarde 2022/02 (weeknummer 2 in 2022). Een voorbeeld hiervan is transactie 8192 die plaatsvond op 5 januari en de waarde 2022/02 retourneert voor het veld 'week_number'.
Voorbeeld 2 – period_no
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is het echter de taak om een veld te maken, 'previous_week_number', dat het jaar en het weeknummer retourneert voordat de transacties plaatsvonden.
Open de Editor voor laden van gegevens en voeg het volgende load-script toe aan een nieuw tabblad.
Load-script
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Ma | 2021/52 |
8184 | 12/28/2021 | Di | 2021/52 |
8185 | 12/29/2021 | Wo | 2021/52 |
8186 | 12/30/2021 | Do | 2021/52 |
8187 | 12/31/2021 | Vr | 2021/52 |
8188 | 01/01/2022 | Za | 2021/52 |
8189 | 01/02/2022 | Zo | 2021/53 |
8190 | 01/03/2022 | Ma | 2021/53 |
8191 | 01/04/2022 | Di | 2021/53 |
8192 | 01/05/2022 | Wo | 2021/53 |
8193 | 01/06/2022 | Do | 2021/53 |
8194 | 01/07/2022 | Vr | 2021/53 |
8195 | 01/08/2022 | Za | 2022/01 |
8196 | 01/09/2022 | Zo | 2022/02 |
8197 | 01/10/2022 | Ma | 2022/02 |
8198 | 01/11/2022 | Di | 2022/02 |
8199 | 01/12/2022 | Wo | 2022/02 |
8200 | 01/13/2022 | Do | 2022/02 |
8201 | 01/14/2022 | Vr | 2022/02 |
Omdat een period_no van -1 werd gebruikt als het offset-argument in de functie weekname(), 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 8192 vond plaats op 5 januari 2022. De functie weekname() kijkt een week eerder, 30 december 2021, en retourneert het weeknummer en het jaar voor die datum – 2021/53.
Voorbeeld 3 – first_week_day
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is het bedrijfsbeleid echter dat de werkweek op dinsdag begint.
Open de Editor voor laden van gegevens en voeg het volgende load-script toe aan een nieuw tabblad.
Load-script
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Ma | 2021/52 |
8184 | 12/28/2021 | Di | 2021/53 |
8185 | 12/29/2021 | Wo | 2021/53 |
8186 | 12/30/2021 | Do | 2021/53 |
8187 | 12/31/2021 | Vr | 2021/53 |
8188 | 01/01/2022 | Za | 2022/01 |
8189 | 01/02/2022 | Zo | 2022/01 |
8190 | 01/03/2022 | Ma | 2022/01 |
8191 | 01/04/2022 | Di | 2022/02 |
8192 | 01/05/2022 | Wo | 2022/02 |
8193 | 01/06/2022 | Do | 2022/02 |
8194 | 01/07/2022 | Vr | 2022/02 |
8195 | 01/08/2022 | Za | 2022/02 |
8196 | 01/09/2022 | Zo | 2022/02 |
8197 | 01/10/2022 | Ma | 2022/02 |
8198 | 01/11/2022 | Di | 2022/03 |
8199 | 01/12/2022 | Wo | 2022/03 |
8200 | 01/13/2022 | Do | 2022/03 |
8201 | 01/14/2022 | Vr | 2022/03 |
Omdat het argument first_week_date van 1 wordt gebruikt in de functie weekname(), wordt dinsdag als eerste dag van de week gebruikt. De functie bepaalt dus dat week 53 van 2021 begint op dinsdag 28 december; en vanwege de toepassing met gebroken weken begint week 1 op 1 januari 2022 en eindigt op de laatste milliseconde van maandag 3 januari 2022.
Transactie 8192 vond plaats op 5 januari 2022. Daarom, met behulp van een parameter first_week_day van dinsdag, retourneert de functie weekname() de waarde 2022/02 voor het veld 'week_number'.
Voorbeeld 4 – diagramobjectvoorbeeld
Overzicht
Dezelfde gegevensverzameling en het scenario uit het eerste voorbeeld worden gebruikt.
In dit voorbeeld is de gegevensverzameling echter niet gewijzigd en wordt in de applicatie geladen. De berekening die het jaarnummer van de week retourneert maand waarin de transacties plaatsvonden is gemaakt als meting in een diagramobject van de toepassing.
Load-script
SET BrokenWeeks=1;
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
id
-
date
-
=week_day (date)
Maak de volgende meting om de start van de week waarin een transactie plaatsvindt te berekenen:
=weekname(date)
id | date | =weekday(date) | =weekname(date) |
---|---|---|---|
8183 | 12/27/2021 | Ma | 2021/53 |
8184 | 12/28/2021 | Di | 2021/53 |
8185 | 12/29/2021 | Wo | 2021/53 |
8186 | 12/30/2021 | Do | 2021/53 |
8187 | 12/31/2021 | Vr | 2021/53 |
8188 | 01/01/2022 | Za | 2022/01 |
8189 | 01/02/2022 | Zo | 2022/02 |
8190 | 01/03/2022 | Ma | 2022/02 |
8191 | 01/04/2022 | Di | 2022/02 |
8192 | 01/05/2022 | Wo | 2022/02 |
8193 | 01/06/2022 | Do | 2022/02 |
8194 | 01/07/2022 | Vr | 2022/02 |
8195 | 01/08/2022 | Za | 2022/02 |
8196 | 01/09/2022 | Zo | 2022/03 |
8197 | 01/10/2022 | Ma | 2022/03 |
8198 | 01/11/2022 | Di | 2022/03 |
8199 | 01/12/2022 | Wo | 2022/03 |
8200 | 01/13/2022 | Do | 2022/03 |
8201 | 01/14/2022 | Vr | 2022/03 |
Het veld ‘week_number’ wordt gemaakt als een meting in het diagramobject door de functie weekname() te gebruiken en het datumveld door te geven als het argument van de functie.
De functie weekname() identificeert aanvankelijk in welke week de datumwaarde valt en retourneert het aantal weeknummers en het jaar waarin de transactie plaatsvindt.
De systeemvariabele FirstWeekDay stelt zondag in als de eerste dag van de week. De systeemvariabele BrokenWeeks stelt de toepassing in op het gebruik van gebroken weken, wat betekent dat week 1 op 1 januari begint.
Omdat de toepassing gebroken weken gebruikt en de eerste weekdag zondag is, retourneren transacties die plaatsvinden van 2 januari tot 8 januari de waarde 2022/02, weeknummer 2 in 2022. Transactie 8192 vond plaats op 5 januari en de waarde retourneert 2022/02 voor het veld 'week_number'.
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 met een set transacties voor de laatste week van 2019 en eerste twee weken van 2020 wordt geladen in een tabel met de naam 'Transactions'.
-
De systeemvariabele BrokenWeeks die is ingesteld op 0.
-
De systeemvariabele ReferenceDay die is ingesteld op 2.
-
De systeemvariabele DateFormat die is ingesteld op de indeling MM/DD/YYYY.
Load-script
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel.
Maak een berekende dimensie met behulp van de volgende uitdrukking:
=weekname(date)
Maak de volgende aggregatiemeting om de totale verkoop te berekenen:
=sum(amount)
Stel de Getalnotatie van de meting in op Geld.
weekname(date) | =sum(amount) |
---|---|
2019/52 | $125.69 |
2020/01 | $346.51 |
2020/02 | $347.57 |
2020/03 | $122.01 |
Om de resultaten van het gebruik van de functie weekname() in dit scenario te demonstreren, voegt u het volgende veld toe als een dimensie:
date
weekname(date) | date | =sum(amount) |
---|---|---|
2019/52 | 12/27/2019 | $58.27 |
2019/52 | 12/28/2019 | $67.42 |
2020/01 | 12/29/2019 | $23.80 |
2020/01 | 12/30/2019 | $82.06 |
2020/01 | 12/31/2019 | $40.56 |
2020/01 | 01/01/2020 | $37.23 |
2020/01 | 01/02/2020 | $17.17 |
2020/01 | 01/03/2020 | $88.27 |
2020/01 | 01/04/2020 | $57.42 |
2020/02 | 01/05/2020 | $53.80 |
2020/02 | 01/06/2020 | $82.06 |
2020/02 | 01/07/2020 | $40.56 |
2020/02 | 01/08/2020 | $53.67 |
2020/02 | 01/09/2020 | $26.63 |
2020/02 | 01/10/2020 | $72.48 |
2020/02 | 01/11/2020 | $18.37 |
2020/03 | 01/12/2020 | $45.26 |
2020/03 | 01/13/2020 | $58.23 |
2020/03 | 01/14/2020 | $18.52 |
Omdat de toepassing ononderbroken weken gebruikt en week 1 minimaal twee dagen in januari vereist vanwege de systeemvariabele ReferenceDay, bevat week 1 van 2020 transacties vanaf 29 december 2019.