qlik入门笔记

常用概念

  1. 维度确定数据在可视化中的分组方式,维度通常指时间、地点或者分类
  2. 度量是指某些类别的计算结果,通常是聚合的集合

加载数据

以下截图为加载数据的基本步骤:

  1. 新建APP之后打开数据加载编辑器
  2. 在数据加载编辑器中创建数据链接
  3. 如果需要删除数据,注释掉该数据加载的代码片段即可
  4. 链接创建完毕后,点击加载数据,加载完毕后即可进行相关分析

关于加载数据中的一些注意事项:

  1. 加载多个表时,如果多个表之后存在字段名相同,系统会自动创建一个Syn的合成字段(是这些字段的组合),因此需要判断这些字段在不同表格中的含义是否一样
  2. 对于数据模型的选取:如果侧重性能,则选取大宽表;如果是追求最小的数据冗余,则选用雪花模型
  3. 不建议在Qlik中做一些数据模型的搭建工作,会导致数据处理的时间过长,如果允许,最好还是在数据库中或者单独出中间层来做数据处理

面板介绍

APP面板

分析面板

Qlik 常用可视化图表

  1. 条形图

    常用设置:
  • 显示设置
    • 显示大量维度值:当维度值的数量超出可视化的宽度时,会显示一个带有滚动条的小型图表
    • 显示超出范围的值:在属性面板的外观下,可以设置度量轴的范围限制,默认为自动。如果有特殊需求,可以手动改变维度显示的范围
    • 在堆叠条形图中显示大量数据:当堆叠条形图中有大量维度数据时,条形的总值总是可以正确显示。但是维度片段的颜色和大小可能会存在显示误差,同时,并非所有维度都会显示在堆叠图中,无法显示的维度将会标记为灰色区域。要移除灰色区域,可以使用属性面板中的属性限制
  1. 折线图
    折线图用于显示一段时间内的趋势,维度始终位于x轴,度量始终位于y轴,不能将方向改为垂直

  2. 组合图可以近似的看做条形图和折线图的组合。当需要展示同一个维度下两种不同种类的度量或者两种数据两级差别很大的度量时,组合图特别有用

  3. 饼图是显示单个图相对于总计的占比,在具有仅含正值的单个数据系列时,可以使用饼图。若含有零值和负值时将不会显示

  4. 垂直表是表格最基本的形式,当我们需要查阅明细数据的具体值的时候需要用到。表格同时显示多个字段,其中每行的内容在逻辑上相互关联。

  5. 透视表是将维度和度量显示表格中的行和列;在透视表中,可以同时通过多个度量并以多个维度进行分析数据,可以重新排列度量和维度以获取不同的数据视图,在行和列之间来回移动度量和维度的活动称为透视。

  6. 瀑布图适用于描述某一个度量数值的变化过程。瀑布图的最大一个特点是:前一个条形的重点一定是下一个条形的起点

  7. KPI控件用于显示业务中某些关键指标的具体数值

  8. 分布图用于比较数值在数据组的范围和分布,数据绘制为沿着轴的值点可选择仅显示值点,以查看值的分布。选择边界框以查看值的范围

  9. 仪表盘是一种类似于KPI的可视化控控件,他们的区别在于仪表盘加入了一些额外的可视化效果辅助数据展示,使得数据的可读性更强

  10. 散点图可以帮助您找到两个值之间的潜在关系,并对组中的不规则性实现可视化。当想要显示每个实例都有两个指标,例如不同国家和地区的每个首府的平均寿命预期值和平均国内生产总值的数据时,散点图也很有用

主条目

  1. 维度主条目:将维度添加为主条目时,会有单个和下钻两个选项。单个是一个主条目中只有一个维度字段,而下钻可以在一个主条目中添加多个维度字段,只是添加的字段之间需要有层级关系,而高层级在低层级之前(例如省份与国家,时间的颗粒度等)
  2. 度量主条目:添加方式与维度主条目相同
  3. 可视化主条目:将可视化添加为主条目,会将整个可视化控件(包括控件内的维度、度量以及所有设置)全部添加到可视化主条目中,如果需要对控件进行编辑,需要断开控件与可视化的链接。适用于多个sheet间某个可视化控件需要同步更新

成果共享及应用

故事

故事的目的是收集对于整个分析的见解,并根据数据创建清晰的叙述。可以将故事展示位包含一张或者多张演示文稿的时间轴,并根据传统的数据叙述结构进行展示

