全部展开/折叠  
                     weekday  - 脚本和图表函数在该页面上  
                此函数用于返回包含以下名称的对偶值: 
                
                    在环境变量 DayNames  中定义的日期名称。  
                    介于 0-6 之间的整数对应于一周 (0-6) 的标定天。  
                 
                语法:    
                weekday( date  [,first_week_day =0]) 
                返回数据类型:    双
                
                    weekday()  函数确定日期发生在一周中的哪一天。然后,它返回表示当天的字符串值。
                    
                        返回日期所在日期名称的 weekday()  函数图表
                        
                      
                    结果根据一周的开始日期返回与一周的那一天 (0-6) 对应的数值。例如,如果一周的第一天设置为星期天,星期三将返回 3  的数值。该开始日期由 FirstWeekDay  系统变量 或 first_week_day  函数参数确定。
                    可以将此数值用作算术表达式的一部分。例如,将其乘以 1  以返回值本身。
                    
                        显示日期数值而不是日期名称的函数 weekday()  的图表
                        
                      
                    适用场景 
                    当您希望按星期几比较聚合时,weekday()  函数非常有用。例如,如果您想比较平日产品的平均销售额。
                    可以使用函数在主日历 表中创建字段 ,在加载脚本 中创建这些维度 ;或者直接在图表中 创建作为计算的度量 。
                    
                 
                
                
                    
                        参数 
                         
                        
                         
                        
                        
                            
                         
                        
                            
                                date 
                                 
                                要评估的日期或时间戳。 
                             
                            
                                first_week_day 
                                 
                                
                                    指定一周的开始日期。如果忽略,使用 FirstWeekDay  变量的值。
                                    FirstWeekDay  
                                    
                                 
                             
                         
                    
 
                    可以使用以下值在 first_week_day  参数中设置一周开始的日期:
                    
                        first_week_day 值 
                         
                         
                        
                            
                                日  
                                值  
                             
                         
                        
                            
                                星期一   
                                0   
                             
                            
                                星期二   
                                1   
                             
                            
                                星期三   
                                2   
                             
                            
                                星期四   
                                3   
                             
                            
                                星期五   
                                4   
                             
                            
                                星期六   
                                5   
                             
                            
                                星期日   
                                6   
                             
                         
                    
 
                    区域设置 
                    除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat  语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。有关详细信息,请参阅修改应用程序和脚本的区域设置  。 
                    应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud  用户界面中显示的语言无关。Qlik Cloud  将以与您使用的浏览器相同的语言显示。
                    如果你是应用程序创建者,你可以为自己创建的应用程序设置默认区域。有关更多信息,请参阅设置 Qlik Cloud 分析 中创建应用程序和脚本所用的首选区域设置  。
                    信息注释 在以下示例中,FirstWeekDay  设置为 0 (除非另有说明)。
                    
                        函数示例 
                         
                         
                        
                            
                                示例   
                                结果   
                             
                         
                        
                            
                                weekday('10/12/1971') 
                                 
                                返回 “Tue” 和 1。 
                             
                            
                                weekday('10/12/1971' , 6) 
                                 
                                
                                    返回 “Tue” 和 2。
                                     在此示例中,Sunday (6 ) 作为一周的第一天。
                                 
                             
                            
                                
                                    SET FirstWeekDay=6;
                                    ... 
                                    
                                    weekday('10/12/1971')
                                 
                                返回 “Tue” 和 2。   
                             
                         
                    
 
                 
                
                    示例 1 - 工作日字符串 
                    加载脚本和结果  
                            概述
                            打开数据加载编辑器,并将下面的加载脚本添加到新部分。 
                            加载脚本包含:
                            
                                
                                    包含 2022 年交易集的数据集 ,该数据集加载到名为 ‘Transactions ’ 的表中。
                                 
                                
                                    设置为 6(星期日)的 FirstWeekDay  系统变量。
                                 
                                
                                    设置为使用默认日期名称的 DayNames  变量。
                                 
                                
                                    包含 weekday()  函数的前置 Load ,该函数设置为 ‘week_day ’ 字段,并返回事务发生的工作日。
                                 
                             
                            加载脚本
                            SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
    Load 
       *, 
       WeekDay(date) as week_day 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
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.39 
];  
                            结果
                            加载数据并打开工作表。创建新表并将这些字段添加为维度:
                            
                            
                                结果表 
                                 
                                 
                                 
                                
                                    
                                        id   
                                        日期   
                                        week_day   
                                     
                                 
                                
                                    
                                        8188   
                                        01/01/2022   
                                        Sat   
                                     
                                    
                                        8189   
                                        01/02/2022   
                                        Sun   
                                     
                                    
                                        8190   
                                        01/03/2022   
                                        Mon   
                                     
                                    
                                        8191   
                                        01/04/2022   
                                        Tue   
                                     
                                    
                                        8192   
                                        01/05/2022   
                                        Wed   
                                     
                                    
                                        8193   
                                        01/06/2022   
                                        Thu   
                                     
                                    
                                        8194   
                                        01/07/2022   
                                        Fri   
                                     
                                 
                            
 
                            通过使用 weekday()  函数并将日期字段作为函数的参数传递,在前置 Load 语句中创建了 ‘week_day ’ 字段。
                            weekday()  函数返回工作日字符串值;也就是说,它返回由 DayNames  系统变量设置的工作日的名称。
                            
                                返回周三作为交易 8192 的工作日的 weekday()  函数的图表
                                
                              
                            交易 8192 发生在 1 月 5 日。FirstWeekDay  系统变量将一周的第一天设置为星期天。weekday()  函数交易发生在星期三,并在 week_day  字段中以 DayNames  系统变量的缩写形式返回该值。 
                            ‘week_day ’ 字段中的值在列中右对齐,因为该字段有双数字和文本结果(周三,3)。要将字段值转换为等效的数字,可以将字段包装在 num()  函数中。例如,在交易 8192 中,周三值将转换为数字 3。 
                          
                    示例 2 – first_week_day 
                    加载脚本和结果  
                            概述
                            打开数据加载编辑器,并将下面的加载脚本添加到新部分。 
                            加载脚本包含:
                            
                                
                                    包含 2022 年交易集的数据集,该数据集加载到名为 ‘Transactions ’ 的表中。
                                 
                                
                                    设置为 6(星期日)的 FirstWeekDay  系统变量。
                                 
                                
                                    设置为使用默认日期名称的 DayNames  变量。
                                 
                                
                                    包含 weekday()  函数的前置 Load,该函数设置为 ‘week_day ’ 字段,并返回事务发生的工作日。
                                 
                             
                            加载脚本
                            SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
    Load 
       *, 
       WeekDay(date,1) as week_day 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
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.39 
];  
                            结果
                            加载数据并打开工作表。创建新表并将这些字段添加为维度:
                            
                            
                                结果表 
                                 
                                 
                                 
                                
                                    
                                        id   
                                        日期   
                                        week_day   
                                     
                                 
                                
                                    
                                        8188   
                                        01/01/2022   
                                        Sat   
                                     
                                    
                                        8189   
                                        01/02/2022   
                                        Sun   
                                     
                                    
                                        8190   
                                        01/03/2022   
                                        Mon   
                                     
                                    
                                        8191   
                                        01/04/2022   
                                        Tue   
                                     
                                    
                                        8192   
                                        01/05/2022   
                                        Wed   
                                     
                                    
                                        8193   
                                        01/06/2022   
                                        Thu   
                                     
                                    
                                        8194   
                                        01/07/2022   
                                        Fri   
                                     
                                 
                            
 
                            
                                周三显示的 weekday()  函数图表具有双数值 1
                                
                              
                            因为 first_week_day  参数在 weekday()  函数中设置为 1 ,所以一周的第一天是星期二。因此,周二发生的所有交易都将具有双数值 0 。
                            交易 8192 发生在 1 月 5 日。weekday() 函数标识这是星期三,因此表达式将返回双数值 1 。
                          
                    示例 3 – 图表对象示例  
                    加载脚本和图表表达式 
                            概述
                            打开数据加载编辑器,并将下面的加载脚本添加到新部分。 
                            加载脚本包含:
                            
                                
                                    包含 2022 年交易集的数据集,该数据集加载到名为 ‘Transactions ’ 的表中。
                                 
                                
                                    设置为 6 (星期日)的 FirstWeekDay  系统变量。
                                 
                                
                                    设置为使用默认日期名称的 DayNames  变量。
                                 
                             
                            然而,在本例中,未更改的数据集被加载到应用程序中。标识工作日值的计算在应用程序 的图表中创建为度量。
                            加载脚本
                            SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
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.39 
];  
                            结果
                            加载数据并打开工作表。创建新表并将这些字段添加为维度:
                            
                            要计算工作日值,请创建以下度量:
                            
                            
                                结果表 
                                 
                                 
                                 
                                
                                    
                                        id   
                                        日期   
                                        =weekday(date) 
                                     
                                 
                                
                                    
                                        8188   
                                        01/01/2022   
                                        Sat   
                                     
                                    
                                        8189   
                                        01/02/2022   
                                        Sun   
                                     
                                    
                                        8190   
                                        01/03/2022   
                                        Mon   
                                     
                                    
                                        8191   
                                        01/04/2022   
                                        Tue   
                                     
                                    
                                        8192   
                                        01/05/2022   
                                        Wed   
                                     
                                    
                                        8193   
                                        01/06/2022   
                                        Thu   
                                     
                                    
                                        8194   
                                        01/07/2022   
                                        Fri   
                                     
                                 
                            
 
                            通过使用 weekday()  函数并将日期字段作为函数的参数传递,在图表中创建了 ‘=weekday(date) ’ 字段。
                            weekday()  函数返回工作日字符串值;也就是说,它返回由 DayNames  系统变量设置的工作日的名称。
                            
                                返回周三作为交易 8192 的工作日的 weekday()  函数的图表
                                
                              
                            交易 8192 发生在 1 月 5 日。FirstWeekDay  系统变量将一周的第一天设置为星期天。weekday()  函数交易发生在星期三,并在 =weekday(date)  字段中以 DayNames  系统变量的缩写形式返回该值。 
                          
                    示例 4 – 场景  
                    加载脚本和结果 
                            概述
                            打开数据加载编辑器,并将下面的加载脚本添加到新部分。 
                            加载脚本包含:
                            
                                
                                    包含 2022 年交易集的数据集,该数据集加载到名为 ‘Transactions ’ 的表中。
                                 
                                
                                    设置为 6 (星期日)的 FirstWeekDay  系统变量。
                                 
                                
                                    设置为使用默认日期名称的 DayNames  变量。
                                 
                             
                            最终用户希望得到一个图表,该图表按工作日显示交易的平均销售额。
                            加载脚本
                            SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
LOAD 
  RecNo() AS id, 
  MakeDate(2022, 1, Ceil(Rand() * 31)) as date, 
  Rand() * 1000 AS amount 
						
Autogenerate(1000);  
                            结果
                            加载数据并打开工作表。创建新表并将这些字段添加为维度:
                            
                                
                                    =weekday(date)
                                 
                                
                                    =avg(amount)
                                 
                             
                            将度量的数字格式 设置为金额 。
                            
                                结果表 
                                 
                                 
                                
                                    
                                        weekday(date)   
                                        Avg(amount)   
                                     
                                 
                                
                                    
                                        Sun   
                                        $536.96   
                                     
                                    
                                        Mon   
                                        $500.80   
                                     
                                    
                                        Tue   
                                        $515.63   
                                     
                                    
                                        Wed   
                                        $509.21   
                                     
                                    
                                        Thu   
                                        $482.70   
                                     
                                    
                                        Fri   
                                        $441.33   
                                     
                                    
                                        Sat   
                                        $505.22