Qlik Sense 使用Join合并表格

Join | Windows 版 Qlik Sense帮助

什么是Qlik Sense的Join

join 前缀可连接加载的表格和现有已命名的表格或最近创建的数据表。本质上跟SQL的Join很类似。

联接数据的效果是通过一组额外的字段或属性扩展目标表,即目标表中不存在的字段或特性。源数据集和目标表之间的任何公共字段名都用于确定如何关联新的传入记录。这通常被称为“自然联接”。根据联接关联的唯一性和使用的联接类型,Qlik 联接操作可能导致生成的目标表具有比开始时更多或更少的记录。

有四种类型的联接:

  • 左侧联接 left join

左联接是最常见的联接类型。例如,如果您有一个事务数据集,并希望将其与参考数据集组合,则通常会使用 Left Join。首先加载事务表,然后加载引用数据集,同时通过 Left Join 前缀将其连接到已加载的事务表。Left Join 将保持所有交易的原样,并添加找到匹配项的补充参考数据字段。

  • 内部联接 inner join

当您有两个数据集,其中您只关心存在匹配关联的任何结果时,请考虑使用 Inner Join。如果未找到匹配项,这将从加载的源数据和目标表中删除所有记录。因此,这可能会使目标表中的记录比连接操作发生之前更少。

  • 外部联接 outer join

当您需要同时保留目标记录和所有传入记录时,请使用 Outer Join。如果未找到匹配项,则仍保留每组记录,而连接另一侧的字段将保持未填充(空)。

如果省略类型关键字,则默认联接类型为外部联接。

  • 右侧联接 right join

此联接类型保留所有将要加载的记录,同时将联接所针对的表中的记录减少到只有传入记录中存在关联匹配的记录。这是一种利基联接类型,有时用于将已预加载的记录表缩减为所需子集。

来自不同类型联接操作的示例结果集

示例结果集来自不同类型的联接操作,每个操作之后都有数据表的前后表示。

信息注释如果联接操作的源和目标之间没有共同的字段名,则联接将导致所有行的笛卡尔乘积,这称为“交叉联接”。

“交叉联接”操作的示例结果集

在交叉联接操作(可以涉及任何类型的联接操作)之后,输入数据与输出进行比较之前和之后。

语法:  

[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )

参数
参数说明
tablename可以将命名的表格与加载的表格进行比较。
loadstatement或 selectstatementLOAD 或 SELECT 语句适用于加载的表格。

这些主题可以帮助您使用此函数:

相关主题
主题说明
使用 Join 和 Keep 合并表格 中合并表格本主题进一步解释了“连接”和“保留”数据集的概念。
KeepKeep 加载前缀类似于 Join 前缀,但它不组合源数据集和目标数据集。相反,它根据所采用的操作类型(内部、外部、左侧或右侧)修剪每个数据集。

Left Join 左联接:使用参考数据集丰富目标表

加载脚本和结果

概述

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

加载脚本包含:

  • 表示更改记录的数据集,该数据集加载到名为 Changes 的表中。它包括一个状态 ID 关键字段。

  • 表示变更状态的第二数据集,通过将其与左 Join加载前缀连接来加载并与原始变更记录组合。

此左联接确保更改记录保持完整,同时添加状态属性,其中根据公共状态 ID 找到传入状态记录中的匹配项。

加载脚本

Changes:
Load * inline [ 
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact 
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Status:
Left Join (Changes)
Load * inline [
Status ID	Status	Sub Status
1	Open	Not Started
2	Open	Started
3	Closed	Completed
4	Closed	Cancelled
5	Closed	Obsolete			
] (delimiter is '\t');复制代码到剪贴板

结果

打开数据模型查看器,并记录数据模型的形状。仅存在一个非规范化表。它是所有原始变更记录的组合,匹配的状态属性连接到每个变更记录上。

得到内部数据模型

更改

更改 ID

状态 ID

计划的开始日期

计划的结束日期

业务影响

状态

子状态

如果在数据模型查看器中展开预览窗口,您将看到整个结果集的一部分被组织到一个表中:

在数据模型查看器中预览更改表

更改 ID

状态 ID计划的开始日期计划的结束日期业务影响状态子状态

10030

419/01/202223/02/2022关闭已取消

10031

320/01/202225/03/2022关闭已完成

10015

304/01/202215/02/2022关闭已完成

10103

102/04/202229/05/2022中等打开未开始
10116115/04/202224/04/2022打开未开始

10134

103/05/202208/07/2022打开未开始
10264110/09/202217/10/2022中等打开未开始

10040

129/01/202222/04/2022打开未开始
10323108/11/202226/11/2022打开未开始
10187225/06/202224/08/2022打开已开始
10185223/06/202208/09/2022打开已开始
10220228/07/202206/09/2022打开已开始
10326211/11/202205/12/2022打开已开始

10138

207/05/202203/08/2022打开已开始
10334219/11/202206/02/2023打开已开始

注意:由于 (右表)Status 表中的第五行(Status ID:'5'、Status:'Closed'、Sub Status:'Obsolete')与 Changes (坐表)表中的任何记录都不对应,因此此行中的信息不会出现在上面的结果集中。

返回至数据加载编辑器。加载数据并打开工作表。创建新表并将该字段添加为维度: Status。

添加该度量:

=Count([Change ID])

现在您可以按状态检查更改的数量。

结果表
状态=Count([Change ID])
打开12
关闭3

Inner Join 内部联接:仅合并匹配记录

加载脚本和结果

概述

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

加载脚本包含:

  • 表示更改记录的数据集,该数据集加载到名为 Changes 的表中。

  • 第二个数据集表示源系统 JIRA 中的变更记录。通过使用 Inner Join 加载前缀将其与原始记录连接,将其加载并合并。

该 Inner Join 确保只保留两个数据集中的五个变更记录。

加载脚本

Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

JIRA_changes:
Inner Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10000	JIRA					
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
20000	TFS
] (delimiter is '\t');复制代码到剪贴板

