全部展开/折叠  
                     inlunarweek  - 脚本和图表函数在该页面上  
                
                    
此函数用于判断 timestamp  是否位于包含 base_date  的阴历周以内。Qlik Sense  中的农历周定义为将 1 月 1 日计算为一周的第一天。除了一年中的最后一周外,每周都会有七天。
                
                语法:    
                InLunarWeek 
 ( timestamp, base_date, period_no[, first_week_day] ) 
                
                返回数据类型:    布尔值
                信息注释 
                    在 Qlik Sense  中,布尔 true 值由 -1 表示,false 值由 0 表示。 
                 
                inlunarweek()  函数决定 base_date  属于哪个农历周。一旦确定每个时间戳值是否与 base_date  发生在同一个农历周内,它就会返回布尔值结果。 
                
                    inlunarweek()  函数的图表
                    
                  
                适用场景 
                inlunarweek()  函数返回布尔值结果。通常,这种类型的函数将用作 IF 表达式中的条件。这将返回聚合或计算结果,具体取决于评估的日期是否发生在所讨论的农历周。
                  例如,inlunarweek()  函数可用于识别特定农历周内制造的所有设备。 
                
                    参数 
                     
                     
                    
                        
                     
                    
                        
                            timestamp 
                             
                            想要用来与 base_date  进行比较的日期。 
                         
                        
                            base_date 
                             
                            日期用于计算阴历周的值。 
                         
                        
                            period_no 
                             
                            阴历周可通过 period_no  偏移。period_no 为整数,其中值 0 表示该阴历周包含 base_date 。period_no  为负数表示前几个阴历星期,为正数表示随后的几个阴历星期。 
                         
                        
                            first_week_day 
                             
                            偏移可以大小或小于零。这可以按指定的天数和/或某日内时间的小数对更改一年的开始。 
                         
                     
                
 
                
                    函数示例 
                     
                     
                    
                        
                     
                    
                        
                            inlunarweek('01/12/2013', '01/14/2013', 
 0) 
                             
                            由于 timestamp 、01/12/2013  的值, 属于 01/08/2013  至 01/14/2013  的周之内,返回 TRUE 。 
                         
                        
                            inlunarweek('01/12/2013', '01/07/2013', 
 0) 
                             
                            由于 base_date  01/07/2013  处于定义为 01/01/2013  至 01/07/2013  的农历周,返回 FALSE 。 
                         
                        
                            inlunarweek('01/12/2013', '01/14/2013', 
 -1) 
                             
                            返回 FALSE 。将 period_no  的值指定为 -1,表示将周移动到前一周,即 01/01/2013  到 01/07/2013 。 
                         
                        
                            inlunarweek('01/07/2013', 01/14/2013', 
 -1) 
                             
                            返回 TRUE 。与前面的示例相比,timestamp  是在考虑到向后移动后的后续周内。 
                         
                        
                            inlunarweek('01/11/2006', '01/08/2006', 
 0, 3) 
                             
                            返回 FALSE 。为 first_week_day  指定值 3 表示从 01/04/2013  开始计算年初。因此,base _date  的值在第一周下降,而 timestamp  的值在周 01/11/2013  内下降到 01/17/2013 。 
                         
                     
                
 
                inlunarweek()  函数通常与以下功能结合使用:
                
                区域设置 
                除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat  语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。 
                应用程序中的默认区域设置基于安装 Qlik Sense  的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense  服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense  用户界面中显示的语言无关。Qlik Sense  将以与您使用的浏览器相同的语言显示。
 示例 1 – 没有其他参数 加载脚本和结果 概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。 
加载脚本包含:
创建一个字段 in_lunar_week ,确定交易是否发生在 1 月 10 日的同一个农历周。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 1/5/2022 0 1/6/2022 0 1/7/2022 0 1/8/2022 -1 1/9/2022 -1 1/10/2022 -1 1/11/2022 -1 1/12/2022 -1 1/13/2022 -1 1/14/2022 -1 1/15/2022 0 1/16/2022 0 1/17/2022 0 1/18/2022 0 1/19/2022 0 1/20/2022 0 1/21/2022 0 1/22/2022 0 1/23/2022 0 
inlunarweek()  函数,基本示例
in_lunar_week  字段是在前置 Load 语句中创建的,方法是使用 inlunarweek()  函数,然后将以下内容作为函数的参数传递:
   因为农历周从 1 月 1 日开始,所以 1 月 10 日会在 1 月 8日开始、1 月 14 日结束的农历周中。因此,在 1 月份这两个日期之间发生的任何交易都将返回布尔值 TRUE 。这在结果表中得到验证。 
