Qlik Sense : Crosstable在数据加载脚本中使用交叉表

什么是Crosstable?

交叉表是常见的表格类型,特点是在两个标题数据正交列表之间显示值矩阵。如果要将数据关联到其他数据表格,交叉表通常不是最佳数据格式。

本主题介绍了如何逆透视交叉表,即,在数据加载脚本中使用 LOAD 语句的 crosstable 前缀将部分交叉表转置为行。也就是所谓的行转列。

CrossTable实战 1

使用一个限定列逆透视交叉表

交叉表通常位于许多限定列之后,这些列将被直接读取。在此例中,有一个限定列 Year,以及每个月的销售数据矩阵。

使用一个限定列的交叉表
YearJanFebMarAprMayJun
2008456578127822
2009112322224585
2010655622791256
2011452432785515
2012455635786882

如果此表格只是简单加载到 Qlik Sense,结果将为Year使用一个字段,每个月份各一字段。通常,这并非您希望看到的结果。您可能更希望生成三个字段:

  • 在此例中,在上述表格中限定列 Year 使用绿色标记。
  • 在此例中,使用黄色标记的 Jan - Jun 月份表示属性字段。可以适当地将此字段命名为 Month。
  • 数据矩阵值使用蓝色标记。在此例中,它们表示销售数据,因此可以适当地将此字段命名为 Sales。

通过将 crosstable 前缀添加到 LOAD 或 SELECT 语句可实现此操作,例如:

crosstable (Month, Sales) LOAD * from ex1.xlsx;

这可以在 Qlik Sense 中创建以下表格:

使用交叉表前缀的表格已添加至 LOAD 或 SELECT 语句
YearMonthSales
2008一月45
2008二月65
2008三月78
2008四月12
2008五月78
2008六月22
2009一月11
2009二月23
.........

使用两个限定列逆透视交叉表

在此例中,左边有两个限定列,紧跟矩阵列之后。

使用两个限定列的交叉表
SalesmanYearJanFebMarAprMayJun
A2008456578127822
A2009112322224585
A2010655622791256
A2011452432785515
A2012455635786882
B2008577790249034
B2009233534345797
B2010776834912468
B2011573644906727
B2012576847908094

限定列的数量可表述为 crosstable 前缀的第三个参数,如下所述:

crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;

这可以在 Qlik Sense 中创建下列结果:

使用限定列的表可表述为交叉表前缀的第三个参数
SalesmanYearMonthSales
A2008一月45
A2008二月65
A2008三月78
A2008四月12
A2008五月78
A2008六月22
A2009一月11
A2009二月23
............

了解更多Crosstable

  • Crosstableicon-default.png?t=N7T8https://help.qlik.com/zh-CN/sense/November2023/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm

 

Crosstable实战 2

crosstable 加载前缀用于转置“交叉表”或“透视表”结构化数据。使用电子表格源时,通常会遇到以这种方式构造的数据。crosstable 加载前缀的输出和目的是将此类结构转换为规则的面向列的表等价物,因为这种结构通常更适合 Qlik Sense 中的分析。

交叉表转换后数据结构为交叉表及其等效结构的示例

左侧显示交叉表的示例。

语法:  

crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )

参数
参数说明
attribute field name描述要转置的水平方向维度的所需输出字段名称(标题行)。
data field name

所需的输出字段名称,用于描述要转置的维度的水平方向数据(标题行下方的数据值矩阵)。

n

要被转换成常规形式的表格前面的限定符字段数量或未更改的维度。默认值为 1。

此脚本函数与以下函数相关:

相关函数
函数交互
Generic一种转换加载前缀,用于获取实体属性值结构化数据集,并将其转换为常规关系表结构,将遇到的每个属性分离为新的字段或数据列。

示例 1 – 转换数据透视销售数据(简单)

加载脚本和结果

概述

打开数据加载编辑器,并将下面的第一加载脚本添加到新选项卡。

