You need to enable JavaScript to run this app.
导航
自定义SQL
最近更新时间:2024.09.18 10:45:38首次发布时间:2021.12.07 12:02:36

1. 概述

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

2. 快速入门

(1)点击数据准备->数据集,点击左侧加号,选择「新建数据集」
图片
(2)从已有数据连接中选择目标数据源,若无数据连接,可在数据连接中进行创建。
图片
(3)选择表创建与 SQL 创建

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

图片

图片

  • 将自定义SQL拖拽至画布后,之后可以在下方 SQL 编辑区自行输入 SQL 语句
    图片
  • 也可以点击左侧表,在弹出框中点击「插入查询语句」,即可实现该表的快速SQL查询语句
    图片
  • 点击下图所示 SQL 编辑框上方的「保存」按钮用于保存 SQL 语句;选择抽取/直连的连接方式,点击右上角保存

图片

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 数据集
(2)点击上方同步设置进入同步设置页面,点击高级设置
图片
(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}','${date-6}') #指定同步第1天及第7天前数据

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

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

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

  • 中途开启同步多天需要确保数据集已经有超过同步多天范围的分区
    • 例:同步多天设置同步前 30 天,但是当前数据集仅同步过过去 7 天的分区,这时开启同步多天会一直等待依赖
    • 解决方法:先关闭同步多天,回溯至少过去 30 天分区的数据,之后再开启同步多天
    • 注意:如果是直接表创建抽取的数据集,关闭同步多天后记得回到模型配置中修改分区设置,因为开同步多天后,分区那边会自动修改,关闭同步多天后后分区字段会保持同步多天的设置,如果不手动修改则会导致变成数据集一个分区同步上游表 N 个分区的数据
      图片