微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qlik - 创建计算维度以显示从月份开始到过滤日期的条形图5-4-4 日历

如何解决Qlik - 创建计算维度以显示从月份开始到过滤日期的条形图5-4-4 日历

我有一个主日历(5-4-4),如下图所示。

Master calender

我在 Sales 表中有一个日期列。我在选择窗格(过滤器)中使用该日期列。

示例场景:

现在我选择了选择窗格日期“15-10-2020”,条形图仅显示“15-10-2020”的销售额。但我需要查找主日历并显示从 start_month 日期到直到选定日期的维度

预期输出:条形图需要显示来自 '28-09-2020' 至 '15-10-2020'

解决方法

方法是生成从 Start_MonthTransDate(组成字段名称)的日期

假设这是我们拥有的数据:

Transactions:
Load * inline [
TransDate,Value
15-10-2020,100
27-07-2021,50
];

MasterCalendar_Temp:
Load * inline [
Start_Month,End_Month,Month_number
28-09-2020,01-11-2020,1
02-11-2020,29-11-2020,2
30-11-2020,27-12-2020,3
28-12-2020,31-01-2021,4
01-02-2021,28-02-2021,5
01-03-2021,28-03-2021,6
29-03-2021,02-05-2021,7
03-05-2021,30-05-2021,8
31-05-2021,27-06-2021,9
28-06-2021,01-08-2021,10
02-08-2021,29-08-2021,11
30-08-2021,26-09-2021,12
];

第一步是找出每个 TransDate 属于哪个区间。为此,我们将使用 IntervalMatch 函数

Inner Join
IntervalMatch ( TransDate )
Load
  Start_Month,End_Month
Resident
  MasterCalendar_Temp
;

此时 MasterCalendar_Temp 表将如下所示:

所以我们现在知道每个 TransDate

MasterCalendar_Temp

下一步是将 MasterCalendar_Temp 数据加载到单独的表中,但将 Start_MonthTransDate 连接成一个:

NoConcatenate

MasterCalendar:
Load 
  Start_Month,Start_Month & '_' & TransDate as Start_TransDate_Temp
Resident MasterCalendar_Temp;

// we dont need this table anymore
Drop Table MasterCalendar_Temp;

一旦我们有了它,我们就可以开始创建我们的日期

// loop through each value in Start_TransDate_Temp field
// for each step extract Start_Month and TransDate values
// use these two values to generate the dates between them
for i = 1 to FieldValueCount('Start_TransDate_Temp')
  let value = FieldValue('Start_TransDate_Temp',$(i));
  let startDate = num(SubField('$(value)','_',1));
  let transDate = num(SubField('$(value)',2));

  Dates:
  LOAD
    date('$(transDate)','DD-MM-YYYY') as TransDate,date($(startDate) + IterNo() - 1,'DD-MM-YYYY') AS DisplayDates
  AUTOGENERATE (1)
  WHILE 
    $(startDate) + IterNo() -1 <= $(transDate)
  ;

next

// we dont need this table anymore
Drop Table MasterCalendar;

就是这样!

脚本重新加载后,我们将有两个表:

data model

Transactions 表未受影响,Dates 表将具有如下值:

Dates table

如您所见,对于每个 TransDate,我们都有日期范围(从相应的 Start_MonthTransDate

如果我们构建一个简单的条形图(以 DisplayDates 作为维度,sum(Value) 作为度量)并且不应用任何选择:

BarChart 1

如果选择一个 TransDate

BarChart 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。