You need to enable JavaScript to run this app.
导航

自定义SQL

最近更新时间2023.10.19 16:42:45

首次发布时间2021.12.07 12:02:36

1. 概述

用户可在完成数据连接之后,即可进行数据集的创建,可以支持直接使用原表创建数据集、多表 join/union 生成数据集,一些复杂逻辑可以使用自定义 SQL 生成数据集,以下介绍如何通过数据表/自定义 SQL 创建数据集。

2. 快速入门

(1)点击数据准备->数据集,点击左侧加号,选择「新建数据集」

(2)从已有数据连接中选择目标数据源,或者直接从头新建数据连接

  • V2.50.0 版本之前, 如下下图所示

  • V2.50.0 版本及之后, 如下图所示,以下介绍以该图示来示意


(3)从已有数据连接新建,先从数据连接中选择目标连接,点击确认;如新建数据连接,先按照数据接入说明操作,操作完成之后直接进入到下一步进行模型配置

(4)在模型配置页面上,先选中左侧的自定义SQL或者数据库中的表,然后通过鼠标拖拽的方式将其拖拽到右侧画布中


(5)选择表创建与 SQL 创建

  • 点击左侧表,拖拽到右侧画布,左上角选择该数据集是抽取/直连的连接方式,点击「保存」,通过表直接创建数据集

  • 点击左侧数据连接下的「自定义SQL」,拖拽到右侧画布

    • 之后可以在下方 SQL 编辑区自行输入 SQL 语句

    • 也可以点击左侧表,在弹出框中点击「插入查询语句」,即可实现该表的快速SQL查询语句

  • 先点击下图所示 SQL 编辑框上方的「保存」按钮用于保存 SQL 语句;之后点击左上角选择该数据集是抽取/直连的连接方式,然后点击右上方「保存」按钮用于保存该数据集

(6)选择抽取/直连的连接方式,点击保存即可

3. 功能介绍

3.1 表创建与 SQL 创建区别

模型配置数据源类型支持限制数据库语法限制
表创建单表、JOIN/UNION所有数据源均可支持表创建无限制
SQL 创建单表仅数据库来源支持,详细支持清单见数据连接根据数据库类别,对 SQL 语法有限制,比如数据连接是 MySQL,不支持 Oracle 的语法

3.2 快捷创建 SQL 语句

SQL 语句的创建可以在 SQL 输入框中直接手动输入;也可以在左侧表中选中数据库和数据表,鼠标 hover 到数据表上,可以选择插入表名、插入字段、插入查询语句,实现快速创建 SQL 语句的能力

  • 点击插入表名,在自定义 SQL 框中会出现该表名

  • 点击插入字段,在自定义 SQL 框中会出现该字段名

  • 点击插入查询语句,在自定义 SQL 框中会出现该表的查询语句(格式:select 字段 A,字段 B from DB.T_table)

3.3 自定义 SQL 面板

提供格式化、解析、保存、展示预览、数据预览、字段名称、抽取设置功能

  • 格式化:点击可格式化当前语句,增强 SQL 语句可读性;

  • 解析:校验 SQL 语法,并提示当前语法问题原因;

  • 保存:保存当前语句,修改 SQL 语句之后都建议点击保存,在保存数据集之前都需要点击保存;

  • 展示预览:预览该 SQL 语句的结果

  • 数据预览:在右侧展示左侧 SQL 语句的执行结果,可以在「展示行数」中调整预览行数

  • 字段名称:点击即可直接查看该SQL结果的字段名称和数据类型

  • 抽取设置:点击即可配置抽取参数,参数解释请移步运行参数

数据源限制:目前 ADB2.0、ADB3.0、DB2、 Phoenix、Vertica、Teradata、PostgreSQL、Greenplum 不支持参数配置,其他能创建自定义 SQL 的数据源都支持该设置

  • 修改名称与全屏:在自定义 SQL 的上方栏,点击可以修改 SQL 数据集的名称,也可以点击全屏按钮使得该 SQL 数据集可以全屏



3.4 同步多天

用户如果需要每次数据同步多天,比如指定同步第 1、3、7 天前的数据到该数据集中,则需要使用自定义 SQL 来创建数据集。
操作方法
(1)按照上述说明创建一个自定义 SQL 数据集
(20点击上方同步设置进入同步设置页面,点击高级设置

(3)在高级设置中有同步多天的开关,选择开启同步多天,同时下方有同步多天参数设置的提示

(4)开同步多天后,返回模型配置页面,按照书写规范编写 SQL 即可,之后按照正常创建数据集的步骤配置完保存即可
功能说明
在自定义 SQL 面板中,点击左下角的变量说明即可看到默认变量的提示,即该自定义 SQL 中可以引入日期变量实现动态日期查询

  • ${DATE} 业务时间日期,格式为:yyyy-MM-dd,如:2015-05-1

  • ${date} 业务时间日期,格式为:yyyyMMdd,如:20150526

  • ${DATE+n} or ${DATE-n}:以DATE为锚点往后(+)或者向前(-)n天

  • ${date+n} or ${date-n}:以date为锚点往后(+)或者向前(-)n天


SQL 书写规范

  • SQL 语句中必须指定 date字 段且命名为 p_date分区字段(放最后)

  • 在 where 语句中明确同步要求

示例1 :
同步第1天以及第7天前数据

select
user_id,country,city,gender,
date as p_date #指定分区字段
from table A
where date in ('${date-1}','${date-7}') #指定同步第1天及第7天前数据

示例2 :
同步最近7天数据

select
user_id,country,city,gender,
date as p_date #指定分区字段
from table A
where date >= ${date-7} #指定同步最近七天数据

注意事项
如果是已经创建完成的数据集,开启同步多天后点击同步可能会出现一直等待依赖的情况

  • 中途开启同步多天需要确保数据集已经有超过同步多天范围的分区

    • 例:同步多天设置同步前 30 天,但是当前数据集仅同步过过去 7 天的分区,这时开启同步多天会一直等待依赖

    • 解决方法:先关闭同步多天,回溯至少过去 30 天分区的数据,之后再开启同步多天

    • 注意:如果是直接表创建抽取的数据集,关闭同步多天后记得回到模型配置中修改分区设置,因为开同步多天后,分区那边会自动修改,关闭同步多天后后分区字段会保持同步多天的设置,如果不手动修改则会导致变成数据集一个分区同步上游表 N 个分区的数据