故事都包含在应用程序中。要构建故事,可以使用数据可视化基于时间的快照和实时数据工作表,并将他们放置在故事的时间轴上,可以添加文本和造型,使用视觉效果突出某些见解的重点和运用各种风格等,使故事编的更加具有说服力更加精彩。

基本语法

集合分析

集合分析的本质是在某一个运算公式中通过修饰符插入限定条件,已达到限定聚合范围的效果。基本机构如下

Sum({<字段1={‘’},字段2={‘’},......>}度量字段)

其中字段X表示作为筛选条件的字段,度量字段表示求和之后的字段的名字

注释

  1. Ctrl+K或者按//进行注释
  2. 可以使用Rem语句或者/* 和 * / 将代码括起来

转换数据

  1. 将交叉表转换为二维表
    在系统原生代码前加入 CrossTable 其中后面字符是给拆分出来的列给定列名
CrossTable (Month,Sales)
LOAD
    Product,
    "Jan 2014",
    "Feb 2014",
    "Mar 2014",
    "Apr 2014",
    "May 2014",
    "Jun 2014"
FROM [lib://advanced_script/Product.xlsx]
(ooxml, embedded labels, table is Product);
  1. 清除内存缓存:有时候需要删除在表写脚本期间所创建的表格
drop table Name1[,Name2[,Name3,.....']]
drop field Name1[,Name2[,Name3,.....']]
  1. 合并表格:使用keep和join可以将qlik中的数据进行合并,但是合并后无法看到单独的表格,这会使得表格变大,降低qlik运行速度,一些信息也会丢失
    此外,连接的字段必须完全相同。连接的字段数可以是任意的
load a,b,c from table1.csv;
join load a,d from table2.csv;
Transaction:
LOAD
    "Transaction ID",
    "Salesman ID",
    Product,
    "Serial No",
    "ID Customer",
    "List Price",
    "Gross Margin"
FROM [lib://advanced_script/Transactions.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
join(Transaction)
LOAD
    "Salesman ID",
    Salesman,
    "Distributor ID"
FROM [lib://advanced_script/Salesman.xlsx]
(ooxml, embedded labels, table is Salesman);
  1. 使用Peer()和Previous()识别表格内特定的值。Peek的第二个参数是指定往前查找多少个数,Previous只能往前查找一位
[Employees Init]:
LOAD
	RowNo() as row,
    Date(Date) as "Date",
    Hired,
    Terminated,
    if (rowno()=1,Hired=Terminated,peek([Employee Count],-1)+(Hired-Terminated)) as [Employee Count]
FROM [lib://advanced_script/Employees.xlsx]
(ooxml, embedded labels, table is Sheet2);

  1. 使用 exists():exist()函数通常与脚本中的where子句搭配使用以加载数据,如果已经在数据模型加载先关数据
    dual()函数用于将数值赋值给字符串,第二个参数在之后可以作为排序的依据
//Add dummy people data
PeopleTemp:
LOAD * INLINE [
PersonID, Person
1, Jane
2, Joe
3, Shawn
4, Sue
5, Frank
6, Mike
7, Gloria
8, Mary
9, Steven,
10, Bill
];
//Add dummy age data
AgeTemp:
LOAD * INLINE [
PersonID, Age
1, 23
2, 45
3, 43
4, 30
5, 40
6, 32
7, 45
8, 54
9,
10, 61
11, 21
12, 39
];
//LOAD new table with people
People:
NoConcatenate LOAD
PersonID,
Person
Resident PeopleTemp;

Drop Table PeopleTemp;
//Add age and age bucket fields to the People table
Left Join (People)
LOAD
  PersonID,
  Age,
  If(IsNull(Age) or Age='', Dual('No age', 5),
      If(Age<25, Dual('Under 25', 1),
          If(Age>=25 and Age <35, Dual('25-34', 2),
              If(Age>=35 and Age<50, Dual('35-49' , 3),
                  If(Age>=50, Dual('50 or over', 4),
                  ))))) as AgeBuck
Resident AgeTemp
Where Exists(PersonID);

DROP Table AgeTemp;

  1. Interval Match是针对多对多匹配建立一个中间表,从而使得表格能够正常连接
Events:
LOAD
    EventID,
    EventDate,
    EventAttribute
FROM [lib://advanced_script/Events.txt]
(txt, utf8, embedded labels, delimiter is '\t', msq);

Intervals:
LOAD
    IntervalID,
    IntervalAttribute,
    IntervalEnd,
    IntervalBegin
FROM [lib://advanced_script/Intervals.txt]
(txt, utf8, embedded labels, delimiter is '\t', msq);



BridgeTable:
IntervalMatch (EventDate)
load Distinct IntervalBegin,IntervalEnd resident Intervals;

数据清洗

  1. Mapping前缀,用于在脚本中创建映射表,然后可以将映射表与ApplyMap()函数,MapSubstring()函数或Map…Using语句搭配使用
    • ApplyMapping第一个参数指定Mapping表,第二个参数指定Mapping的列,第三个参数指定Mapping出错时使用的替代值
    • MapSubstring()是可以将字符串中的一部分字符映射成另外的字符
    • Map…Using语句也可以映射到字段中,但是它会在处理影视时将值存储在内部表的字段名称当中。
countryMap:
Mapping load * Inline[
Country,Newcountry
U.S.A,us
U.S.A.,us
U.S.,us
US,us
United States,us
United States of America,us
];

Data:
LOAD
   ID,
   Name,
   ApplyMap('countryMap',Country,'us') as Country,
   Code
FROM [lib://advanced_script/Data.xlsx]
(ooxml, embedded labels, table is Sheet1);
Data:
LOAD
  ID,
  Name,
  ApplyMap('countryMap',Country) as Country,
  Code
FROM [lib://advanced_script/Data.xlsx]
(ooxml, embedded labels, table is Sheet1);


Map Country using countryMap;
Data1:
LOAD
  ID,
  Name,
  Country,
  Code
FROM [lib://advanced_script/Data.xlsx]
(ooxml, embedded labels, table is Sheet1);

Data2:
LOAD
  ID,
  Name,
  Country,
  Code
FROM [lib://advanced_script/Data.xlsx]
(ooxml, embedded labels, table is Sheet1);
unmap; //此处指定之后的表不使用映射

层次结构

  1. Hierarchy前缀是放置在load或select语句前面的脚本命令,用于脚架相邻节点表、LOAD语句必须至少拥有三个字段:ID是节点的唯一秘钥,涉及父集和名称。
Hierarchy (NodeID,ParentID,NodeName)
LOAD
   NodeID,
   ParentID,
   NodeName
FROM [lib://advanced_script/Winedistricts.txt]
(txt, utf8, embedded labels, delimiter is '\t', msq);

存储

  1. store:该语句将创建一个明确命名的QVD或CSV文件,该语句仅会从一个数据表格中导出字段。如果要从多个表格中到处子弹,必须明确命名之前在脚本中生成的链接以创建相应到处的数据表
store mytable into xyz.qvd (qvd);
store * from mytable into xyz.qvd
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Qlik Sense 的快速入门,可以按照以下步骤进行: 1. 下载和安装:访问 Qlik 官网,下载适用于您的操作系统的 Qlik Sense Desktop 版本,并按照安装向导进行安装。 2. 创建应用程序:打开 Qlik Sense Desktop,并点击 "创建新应用程序"。您可以选择从 Excel、CSV 文件等数据源导入数据,或者使用内置的示例数据。 3. 构建数据模型:在应用程序中,您可以使用 Qlik Sense 的自动关联功能来创建数据模型。将相关的表连接起来,并添加字段。Qlik Sense 会自动识别字段之间的关系。 4. 创建可视化图表:在数据模型构建完成之后,您可以使用 Qlik Sense 的可视化编辑器来创建各种图表。选择适当的图表类型,将字段和度量指标拖放到相应位置,进行交互式的数据分析。 5. 添加过滤器和交互操作:为了提高用户体验和数据探索性,您可以在应用程序中添加过滤器、选项按钮和交互式操作。这些功能可以帮助用户更好地理解和探索数据。 6. 共享和发布:一旦您完成了应用程序的构建和调整,您可以将其保存并共享给其他用户。您可以选择将应用程序发布到 Qlik Sense 服务器上,以便其他人可以通过网页访问它。 7. 学习资源:Qlik 官网提供了丰富的学习资源,包括官方文档、培训课程和社区论坛。您可以利用这些资源进一步学习和掌握 Qlik Sense 的功能和技巧。 希望以上步骤对您快速入门 Qlik Sense 有所帮助!如有更多疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值