QlikSense AutoCalendar功能如何工作?

Chr*_*s J 2 calendar date qliksense

在我的一个Sense Apps中拆分自动生成的代码,我遇到了很好的自动日历功能,我修改如下,但我不知道它是如何工作的!有人可以提供一些文件吗?

[autoCalendar]: 
  DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year')
  ,Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter')
  ,Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$axis', '$yearquarter')
  ,Month($1) AS [Month] Tagged ('$month')
  ,Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth')
  ,Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber')
  ,Date(Floor($1)) AS [Date] Tagged ('$date')
  /*User added date components*/
  ,Dual(Year($1), if(Year($1)=Year(today()),YearStart($1),null)) AS [ThisYear] Tagged ('$axis', '$thisyear')
  ,Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)), if(Year($1)=Year(today()),QuarterStart($1),null)) AS [ThisYearQuarter] Tagged ('$axis', '$thisyearquarter')
  ,Dual(Year($1)&'-'&Month($1), if(Year($1)=Year(today()), monthstart($1),null)) AS [ThisYearMonth] Tagged ('$axis', '$thisyearmonth')
  ,Dual(Year($1), if(Year($1)=(Year(today())-1),YearStart($1),null)) AS [LastYear] Tagged ('$axis', '$lastyear')
  ,Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)), if(Year($1)=(Year(today())-1),QuarterStart($1),null)) AS [LastYearQuarter] Tagged ('$axis', '$lastyearquarter')
  ,Dual(Year($1)&'-'&Month($1), if(Year($1)=(Year(today())-1), monthstart($1),null)) AS [LastYearMonth] Tagged ('$axis', '$lastyearmonth')
 ;


DERIVE FIELDS FROM FIELDS [StartDate] USING [autoCalendar] ;
Run Code Online (Sandbox Code Playgroud)

这是迭代每个条目还是迭代遍历日历中的每一天?它看起来像前者 - 它可以用于非日期功能吗?

Ste*_*hev 6

请看看Qlik的帮助 Derived fields

http://help.qlik.com/en-US/sense/2.2/Subsystems/Hub/Content/Scripting/derived-fields.htm

该页面的详细信息如bekiw

Derived fields

如果您有一组相关的字段,或者字段携带的信息可以分解为创建维度或度量时相关的较小部分,则可以创建可用于生成派生字段的字段定义.一个例子是一个date字段,从中可以推导出多个属性,例如year,month,week number,或day name.可以使用Qlik Sense日期函数在维表达式中计算所有这些属性,但另一种方法是创建日期类型的所有字段通用的日历定义.字段定义存储在数据加载脚本中.

声明日历字段定义

您可以使用该Declare语句创建派生字段的定义.您可以在此处定义字段的不同属性,在本例中为日期相关属性.每个字段都描述为<expression> As field_name tagged tag.设置一个或多个标签是可选的,但它可能会影响派生字段的排序顺序.使用$1参考从其中衍生的字段应该产生的数据字段.

Calendar:
DECLARE FIELD DEFINITION TAGGED '$date'
   Parameters
      first_month_of_year = 1
   Fields
      Year($1) As Year Tagged ('$numeric'),
      Month($1) as Month Tagged ('$numeric'),
      Date($1) as Date Tagged ('$date'),
      Week($1) as Week Tagged ('$numeric'),
      Weekday($1) as Weekday Tagged ('$numeric'),
      DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric')
;
Run Code Online (Sandbox Code Playgroud)

看到: Declare

将数据字段映射到日历 Derive

下一步是使用Derive语句将现有数据字段映射到日历.这将创建派生字段.您可以在数据加载脚本中以三种替代方式执行此操作:

按字段名称映射特定字段.

DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
Run Code Online (Sandbox Code Playgroud)

使用一个或多个特定字段标记映射所有字段.

DERIVE FIELDS FROM EXPLICIT TAGS '$date' USING Calendar;
Run Code Online (Sandbox Code Playgroud)

映射使用字段定义的其中一个标记标记的所有字段(上例中的$ date).

DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以使用此处的三个示例中的任何一个.

看到: Derive

使用derived date可视化中的字段

如果您已创建日历定义并映射了此处示例中的字段,则Qlik Sense已准备好识别派生日期字段.它们位于"字段"资源面板的"日期和时间字段"部分中.您还可以在表达式编辑器中以及创建或编辑尺寸时找到所有派生字段.