第一个加载脚本包含一个数据集,crosstable 脚本前缀稍后将应用于该数据集,其中应用 crosstable 的部分已注释掉。这意味着注释语法用于在加载脚本中禁用此部分。

第二个加载脚本与第一个加载脚本相同,但应用了未注释 crosstable(通过删除注释语法启用)。脚本以这种方式显示,以突出显示该脚本函数在转换数据中的价值。

第二加载脚本(应用的函数)

tmpData:
//Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];//Final:
//Load Product,
//Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
//Sales//Resident tmpData;//Drop Table tmpData;复制代码到剪贴板

有关使用内联加载的详细信息,请参见内联加载。

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度:

  • Product

  • Jan 2021

  • Feb 2021

  • Mar 2021

  • Apr 2021

  • May 2021

  • Jun 2021

结果表
产品2021 年 1 月2021 年 2 月2021 年 3 月2021 年 4 月2021 年 5 月2021 年 6 月
A100981036310882
B284279297305294292
C505350544951

该脚本允许创建一个交叉表,每个月一列,每个产品一行。按照目前的格式,该数据不容易分析。最好将所有数字放在一个字段中,将所有月份放在另一个字段中,放在一个三列表格中。下一节将解释如何对交叉表进行这种转换。

第二加载脚本(应用的函数)

通过删除 // 来取消对脚本的注释。加载的脚本应如下所示:

tmpData:
Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];Final:
Load Product,
Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
SalesResident tmpData;Drop Table tmpData;复制代码到剪贴板

有关使用内联加载的详细信息,请参见内联加载。

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度:

  • Product

  • Month

  • Sales

结果表
产品销售额值
AJan 2021100
AFeb 202198
AMar 2021103
AApr 202163
AMay 2021108
AJun 202182
BJan 2021284
BFeb 2021279
BMar 2021297
BApr 2021305
BMay 2021294
BJun 2021292
CJan 202150
CFeb 202153
CMar 202150
CApr 202154
CMay 202149
CJun 202151

应用脚本前缀后,交叉表将转换为一个垂直表,其中一列用于 Month,另一列用于 Sales。这提高了数据的可读性。

示例 2 – 将数据透视销售目标数据转换为垂直表结构(中等)

加载脚本和图表表达式

概述

打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。

加载脚本包含:

  • 加载到名为目标的表中的数据集。

  • crosstable 加载前缀,将数据透视的销售人员姓名转换为其自己的字段,标记为 Sales Person。

  • 关联的销售目标数据,该数据被结构化为一个名为 Target 的字段。

加载脚本

SalesTargets:
CROSSTABLE([Sales Person],Target,1)
LOAD
*
INLINE [
Area, Lisa, James, Sharon
APAC, 1500, 1750, 1850
EMEA, 1350, 950, 2050
NA, 1800, 1200, 1350
];复制代码到剪贴板

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度:

  • Area

  • Sales Person

添加该度量:

=Sum(Target)

结果表
面积图销售员=Sum(Target)
APACJames1750
APACLisa1500

APAC

Sharon1850
EMEAJames950
EMEALisa1350
EMEASharon2050
NAJames1200
NALisa1800
NASharon1350

如果要将数据的显示复制为数据透视输入表,可以在工作表中创建等效的数据透视表。

执行以下操作:

  1. 将刚刚创建的表复制并粘贴到工作表中。
  2. 将透视表图表对象拖动到新创建的表副本的顶部。选择转换。
  3. 单击  完成编辑。
  4. 将 Sales Person 字段从垂直列架拖动到水平列架。

下表显示了初始表格形式的数据,如 Qlik Sense 中所示:

原始结果表,如 Qlik Sense 中所示
面积图销售员=Sum(Target)
总计-13800
APACJames1750
APACLisa1500

APAC

Sharon1850
EMEAJames950
EMEALisa1350
EMEASharon2050
NAJames1200
NALisa1800
NASharon1350

等效数据透视表类似如下,每个销售人员姓名的列包含在较大的 Sales Person 行中:

