すべて展開 / 折りたたむ  
                     weekname  - スクリプトおよびチャート関数このページ上  
                この関数は、date  を含む週の初日の最初のミリ秒のタイムスタンプに対応する数値を基底として、年と週番号を表示する値を返します。
                構文:    
                WeekName( date[, period_no [, first_week_day [, broken_weeks [, reference_day]]]] ) 
                
                 weekname()  関数は、日付が属する週を判別し、その週の週番号と年を返します。週の最初の曜日は、 FirstWeekDay  システム変数によって決定されます。ただし、 weekname()  関数で first_week_day  引数を使用して、週の最初の曜日を変更することもできます。 
                Qlik Sense  では、アプリ作成時に地域設定がフェッチされ、対応する設定は環境変数としてスクリプトに保管されます。
                米国のアプリ開発者は、分離した週に対応して、スクリプトで Set BrokenWeeks=1;  をよく取得します。ヨーロッパのアプリ開発者は、未分離の週に対応して、スクリプトで Set BrokenWeeks=0;  をよく取得します。
                アプリケーションが分割された週を使用する場合、発生日数に関係なく週数のカウントは 1 月 1 日に始まり、FirstWeekDay  システム変数の前日に終了します。
                ただし、アプリケーションが連続した週を使用している場合、第 1 週は前年または 1 月の最初の数日間に開始できます。これは、 ReferenceDay  および FirstWeekDay  システム変数の使用方法によって異なります。
                
                    Weekname 関数の例 
                     
                     
                     
                    
                        
                            Date 
                            ISO week name 
                            US week name 
                         
                     
                    
                        
                            2020 年 12 月 26 日 (土) 
                            2020/52 
                            2020/52 
                         
                        
                            2020 年 12 月 27 日 (日) 
                            2020/52 
                            2020/53 
                         
                        
                            2020 年 12 月 28 日 (月) 
                            2020/53 
                            2020/53 
                         
                        
                            2020 年 12 月 29 日 (火) 
                            2020/53 
                            2020/53 
                         
                        
                            2020 年 12 月 30 日 (水) 
                            2020/53 
                            2020/53 
                         
                        
                            2020 年 12 月 31 日 (木) 
                            2020/53 
                            2020/53 
                         
                        
                            2021 年 1 月 1 日 (金) 
                            2020/53 
                            2021/01 
                         
                        
                            2021 年 1 月 2 日 (土) 
                            2020/53 
                            2021/01 
                         
                        
                            2021 年 1 月 3 日 (日) 
                            2020/53 
                            2021/02 
                         
                        
                            2021 年 1 月 4 日 (月) 
                            2021/01 
                            2021/02 
                         
                        
                            2021 年 1 月 5 日 (火) 
                            2021/01 
                            2021/02 
                         
                     
                
 
                使用に適しているケース
                 weekname()  関数は、集計を週単位で比較する場合に便利です。
                たとえば、製品の総売上高を週ごとに表示する場合などが考えられます。アプリケーションで BrokenWeeks  環境変数との一貫性を維持するには、 weekname()  の代わりに lunarweekname()  を使用します。アプリケーションが連続週を使用している場合、第 1 週には前年の 12 月の日付が含まれるか、今年の 1 月の日付が除外されます。アプリケーションが分割された週を使用している場合、第 1 週 に含まれる日数が 7 日間を下回ることがあります。
                戻り値データ型:    dual
                
                    引数 
                     
                     
                    
                        
                     
                    
                        
                            timestamp 
                             
                            評価する日付またはタイムスタンプ。 
                         
                        
                            period_no 
                             
                            shift  は整数で、値 0 は date  を含む週を示します。shift の値が負の場合は過去の週を、正の場合は将来の週を示します。 
                         
                        
                            first_week_day 
                             
                            
                                週の開始日を指定します。省略されている場合は、変数 FirstWeekDay  の値が使用されます。
                                first_week_day  には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値を使用できます。
                                 						システム変数の詳細については、FirstWeekDay   を参照してください。
                             
                         
                        
                            broken_weeks 
                             
                            
                                broken_weeks  が指定されていない場合は、変数 BrokenWeeks  の値を使用して、週が分離しているかどうかを定義します。
                                 							システム変数の詳細については、BrokenWeeks   を参照してください
                             
                         
                        
                            reference_day 
                             
                            
                                reference_day  が指定されていない場合は、変数 ReferenceDay  の値を使用して、第 1 週を定義する参照日として設定する 1 月の日を定義します。デフォルトでは、Qlik Sense  関数は 4 を参照日として使用します。これは、第 1 週に必ず 1 月 4 日が含まれる、または第 1 週に少なくとも 1 月の 4 日間が常に含まれることを意味します。
                                 							システム変数の詳細については、ReferenceDay   を参照してください
                             
                         
                     
                
 
                地域の設定 
                特に指定のない限り、このトピックの例では次の日付書式を使用しています:  MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat  ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。 
                App の既定の地域設定は、Qlik Sense  がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense  サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense  ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense  は使用しているブラウザと同じ言語で表示されます。
 下記の例では