结果

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

  • Source System

  • Change ID

  • Business Impact

现在您可以检查五个结果记录。来自 Inner Join 的结果表将只包括两个数据集中具有匹配信息的记录。

结果表
源系统更改 ID业务影响
JIRA10030
JIRA10134
JIRA10220
JIRA10323
JIRA10334

Outer Join 外部联接:合并重叠记录集

加载脚本和结果

概述

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

加载脚本包含:

  • 表示更改记录的数据集,该数据集加载到名为 Changes 的表中。

  • 第二个数据集表示源系统 JIRA 中的变更记录。通过使用 Outer Join 加载前缀将其与原始记录连接,将其加载并合并。

这确保了来自两个数据集的所有重叠更改记录都被保留。

加载脚本

// 8 Change records

Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
] (delimiter is '\t');

// 6 Change records

JIRA_changes:
Outer Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
10597	JIRA
] (delimiter is '\t');复制代码到剪贴板

结果

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

  • Source System

  • Change ID

  • Business Impact

现在您可以检查 10 个结果记录。

结果表
源系统更改 ID业务影响
JIRA10030
JIRA10134
JIRA10220
JIRA10323-
JIRA10334
JIRA10597-
-10015
-10031
-10040
-10138

Right Join 右联结:通过辅助主数据集修剪目标表

加载脚本和结果

概述

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

加载脚本包含:

  • 表示更改记录的数据集,该数据集加载到名为 Changes 的表中。

  • 第二数据集表示源系统 Teamwork 的变更记录。通过将其与 Right Join 加载前缀连接,将其加载并与原始记录组合。

这确保只保留 Teamwork 更改记录,而如果目标表没有匹配 Change ID,则不会丢失任何 Teamwork 记录。

加载脚本

​​​​​​​

Changes:

Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Teamwork_changes:
Right Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10040	Teamwork
10015	Teamwork
10103	Teamwork
10031	Teamwork
50231	Teamwork
] (delimiter is '\t');复制代码到剪贴板

结果

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

  • Source System

  • Change ID

  • Business Impact

现在您可以检查五个结果记录。

