2016-10-28 92 views
0

背景: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; 
+0

是不是像“平均({1}分数) - 平均(分数)” – Kostya

+0

@Kostya'平均({1}分数)'给我的整体平均,我期待比较平均代代相传 –

回答

0

,如果你可以指定一个int值到你们这一代人,你可以不喜欢

=Avg(Score)- avg({<Generation ={$(=Generation-1)}>} Score) 
0

创建2种主尺寸根据计算领域,一个以集分析,计算每代,一个平均对于所有选择的总平均数。在加载脚本中执行它会使其更快。