SQL IDE 使用文档

Thinking Analytics SQL是基于yanagishima开发的一款查询IDE,使用Presto查询引擎,用于帮助TA的用户使用SQL进行数据查询。以下是查询操作的主界面,我们将分模块为您进行详细介绍:

一、查询框

在界面中心的是查询框,您可以在查询框中输入查询语句,您需要注意以下几点:

  • 目前用户只具备查询权限
  • 字段名请使用双引号 " " 括起,也可以缺省,但如果查询字段名带有特殊符号(如$#),则必须使用双引号
  • 字符串请必须使用单引号 ' '括起
  • 语句结束请不要使用 ; 作为结束标识
  • 每条语句中请尽量带上分区键"$part_date""$part_event"以提高查询效率
  • 使用快捷键 Ctrl + Enter 可以直接执行查询语句。

二、工具栏

工具栏位于查询框的右下角,主要由四个按钮组成,从左到右分别为:

  1. 规整格式:将查询语句进行格式整理
  2. 复制:复制查询语句
  3. 添加收藏:可以将查询框中的查询语句保存至书签页中
  4. Run:执行查询语句

三、标签页

标签页主要有五个Tab标签页组成,其功能和介绍分别为:

1、TreeView(表结构)

TreeView标签页主要呈现的是表结构:

  • 左侧部分由SchemaTable组成

    • Schema中可以查看常规表ta和临时表temp,如果没有创建临时表,则只展示ta,详情参考创建临时表一章

    • Table中可以查看所有有访问权限的项目的表,包括事件表、用户表以及使用二次开发导入的自定义表

  • 中间部分Column呈现的是所选表的所有属性的信息,包括属性名、属性类型以及属性中文名

  • 右侧部分event_name呈现的是所有的事件以及事件的描述,点击某一事件将呈现该事件的所有属性

  • 左下部分可以选择预设的语句模板,点击Set可以将所选模板直接生成在查询框中,点击Run可以直接执行该模板的语句

2、History(查询历史)

History标签页主要呈现的是您进行过的查询语句,其中呈现的是语句的ID、完成时间、计算耗费时间、查询语句等信息

您可以点击查询ID查看查询结果,点击Set列的按钮将该语句复制到查询框中,也可以下载此次查询的结果(TSV或CSV格式),您还可以通过右上部分的搜索框进行查询语句的搜索

3、Bookmark(书签)

Bookmark标签页呈现的是您通过收藏按钮收藏的语句,书签将会记录在账号中:

您可以直观看到查询语句,点击Set可以直接将语句复制到查询框中,点击Del则可以从书签中删除该语句

4、Result(查询结果)

您可以在Result标签页中看到查询结果,并且可以下载TSV与CSV格式;同时点击Publish按钮,可以生成一个只读的查询结果页,便于进行分享

需要注意的是,查询结果页面最多只展示1000条记录,超过1000条的记录可以通过下载功能下到本地后再进行查询,下载功能最大支持的100万条数据的下载

5、Query List(查询列表)

在Query List标签页中,您可以看到所有查询的记录,包括执行语句、执行人以及当前状态,也可以在此Kill查询语句。

四、帮助

查询框的右上角有两个帮助按钮,分别是Presto的使用文档以及IDE的帮助页面,现阶段如果您对Presto查询存有疑问,可以查看Presto提供的官方文档, 亦可访问下列网址:

https://prestosql.io/docs/current/index.html

五、创建临时表

在TA后台2.2版本中,放开了创建临时表的能力,可以使用以下语句创建临时表:

CREATE TABLE temp.tablename AS SELECT...

可以将SELECT语句的结果创建成临时表,临时表只能在temp库下创建,因此必须以temp.开头,具体语法可以查看创建临时表语法

当创建临时表后,在TreeView标签页中的Schema中将会出现temp库,选中temp后,Table会显示所有自己创建的临时表

如果需要访问临时表数据,必须要带上库名temp.作为开头,比如上图中的temp.testing,而访问常规表可以缺省ta.

如果需要删除临时表可以适用以下语法

DROP TABLE temp.tablename

每个用户所能同时拥有的临时表上限为50个,到达上限后可删除不需要的临时表,即可再创建新的临时表

六、使用提示及注意事项

1、参数变量

可以在语句中加入${变量名}标识符,创建参数变量,创建的参数将会在语句下方出现输入框,在执行语句前于输入框中填入相应的文本,在执行时将会自动将文本填充至查询语句。

在使用过程中,可以创建多个参数变量,如图:

另外同一参数变量可以在语句中多次被使用,在多表联查时,经常将时间用同一参数进行统一控制:

创建参数变量的好处是,可以直接将带有参数的语句通过Bookmark书签功能进行保存,下次可以直接调出(点击语句右侧的set按钮)进行使用,提高语句的复用能力:

使用参数变量有以下几个注意点:

1. 变量名只能包含英文小写字母(a-z)。

2. 输入参数并执行语句后,语句内的参数变量会被传入值替换,此时选中语句输入框,按下`Ctrl` + `Z`,即可将语句回退至原先状态。

2、try函数

try(expression)

try函数会捕捉查询过程中的三种异常情况,并将异常值返回为NULL。

三种异常情况分别为:

  • 除以0
  • 类型转换错误
  • 数值越界

使用try函数可以有效避免因以上三种异常造成的查询失败,您还可以搭配COALESCE函数使用特定值替换NULL值。

3、try_cast函数

try_cast(value AS type)

try_cast的作用与cast函数一致,都是对值进行类型转换,区别在于try_cast在类型转换错误时会返回NULL,避免造成查询失败。

4、时间/日期函数

使用current_datecurrent_timecurrent_timestamplocaltimelocaltimestamp时不用加圆括号,Presto也不支持加圆括号的写法,使用时请注意。

5、开窗函数

Presto支持开窗函数,窗口函数中有不少非常实用的函数,如first_value与last_value很适合计算一段时间内第一次或最后一次做某事的值。

比如计算每名用户首次产生购买商品行为时购买的物品:

SELECT user_id,first_purchase_product FROM
(SELECT user_id,first_value(product_name) over(partition by user_id order by time) AS first_purchase_product FROM log.purchase)
GROUP BY user_id,first_purchase_product

first_valuelast_value需要搭配over子句使用,over子句中的partition by类似于group by,即按照所给字段分组,order by则会决定进行排序的字段。

results matching ""

    No results matching ""