Qlik сравнивает среднее по измерению со средним по первому измерению

Фон:

У меня есть список баллов по ряду вопросов, и я разделил своих участников на группы поколений.

Я пытаюсь сравнить средний балл по каждому вопросу со средним для поколения. Мой текущий (неудачный) скрипт, как показано ниже.

if(Generation = 'Boomers2'
  ,(Avg(Score)-Avg({<Generation = {"Boomers2"}>} Score))
      ,if(Generation = 'Generation X'
          ,(Avg(Score)-Avg({<Generation = {"Generation X"}>} Score))
          ,(Avg(Score)-Avg({<Generation = {"Millenials"}>} Score))
      )
)

Я уверен, что я мог бы сделать это с некоторыми ETL - в идеале я хочу сделать это с помощью set analysis но приму любой ответ. Для справки вот мой скрипт загрузки.

SurveyRaw:
LOAD 
    [F1] as RowID,
    Timestamp(Timestamp#([A], 'DD/MM/YYYY hh:mm:ss') ) AS [EntryDate],
    [B] AS [YearOfBirth],
    [C] AS [PerceivedGeneration],
    [D] AS [AbilityToAdapt],
    [E] AS [TeamWork],
    [F] AS [ProblemSolving],
    [G] AS [Collaboration],
    [H] AS [Entrepreneurial],
    [I] AS [Overtime],
    [J] AS [Collaboration2],
    [M] AS [FutureQuestion]
 FROM [lib://workingstyles]
(html, codepage is 1252, embedded labels, table is @1)
where IsNum([B]) and [B]<1998; //and [B]>=1966;

Scores:
CrossTable(Question, Score)
Load RowID, [AbilityToAdapt],[TeamWork],[ProblemSolving],[Collaboration],[Entrepreneurial],[Overtime],[Collaboration2]
Resident SurveyRaw;

Load Question, Avg(Score) as AvgQuestionScore
Resident Scores
Group By Question;

Left Join (SurveyRaw)
Load Sum(Score) as TotalScore
,Sum(Score)/7 as AvgUserScore
,RowID
Resident Scores Group By RowID;

Drop Fields [AbilityToAdapt],[TeamWork],[ProblemSolving],[Collaboration],[Entrepreneurial],[Overtime],[Collaboration2] From [SurveyRaw];

Generations:
Load * Inline
[Year_Start, Year_End, Generation
1946, 1954, Boomers1
1955, 1965, Boomers2
1966, 1976, Generation X
1977, 1994, Millenials
1995, 2012, Z];

IntervalMatch:
IntervalMatch([YearOfBirth])
Load     Distinct Year_Start,Year_End 
Resident Generations;

2 ответа

Создайте 2 основных измерения на основе вычисляемого поля: одно с заданным анализом для расчета среднего значения для поколения и одно для общего среднего по всем выборкам. Выполнение этого в скрипте загрузки сделает это быстрее.

Если вы можете назначить значение INT для вашего поколения, вы можете сделать что-то вроде

=Avg(Score)- avg({<Generation ={$(=Generation-1)}>} Score)
Другие вопросы по тегам