首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qlik -create计算维数,显示从月开始到过滤日期(5-4-4日历)的条形图。

Qlik -create计算维数,显示从月开始到过滤日期(5-4-4日历)的条形图。
EN

Stack Overflow用户
提问于 2021-07-13 11:24:26
回答 1查看 452关注 0票数 0

我有一个主日历(5-4-4),看起来像下面的图片。

我在销售表中有一个日期列。我在选择窗格(筛选器)中使用该日期列。

示例场景:

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

预期输出:条形图需要显示从“28-09-2020”到“15-10-2020”的尺寸。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 13:02:49

方法是从Start_Month生成日期到TransDate (由字段名组成)

让我们说,这是我们拥有的数据:

代码语言:javascript
复制
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函数

代码语言:javascript
复制
Inner Join
IntervalMatch ( TransDate )
Load
  Start_Month,
  End_Month
Resident
  MasterCalendar_Temp
;

此时,MasterCalendar_Temp表将如下所示:

所以我们现在知道了每个TransDate的危险

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

代码语言:javascript
复制
NoConcatenate

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

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

一旦我们有了它,我们就可以开始创建我们的约会了。

代码语言:javascript
复制
// 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;

就这样!

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

Transactions表未被触及,Dates表的值如下所示:

如您所见,对于每个TransDate,我们有日期范围(从校正Start_MonthTransDate )。

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

如果选择一个TransDate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68361470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档