Set FirstWeekDay=0;  
Set BrokenWeeks=0;   
Set ReferenceDay=4;
関数の例 例  結果  weekname('01/12/2013')   2013/02 を返します。  weekname('01/12/2013', -1)   2013/01 を返します。  weekname('01/12/2013', 0, 1)   2013/02 を返します。  
例 1 – 追加の引数がない日付 ロード スクリプトと結果 概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。 
ロード スクリプトには次が含まれています。
2021 年の最後の週と 2022 年の最初の週のトランザクションを含むデータセットは、「Transactions 」というテーブルにロードされます。
MM/DD/YYYY  形式に設定された DateFormat  システム変数。
1  に設定された BrokenWeeks  システム変数。
6  に設定された FirstWeekDay  システム変数。
次を含む、先行する LOAD:
ロード スクリプト
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 
]; 結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
id
date
week_day
week_number
結果テーブル ID   日付   week_day   week_number   8183   12/27/2021   月   2021/53   8184   12/28/2021   火   2021/53   8185   12/29/2021   水   2021/53   8186   12/30/2021   木   2021/53   8187   12/31/2021   金   2021/53   8188   01/01/2022   土   2022/01   8189   01/02/2022   日   2022/02   8190   01/03/2022   月   2022/02   8191   01/04/2022   火   2022/02   8192   01/05/2022   水   2022/02   8193   01/06/2022   木   2022/02   8194   01/07/2022   金   2022/02   8195   01/08/2022   土   2022/02   8196   01/09/2022   日   2022/03   8197   01/10/2022   月   2022/03   8198   01/11/2022   火   2022/03   8199   01/12/2022   水   2022/03   8200   01/13/2022   木   2022/03   8201   01/14/2022   金   2022/03   
「week_number 」項目は、weekname()  関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。
 weekname()  関数は、最初に日付値が属する週を識別し、週番号のカウントとトランザクションが行われた年を返します。
 FirstWeekDay  システム変数は、日曜日を最初の曜日に設定します。BrokenWeeks  システム変数は、アプリケーションが分割週を使用するように設定します。つまり、第 1 週 は 1 月 1 日に始まります。
