You need to enable JavaScript to run this app.
导航
UNION 子句
最近更新时间:2024.08.23 10:03:47首次发布时间:2024.01.22 17:20:01

UNION 子句用于合并多个 SELECT 子句的分析结果。本文介绍 UNION 子句的语法格式和示例。

语法说明

UNION 子句的语法格式如下:

SELECT Key1 FROM Table1
UNION [ALL]
SELECT Key2 FROM Table2

说明

  • UNION 子句支持跨日志项目合并,即通过 UNION 子句合并多个 SELECT 子句时,各个 SELECT 子句可以源于不同的日志项目中的不同日志主题。
  • UNION 子句中每个 SELECT 子句的分析结果字段数量和类型应相同。

参数说明如下:

参数

说明

ALL

如果 SELECT 结果中存在重复的行,UNION 子句默认去重,即仅保留其中一行。如果需要保留所有的重复行,可以使用 UNION ALL

Key

日志字段、表达式。其中:

  • 各个 SELECT 子句的字段数量应相同。
  • key1 和 key2 的数据类型必须相同,字段名称可以不同。

Table

日志主题,格式为Project.Topic,即必须指定日志主题所属的日志项目。
当名称中包含-/$*&%#@等特殊字符时,需使用双引号 "" 包裹,例如 "test-log.open_api"

示例

示例 1:合并时去重

  • 场景
    统计两个服务的状态值。查询日志项目 test-log 下日志主题 open_api web_api 中的 status 字段,并且合并为一列返回。如果存在重复的 status 字段值,只返回其中一个。

  • 检索分析语句

    * | 
    SELECT status FROM "test-log.open_api" GROUP BY status
    UNION 
    SELECT status FROM "test-log.web_api" GROUP BY status
    
  • 检索分析结果
    图片

示例 2:合并时不去重

  • 场景
    统计两种日志的级别。查询日志项目 test-log 下日志主题 open_api web_api 中的 level 字段,并且合并为一列返回,返回结果中包含重复值。

  • SQL 语句:

    * | 
    SELECT level FROM "test-log.open_api" GROUP BY level
    UNION ALL
    SELECT level FROM "test-log.web_api" GROUP BY level
    
  • 返回结果:
    图片

示例 3:搭配 LIMIT 语法

  • 场景
    查询日志项目 test-log 下日志主题 open_api web_api 中的 ReqSize 字段,并且将该字段的前三个值合并为一列返回。

  • SQL 语句:

    * | SELECT * FROM
    (SELECT ReqSize FROM "test-log.open_api" LIMIT 3)
    UNION
    (SELECT ReqSize FROM "test-log.web_api" LIMIT 3)
    
  • 返回结果:
    图片