Выражение QlikSense, чтобы найти среднюю продолжительность за период времени - PullRequest
1 голос
/ 06 октября 2019

Я хочу найти общую продолжительность в часах за разные периоды времени. то есть. как только я добавлю фильтры, такие как «Октябрь», он должен показать мне общее количество часов за этот месяцЯ хочу считать повторяющиеся уроки для нескольких участников как 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 Ответ

2 голосов
/ 06 октября 2019

Может предложить вам создать другую таблицу, которая будет содержать различные значения (я предполагаю, что уникальная комбинация Date <-> Subject)

Сценарий ниже создаст OverallDuration таблица будет содержать различные значения продолжительности длякомбинация Date <-> Subject. Таким образом, у вас будет одно дополнительное поле OverallDuration, которое можно использовать в KPI.

Таблица OverallDuration связана с таблицей RawData (которая связана с таблицей Calendar), что означает, что при расчете OverallDuration будут учитываться выборки Subject, LessonYear, 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
;  

После перезагрузки приведенного выше сценария ваше выражение будет просто sum( OverallDuration ) И вы можете увидеть результат вприведенная ниже сводная таблица:

Result Pivot Table

Общая продолжительность составляет 06:30 часов, а для Math составляет 02:00 часов:

Math subject selected

И ваша модель данных будет выглядеть так:

Data Model

Мне нравится сохранятьмои данные календаря в отдельной таблице, но вы можете добавить поля месяца и года в основную таблицу, если хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...