结果表
源系统更改 ID业务影响
团队工作10015
团队工作10031
团队工作10040
团队工作10103中等
团队工作50231-

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客——只能吃土豆的牛牛(进制转化)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 旅行完了的牛牛又胖了,于是他终于下决心要戒掉零食,所以他带着他最爱的土豆回到了牛星,开始了在牛星种土豆和只吃土豆减肥的日子。(吃土豆能减肥…

Future模式先给您提货单

Future模式是一种设计模式,用于在处理耗时操作时提高程序的响应性。 角色介绍: Main类: 负责向Host发出请求并获取数据的类。 Host类: 负责向请求返回FutureData的实例的类,起到调度的作用。 Data接口: 表示访问数据的方法的接口,由FutureD…

S275智慧煤矿4G物联网网关:矿山开采的未来已来

随着经济发展煤矿需求不断激增,矿山矿井普遍处于偏远山区,生产管理、人员安全、生产效率是每个矿山矿井都需要考虑的问题,利用网关对现场终端设备连接组网,实现智慧煤矿远程管理。 各矿山矿井分布范围比较广泛,户外环…

python内置函数有哪些?整理到了7大分类48个函数,都是工作中常用的函数

python内置函数 一、入门函数 1.input() 功能: 接受标准输入,返回字符串类型 语法格式: input([提示信息])实例: # input 函数介绍text input("请输入信息:") print("收到的数据是:%s" % (text))#输出…

Qt Design Studio+Pyside项目

Qt Design Studio设计出的项目结构有多个层级的目录,我们直接用类似Qt Creator工具的方式加载main.qml文件时会报错提示module "content" is not installed,将content加入importPath后还是报同样的错误。 Qt Design Studio生成的文件包含了.qm…

lv14 内核内存管理、动态分频及IO访问 12

一、内核内存管理框架 内核将物理内存等分成N块4KB,称之为一页,每页都用一个struct page来表示,采用伙伴关系算法维护 补充: Linux内存管理采用了虚拟内存机制,这个机制可以在内存有限的情况下提供更多可用的内存空…

路由、组件目录存放

文章目录 单页应用程序:SPA- Single Page Application路由的介绍VuePouter的介绍VueRouted 的使用 组件目录存放问题(组件分类) 单页应用程序:SPA- Single Page Application 单页应用(SPA):所有功能在一个…

Springmvc-@RequestBody

SpringBoot-2.7.12 请求的body参数无法转换,服务端没有报错信息打印,而是响应的状态码是400 PostMapping("/static/user") public User userInfo(RequestBody(required false) User user){user.setAge(19);return user; }PostMapping("…

算法设计与分析实验一:二分查找

目录 一、有序数组中的单一元素 1.1思路 1.2 代码实现 1.3 运行结果 二、长度最小的子数组 2.1思路 2.2 代码 2.3 运行结果 三、 山脉数组中查找目标值 3.1 思路 3.2 代码 3.3 运行结果 四、寻找旋转排序数组中的最小值 4.1思路 4.2代码 4.3 运行结果 一、有…

超越 Node.js:Bun 的创新与突破

1. Bun Bun 是一个全新的 JavaScript 运行时,类似于 Node.js 和 Deno,它专注于提供出色的性能和开发者体验。Bun 的一些特点包括: 快速的性能:Bun 旨在提供高性能,无论是启动时间、执行速度还是安装依赖包的速度。 兼…

ORM-02-Hibernate 对象关系映射(ORM)框架

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.(手写简易版 mybatis) Hibernate Hibernate ORM 允许开发者更轻松地编写那些数据在应用程序进程结束后仍然存在的应用程序。 作为一个对象关系映射&#xff08…

蓝桥杯省赛无忧 编程14 肖恩的投球游戏加强版

#include <stdio.h> #define MAX_N 1003 int a[MAX_N][MAX_N], d[MAX_N][MAX_N]; // 差分数组的初始化 void init_diff(int n, int m) {for (int i 1; i < n; i) {for (int j 1; j < m; j) {d[i][j] a[i][j] - a[i-1][j] - a[i][j-1] a[i-1][j-1];}} } // 对差…

【王道数据结构】【chapter2线性表】【P44t17~t20】【统考真题】

目录 2009年统考 2012年统考 2015年统考 2019年统考 2009年统考 #include <iostream>typedef struct node{int data;node* next; }node,*list;list Init() {list head(list) malloc(sizeof (node));head->next nullptr;head->data-1;return head; }list Buyne…

QA-GNN: 使用语言模型和知识图谱的推理问答

Abstract 使用预训练语言模型&#xff08;LMs&#xff09;和知识图谱&#xff08;KGs&#xff09;的知识回答问题的问题涉及两个挑战&#xff1a;在给定的问答上下文&#xff08;问题和答案选择&#xff09;中&#xff0c;方法需要&#xff08;i&#xff09;从大型知识图谱中识…

C++:auto 关键字 范围for

目录 auto 关键字&#xff1a; 起源&#xff1a; auto的使用细则&#xff1a; auto不能推导的场景&#xff1a; 范围for&#xff1a; 范围for的使用条件&#xff1a; C的空指针&#xff1a; 注意&#xff1a; auto 关键字&#xff1a; 起源&#xff1a; 随着程序越…

蜡烛图采用PictureBox控件绘制是实现量化的第一步

股票软件中的蜡烛图是非常重要的一个东西&#xff0c;这里用VB6.0自带的Picture1控件的Line方法就可以实现绘制。 关于PictureBox 中的line 用法 msdn 上的说明为如下所示 object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F] 然…

【Axure教程0基础入门】02高保真基础

02高保真基础 1.高保真原型的要素 &#xff08;1&#xff09;静态高保真原型图 尺寸&#xff1a;严格按照截图比例&#xff0c;参考线 色彩&#xff1a;使用吸取颜色&#xff0c;注意渐变色 贴图&#xff1a;矢量图/位图&#xff0c;截取&#xff0c;覆盖等 &#xff08;…

【Java Kubernates】Java调用kubernates提交Yaml到SparkOperator

背景 目前查询框架使用的是trino&#xff0c;但是trino也有其局限性&#xff0c;需要准备一个备用的查询框架。考虑使用spark&#xff0c;spark operator也已经部署到k8s&#xff0c;现在需要定向提交spark sql到k8s的sparkoperator上&#xff0c;使用k8s资源执行sql。 对比 …

【linux】查看进程和子进程

在Linux系统中&#xff0c;可以使用多个命令来查看进程及其子进程。以下是一些常用的方法&#xff1a; 1. ps 命令 ps 命令用于显示当前进程的状态。可以结合不同的选项来查看进程及其子进程。 查看进程树&#xff1a; ps -auxf - -a 显示所有进程。 - -u 显示进程的用户/所…

2024年最适合开Palworld的游戏服务器

如果要开Palworld服务器&#xff0c;当然要选大内存的服务器 在雨云&#xff0c;你不仅可以 链接&#xff1a;雨云 - 新一代云服务提供商欢迎来到以用户体验为优先的雨云&#xff0c;我们提供稳定高速的国际虚拟主机&#xff0c;云服务器产品&#xff0c;强大的功能&#xff…