既定の変数を使用した weekname()  関数の図。 
第 1 週 は土曜日である 1 月 1 日に始まるため、この日に発生したトランザクションは値 2022/01  (年と週番号) を返します。
トランザクション 8192 の週番号を識別する weekname()  関数の図。 
アプリケーションが分割された週を使用しており、最初の平日が日曜日であるため、1 月 2 日~1 月 8 日に発生したトランザクションは値 2022/02  を返します (2022 年の第 2 週)。「week_number 」項目の値 2022/02  を返します。
例 2 – period_no ロード スクリプトと結果 概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例のタスクは、トランザクションが発生する前の年と週番号を返す項目「previous_week_number 」を作成することです。
データ ロード エディター  を開き、次のロード スクリプトを新しいタブに追加します。 
ロード スクリプト
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 
]; 結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
id
date
week_day
week_number
結果テーブル ID   日付   week_day   week_number   8183   12/27/2021   月   2021/52   8184   12/28/2021   火   2021/52   8185   12/29/2021   水   2021/52   8186   12/30/2021   木   2021/52   8187   12/31/2021   金   2021/52   8188   01/01/2022   土   2021/52   8189   01/02/2022   日   2021/53   8190   01/03/2022   月   2021/53   8191   01/04/2022   火   2021/53   8192   01/05/2022   水   2021/53   8193   01/06/2022   木   2021/53   8194   01/07/2022   金   2021/53   8195   01/08/2022   土   2022/01   8196   01/09/2022   日   2022/02   8197   01/10/2022   月   2022/02   8198   01/11/2022   火   2022/02   8199   01/12/2022   水   2022/02   8200   01/13/2022   木   2022/02   8201   01/14/2022   金   2022/02   
-1  の period_no  が weekname()  関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生した週を識別します。次に、1 週間前を調べて、その週の最初のミリ秒を識別します。
period_no  オフセットが -1 の weekname()  関数の図。
トランザクション 8192 は 2022 年 1 月 5 日に発生しました。 weekname()  関数は、2021 年 12 月 30 日の 1 週間前を検索し、その日付の週番号と年 – 2021/53  を返します。
例 3 – first_week_day ロード スクリプトと結果 概要
最初の例と同じデータセットとシナリオが使用されます。
ただしこの例では、会社の方針により、週の勤務日は火曜日に始まります。
データ ロード エディター  を開き、次のロード スクリプトを新しいタブに追加します。 
ロード スクリプト
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 
]; 結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
id
date
week_day
week_number
結果テーブル ID   日付   week_day   week_number   8183   12/27/2021   月   2021/52   8184   12/28/2021   火   2021/53   8185   12/29/2021   水   2021/53   8186   12/30/2021   木   2021/53   8187   12/31/2021   金   2021/53   8188   01/01/2022   土   2022/01   8189   01/02/2022   日   2022/01   8190   01/03/2022   月   2022/01   8191   01/04/2022   火   2022/02   8192   01/05/2022   水   2022/02   8193   01/06/2022   木   2022/02   8194   01/07/2022   金   2022/02   8195   01/08/2022   土   2022/02   8196   01/09/2022   日   2022/02   8197   01/10/2022   月   2022/02   8198   01/11/2022   火   2022/03   8199   01/12/2022   水   2022/03   8200   01/13/2022   木   2022/03   8201   01/14/2022   金   2022/03   
火曜日を最初の曜日とする weekname()  関数の図。
1  の first_week_date  引数が weekname()  関数で使用されているため、火曜日が週の最初の曜日として使用されます。したがってこの関数では、2021 年の第 53 週が 12 月 28 日火曜日に始まると判断します。また、分割された週を使用するアプリケーションにより、第 1 週 は 2022 年 1 月 1 日に始まり、2022 年 1 月 3 日の月曜日の最後のミリ秒で終わります。
火曜日が週の最初の日であるトランザクション 8192 の週番号を示す図。
トランザクション 8192 は 2022 年 1 月 5 日に発生しました。したがって、火曜日の first_week_day  パラメータを使用すると、 weekname()  関数は 'week_number ' 項目の値 2022/02  を返します。
例 4 – チャート オブジェクトの例 ロード スクリプトとチャートの数式 概要
最初の例と同じデータセットとシナリオが使用されます。
ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した週の年番号を返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。
ロード スクリプト
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 
]; 結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
トランザクションが発生する週の初めを計算するには、次のメジャーを作成します。
=weekname(date) 
結果テーブル ID   日付   =weekday(date)   =weekname(date)   8183   12/27/2021   月   2021/53   8184   12/28/2021   火   2021/53   8185   12/29/2021   水   2021/53   8186   12/30/2021   木   2021/53   8187   12/31/2021   金   2021/53   8188   01/01/2022   土   2022/01   8189   01/02/2022   日   2022/02   8190   01/03/2022   月   2022/02   8191   01/04/2022   火   2022/02   8192   01/05/2022   水   2022/02   8193   01/06/2022   木   2022/02   8194   01/07/2022   金   2022/02   8195   01/08/2022   土   2022/02   8196   01/09/2022   日   2022/03   8197   01/10/2022   月   2022/03   8198   01/11/2022   火   2022/03   8199   01/12/2022   水   2022/03   8200   01/13/2022   木   2022/03   8201   01/14/2022   金   2022/03   
「week_number 」項目は、weekname()  関数を使用し、関数の引数として日付項目を渡すことにより、チャート オブジェクトのメジャーとして作成されます。
 weekname()  関数は、最初に日付値が属する週を識別し、週番号のカウントとトランザクションが行われた年を返します。
 FirstWeekDay  システム変数は、日曜日を最初の曜日に設定します。BrokenWeeks  システム変数は、アプリケーションが分割週を使用するように設定します。つまり、第 1 週 は 1 月 1 日に始まります。
日曜日を週の最初の曜日とする週番号を示す図。
トランザクション 8192 が 2 週目に発生したことを示す図。
アプリケーションが分割された週を使用しており、最初の平日が日曜日であるため、1 月 2 日~1 月 8 日に発生するトランザクションは値 2022/02、つまり 2022 年の第 2 週 を返します。トランザクション 8192 は 1 月 5 日に発生し、「week_number 」項目に対して値 2022/02 を返すことに注意してください。 
例 5 – シナリオ ロード スクリプトと結果 概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。 
ロード スクリプトには次が含まれています。
2019 年の最後の週と 2020 年の最初の週のトランザクションを含むデータセットは、Transactions  というテーブルにロードされます。
0  に設定された BrokenWeeks  システム変数。
2  に設定された ReferenceDay  システム変数。
MM/DD/YYYY  形式に設定された DateFormat  システム変数。
ロード スクリプト
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 
]; 結果
データをロードしてシートを開きます。新しいテーブルを作成します。
次の式を使用して計算軸を作成します。
=weekname(date) 
総売上を計算するには、次の集計メジャーを作成します。
=sum(amount) 
メジャーの [数値書式 ] を [通貨 ] に設定します。
結果テーブル weekname(date)   =sum(amount)   2019/52   $125.69   2020/01   $346.51   2020/02   $347.57   2020/03   $122.01   
このシナリオで weekname() 関数を使用した結果を示すには、次の項目を軸として追加します。
date
日付項目を含む結果テーブル weekname(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   
アプリケーションは連続した週を使用し、ReferenceDay  システム変数のために第 1 週目は 1 月に最低 2 日間必要であるため、2020 年の第 1 週目には 2019 年 12 月 29 日からのトランザクションが含まれます。