示例 2 – period_no 和结果: 概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。 
加载脚本包含:
然而,在本例中,任务是创建一个字段 2_lunar_weeks_later ,用于确定交易是否发生在 1 月 10 日之后的两个农历周。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 1/5/2022 0 1/6/2022 0 1/7/2022 0 1/8/2022 0 1/9/2022 0 1/10/2022 0 1/11/2022 0 1/12/2022 0 1/13/2022 0
1/14/2022 0 1/15/2022 0 1/16/2022 0 1/17/2022 0 1/18/2022 0 1/19/2022 0 1/20/2022 0 1/21/2022 0 1/22/2022 -1 1/23/2022 -1 
inlunarweek()  函数,period_no 示例
在本例中,由于 inlunarweek()  函数中使用了 2 的 period_no 作为偏移参数,因此该函数将从1月22日开始的一周定义为用于验证事务的农历周。因此,2020 年 1 月 1 日至 7 月 26 日之间发生的任何交易都将返回布尔值结果 TRUE 。 
示例 3 – first_week_day 加载脚本和结果 概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本使用与第一个示例相同的数据集和场景。然而,在这个例子中,我们将农历周设置为 1 月 6 日开始。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,5) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表 1/5/2022 0 1/6/2022 -1 1/7/2022 -1 1/8/2022 -1 1/9/2022 -1 1/10/2022 -1 1/11/2022 -1 1/12/2022 -1 1/13/2022 0 1/14/2022 0 1/15/2022 0 1/16/2022 0 1/17/2022 0 1/18/2022 0 1/19/2022 0 1/20/2022 0 1/21/2022 0 1/22/2022 0 1/23/2022 0 
inlunarweek()  函数,first_week_day 示例
在本例中,由于 inlunarweek()  函数中使用了 first_week_date  参数,因此它将农历周的开始日期偏移到 1 月 6 日。因此,1 月 10 日属于从 1 月6 日开始到 1 月 12 日结束的农历周。这两个日期之间的任何事务都将返回布尔值 TRUE 。 
示例 4 – 图表对象 加载脚本和图表表达式: 概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。 
加载脚本包含:
然而,在本例中,未更改的数据集被加载到应用程序中。确定交易是否与 1 月 10 日发生在同一个农历周的计算被创建为应用程序图表对象中的度量。 
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];结果
加载数据并打开工作表。创建新表并将该字段添加为维度: date 。
要计算交易是否发生在包含 1 月 10 日的农历周,请创建以下度量:
= inlunarweek(date,'01/10/2022', 0) 
结果表 1/5/2022 0 1/6/2022 0 1/7/2022 0 1/8/2022 -1 1/9/2022 -1 1/10/2022 -1 1/11/2022 -1 1/12/2022 -1 1/13/2022 -1 1/14/2022 -1 1/15/2022 0 1/16/2022 0 1/17/2022 0 1/18/2022 0 1/19/2022 0 1/20/2022 0 1/21/2022 0 1/22/2022 0 1/23/2022 0 
示例 5 – 场景 加载脚本和图表表达式: 概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。 
加载脚本包含:
加载到名为 Products  的表中的数据集。
包含产品 ID、制造日期和成本价格的信息。
现已查明,由于设备错误,包括 1 月 12 日在内的农历周制造的产品存在缺陷。最终用户希望使用一个图表对象,通过农历周名称显示所生产产品的“缺陷”或“无缺陷”状态以及当月生产的产品的成本。
加载脚本
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];结果
执行以下操作:
加载数据并打开工作表。新建表格。
创建维度以显示月名称:
=lunarweekname(manufacture_date) 
使用 inlunarweek()  函数创建一个度量,以识别哪些产品有缺陷,哪些无缺陷:
=if(only(inlunarweek(manufacture_date,makedate(2022,01,12),0)), 'Defective','Faultless') 
创建一个度量来求对产品的 cost_price  求和:
=sum(cost_price) 
将度量的数字格式 设置为金额 。
在外观 下,关闭总计 。
结果表 2022/01 Faultless $125.79 2022/02 Defective $316.38 2022/03 Faultless $455.75 2022/04 Faultless $146.09 
inlunarweek()  函数在评估每个产品的制造日期时返回布尔值。对于在农历周生产的包含 1 月 10 日的任何产品,inlunarweek()  函数返回布尔值 TRUE ,并将产品标记为“缺陷”。对于任何返回 FALSE 值的产品,由于不是在该周制造的,它将产品标记为 ‘Faultless’。