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

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

注意

日志服务产品架构升级,支持更丰富的检索分析功能。

  • 如果您使用的是 2.0 架构,可参考本文档使用相关功能。
  • 如果您使用的是 1.0 架构,可参考检索分析(1.0 架构)中的检索概述等文档使用相关功能。

如何区分架构,请参考如何快速区分架构 1.0 和 2.0。关于架构的具体说明,请参考日志服务架构升级通知

语法说明

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
    
  • 返回结果:
    图片