带水平透视 Sales Person 字段的等效透视表
面积图JamesLisaSharon
APAC175015001850
EMEA95013502050
NA135013501350

显示为表和等效数据透视表的数据示例,该透视表具有水平透视的 Sales Person

使用交叉表函数进行数据转换的示例。

示例 3 – 将数据透视销售和目标数据转换为垂直表结构(高级)

加载脚本和图表表达式

概述

打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。

加载脚本包含:

  • 表示销售和目标数据的数据集,按地区和月份组织。这将加载到名为 SalesAndTargets 的表中。

  • crosstable 加载前缀。这用于将 Month Year 维度取消透视到专用字段中,以及将销售和目标金额矩阵转换到名为 Amount 的专用字段中。

  • 使用文本到日期转换特性 date# 将 Month Year 字段从文本转换为适当的日期。此日期转换 Month Year 字段通过 Join 加载前缀连接回 SalesAndTarget 表中。

加载脚本

SalesAndTargets:
CROSSTABLE(MonthYearAsText,Amount,2)
LOAD*
INLINE [
Area	Type	Jan-22	Feb-22	Mar-22	Apr-22	May-22	Jun-22	Jul-22	Aug-22	Sep-22	Oct-22	Nov-22	Dec-22
APAC	Target	425	425	425	425	425	425	425	425	425	425	425	425
APAC	Actual	435	434	397	404	458	447	413	458	385	421	448	397
EMEA	Target	362.5	362.5	362.5	362.5	362.5	362.5	362.5	362.5	362.5	362.5	362.5	362.5
EMEA	Actual	363.5	359.5	337.5	361.5	341.5	337.5	379.5	352.5	327.5	337.5	360.5	334.5
NA	Target	375	375	375	375	375	375	375	375	375	375	375	375
NA	Actual	378	415	363	356	403	343	401	365	393	340	360	405
] (delimiter is '\t');tmp:
LOAD DISTINCT MonthYearAsText,date#(MonthYearAsText,'MMM-YY') AS [Month Year]
RESIDENT SalesAndTargets;JOIN (SalesAndTargets)
LOAD * RESIDENT tmp;DROP TABLE tmp;
DROP FIELD MonthYearAsText;复制代码到剪贴板

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度:

  • Area

  • Month Year

使用标签 Actual 创建以下度量值:

=Sum({<Type={'Actual'}>} Amount)

同时创建此度量,具有标签 Target:

=Sum({<Type={'Target'}>} Amount)

结果表(裁剪)
面积图年度月份实际目标
APACJan-22435425
APACFeb-22434425

APAC

Mar-22397425
APACApr-22404425
APACMay-22458425
APACJun-22447425
APACJul-22413425
APACAug-22458425
APACSep-22385425
APACOct-22421425
APACNov-22448425
APACDec-22397425
EMEAJan-22363.5362.5
EMEAFeb-22359.5362.5

如果要将数据的显示复制为数据透视输入表,可以在工作表中创建等效的数据透视表。

执行以下操作:

  1. 将刚刚创建的表复制并粘贴到工作表中。
  2. 将透视表图表对象拖动到新创建的表副本的顶部。选择转换。
  3. 单击  完成编辑。
  4. 将 Month Year 字段从垂直列架拖动到水平列架。
  5. 将 Values 项目从水平列架拖动到垂直列架。

下表显示了初始表格形式的数据,如 Qlik Sense 中所示:

原始结果表(裁剪),如 Qlik Sense 中所示
面积图年度月份实际目标
总计-1381213950
APACJan-22435425
APACFeb-22434425

APAC

Mar-22397425
APACApr-22404425
APACMay-22458425
APACJun-22447425
APACJul-22413425
APACAug-22458425
APACSep-22385425
APACOct-22421425
APACNov-22448425
APACDec-22397425
EMEAJan-22363.5362.5
EMEAFeb-22359.5362.5

等效数据透视表类似如下,每个单独年度月份的列包含在较大的 Month Year 行中:

