QlikSense表达式可查找一段时间内的平均持续时间

时间:2019-10-06 10:45:00

标签: qlikview qliksense qlik-expression

我想找到不同时间段的总体持续时间(以小时为单位)。即。一旦添加了“十月”之类的过滤器,它应该向我显示该月的总时间。我要将多个参与者的重复课程计为1课。即。教授课程的时间。

 Date        Duration  Subject   Attendee
 1/10/2019     2:00    Math       Joe Bloggs
 1/10/2019     2:00    Math       John Doe
 2/10/2019     3:00    English    Jane Doe
 6/11/2019     1:00    Geog       Jane Roe
 17/12/2019    0:30    History    Joe Coggs

我想要在这些主题上花费的总时间。这意味着上述总时长总计为6:30,因为这两个数学课程应仅算作1课(2小时)。我如何编写一个表达式,以产生我们整体学习的KPI,然后还可以深入到月份和日期。预先感谢

1 个答案:

答案 0 :(得分:2)

可以建议您创建另一个包含不同值的表(假定唯一组合为Date <-> Subject

下面的脚本将创建OverallDuration表,其中将包含组合Date <-> Subject的不同持续时间值。这样,您将拥有一个可以在KPI中使用的附加字段OverallDuration

OverallDuration表链接到RawData表(自身链接到Calendar表),这意味着OverallDuration的计算将遵循{{ 1}},SubjectLessonYear等(请看下面的LessonMonth选择图片)

Math

重新加载上述脚本后,您的表达式将仅为RawData: Load *, // Create a key field with the combination of Date and Subject Date & '_' & Subject as DateSubject_Key ; Load * Inline [ Date, Duration, Subject, Attendee 1/10/2019, 2:00, Math, Joe Bloggs 1/10/2019, 2:00, Math, John Doe 2/10/2019, 3:00, English, Jane Doe 6/11/2019, 1:00, Geog, Jane Roe 17/12/2019, 0:30, History, Joe Coggs ]; // Load distinct DateSubject_Key and the Duration // converting the duraion to time. // This table will link to RawData on the key field OverallDuration: Load Distinct DateSubject_Key, time(Duration) as OverallDuration Resident RawData ; // Creating calendar table from the dates (distinct) // from RawData and creating two additional fields - Month and Year // This table will link to RawData on Date field Calendar: Load Distinct Date, Month(Date) as LessonMonth, Year(Date) as LessonYear Resident RawData ; ,您可以在下面的数据透视表中看到结果:

Result Pivot Table

总持续时间为sum( OverallDuration )小时,06:30的总持续时间为Math小时:

Math subject selected

您的数据模型将如下所示:

Data Model

我想将日历数据保存在单独的表中,但是如果需要,您可以将月和年字段添加到主表中