带水平透视 Month Year 字段的等效透视表(裁剪)
面积(值)Jan-22Feb-22Mar-22Apr-22May-22Jun-22Jul-22Aug-22Sep-22Oct-22Nov-22Dec-22
APAC - 实际435434397404458447413458385421448397
APAC - 目标425425425425425425425425425425425425
EMEA - 实际363.5359.5337.5361.5341.5337.5379.5352.5327.5337.5360.5334.5
EMEA - 目标362.5362.5362.5362.5362.5362.5362.5362.5362.5362.5362.5362.5
NA - 实际378415363356403343401365393340360405
NA - 目标375375375375375375375375375375375375

显示为表和等效数据透视表的数据示例,该透视表具有水平透视的 Month Year

显示为表和等效数据透视表的数据示例,该透视表具有水平透视的年度月份字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinRAR再爆0 day漏洞,0 day漏洞该如何有效预防

WinRAR再爆0 day漏洞&#xff0c;已被利用超过4个月。 Winrar是一款免费的主流压缩文件解压软件&#xff0c;支持绝大部分压缩文件格式的解压&#xff0c;全球用户量超过5亿。Group-IB研究人员在分析DarkMe恶意软件时发现WinRAR在处理ZIP文件格式时的一个漏洞&#xff0c;漏洞…

iptables/ebtables学习笔记

目录 一、前言 二、Netfilter 构成 三、Netfilter 转发框架 四、Netfilter 与 iptables 五、Netfilter 与 ebtables 一、前言 Netfilter 是 Linux 内核的数据包处理框架&#xff0c;由 Rusty Russell 于 1998 年开发&#xff0c; 旨在改进以前的 ipchains&#xff08;Lin…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…

计算机网络 虚拟局域网划分

一、实验内容 1、分别把交换机命名为SWA、SWB 2、划分虚拟局域网 valn &#xff0c;并将端口静态划分到 vlan 中 划分vlan 方法一&#xff1a;在全局模式下划分vlan&#xff0c;在SWA交换机上创建三个vlan&#xff0c;分别为vlan2&#xff0c;vlan3&#xff0c;vlan4。 方…

飞驰云联入选金融信创生态实验室「金融信创优秀解决方案」

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布了第三期金融信创优秀解决方案&#xff0c;Ftrans飞驰云联“文件数据传输解决方案”成功入选&#xff01; 本次金融信创优秀解决方案遴选经方案征集、方案初审、专家评审等多环…

(2022级)成都工业学院数据库原理及应用实验三:数据定义语言DDL

唉&#xff0c;用爱发电连赞都没几个&#xff0c;博主感觉没有动力了 想要完整版的sql文件的同学们&#xff0c;点赞评论截图&#xff0c;发送到2923612607qq,com&#xff0c;我就会把sql文件以及如何导入sql文件到navicat的使用教程发给你的 基本上是无脑教程了&#xff0c;…

【线段树】2276. 统计区间中的整数数目

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

BJT 和 FET的知识点以及区别

一、晶体管的介绍 晶体管是一种三端半导体器件&#xff0c;它是一种用于大多数电子设备的有源器件。晶体管可根据需要用作绝缘体和导体。我们可以将晶体管用作开关和放大器。它可以与其他电路元件一起使用&#xff0c;并且能够放大电流和电压。我们可以将晶体管分为两种类型&am…

锐化空间滤波器--二阶微分图像增强(提高清晰度的另一种方式)

书上一阶微分的定义可以理解&#xff0c;毕竟这里不死数学上的曲线的概念&#xff0c;而是像素点上的曲线。所以&#xff0c;不同于数学的严格单调递增曲线的导数是大于等于零&#xff0c;这里的严格单调递增曲线&#xff0c;只能是大于零。 至于二阶微分的定义&#xff0c;就…

HarmonyOS实战开发-图片编辑、使用 TextArea 实现多文本输入

介绍 本示例使用 TextArea 实现多文本输入&#xff0c;使用 ohos.app.ability.common 依赖系统的图库引用&#xff0c;实现在相册中获取图片&#xff0c;使用 ohos.multimedia.image 生成pixelMap&#xff0c;使用pixelMap的scale()&#xff0c;crop()&#xff0c;rotate()接口…

idea 中运行spring boot 项目报 Command line is too long的解决办法。

Command line is too long 在这里选择edit configures 选择shrten command line , 选择 jar manifest 运行即可。

解决vue启动项目报错:npm ERR! Missing script: “serve“【详细清晰版】

目录 问题描述问题分析和解决情况一解决方法情况二&#xff08;常见于vue3&#xff09;解决方法情况三解决方法 问题描述 在启动vue项目时通常在控制台输入npm run serve 但是此时出现如下报错&#xff1a; npm ERR! Missing script: "serve" npm ERR! npm ERR! T…

IJKPLAYER源码分析-iOS端显示

1 简介 1.1 EAGL(Embedded Apple Graphics Library) 与Android系统使用EGL连接OpenGL ES与原生窗口进行surface输出类似&#xff0c;iOS则用EAGL将CAEAGLLayer作为OpenGL ES输出目标。 与 Android EGL 不同的是&#xff0c;iOS EAGL 不会让应用直接向 BackendFrameBuffer 和 F…

KKVIEW远程远程访问家里电脑

远程访问家里电脑&#xff1a;简易指南与价值所在 在数字化时代&#xff0c;电脑已成为我们日常生活和工作中不可或缺的工具。有时&#xff0c;我们可能在外出时急需访问家中电脑里的某个文件或应用&#xff0c;这时&#xff0c;远程访问家里电脑就显得尤为重要。本文将简要介…

微服务-7 Docker

一、镜像、容器、仓库 容器是镜像的实例&#xff0c;仓库中存储着镜像。 二、镜像的操作 三、容器的操作 创建容器停止容器&#xff0c;查看后发现没有了(docker ps 默认只展示没有停止的) docker ps -a (可以展示运行中和停止的镜像)删除容器&#xff1a;(docker rm 不能删除…

突破界限 千视将在 NAB 2024 展会上展示领先的 AV over IP 技术

突破界限&#xff01;千视将在 NAB 2024 展会上展示领先的 AV over IP技术 作为AV over IP领域的先驱者&#xff0c;Kiloview将于2024年4月14日至17日在NAB展会&#xff08;展台号&#xff1a;SU6029&#xff09;隆重登场&#xff0c;展示我们领先业界的AV over IP产品、解决方…

【问题】解决1130-Host‘ ‘is not allowed to connect to this MySQL 本地无法连接服务器的数据库

【问题】解决1130-Host‘ ‘is not allowed to connect to this MySQL 本地无法连接服务器的数据库 原因: 默认mysql只允许 localhost 本地访问数据库, 解决方法 将 localhost 改为 % 所有 第一步 回车 输入密码 mysql -u root -p 第二步 切换数据库 use mysql 第三步 更新所…

Day96:云上攻防-云原生篇Docker安全系统内核版本漏洞CDK自动利用容器逃逸

目录 云原生-Docker安全-容器逃逸&系统内核漏洞 云原生-Docker安全-容器逃逸&docker版本漏洞 CVE-2019-5736 runC容器逃逸(需要管理员配合触发) CVE-2020-15257 containerd逃逸(启动容器时有前提参数) 云原生-Docker安全-容器逃逸&CDK自动化 知识点&#xff1…

Ubuntu下配置Android NDK环境

Android-NDK的下载 下载Android-NDK wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 执行bin文件&#xff08;即解压&#xff09; ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK&#xff0c;还需要进行环境变量…

GitHub repository - Code - Issues - Pull Requests - Wiki

GitHub repository - Code - Issues - Pull Requests - Wiki 1. Code2. Issues3. Pull Requests4. WikiReferences 1. Code 显示该仓库中的文件列表。仓库名下方是该仓库的简单说明和 URL. 2. Issues 用于 BUG 报告、功能添加、方向性讨论等&#xff0c;将这些以 Issue 形式进…