数据查询

查询脚本支持CallDDL、DQL、DML语法。您可以通过查询脚本创建管理Catalog、表、数据查询,可以使用explain语法查看执行计划定位问题,也可以实现对Paimon的管理。

功能

  • SQL语法进行校验,校验失败无法运行。

  • 支持脚本全部语句运行和选中部分语句运行。

  • 支持Call命令和DDL、DQL、DML语法。

    重要

    DDLDML语句运行将会直接影响线上元数据或数据,请谨慎操作。

  • 编写的内容每分钟进行一次自动保存,您也可以选择手动将临时查询持久化保存在左侧文件夹下。

操作步骤

  1. 登录实时计算控制台

  2. 单击目标工作空间操作列下的控制台

  3. 数据开发 > 数据查询页面,单击查询脚本页签。

  4. 单击image.png,新建查询脚本。

  5. 填写SQL代码。支持Call命令和DDL、DQL、DML语法。

    创建MySQL Catalog和查询表的SQL代码示例如下:

    • 创建MySQL Catalog:具体可参见创建MySQL Catalog

      CREATE CATALOG mysql_catalog WITH(
        'type' = 'mysql',
        'hostname' = 'rm-bp1x********.mysql.rds.aliyuncs.com',
        'port' = '3306',
        'username' = 'db_user',
        'password' = '${secret_values.mysqlpw}',
        'default-database' = 'flinktest'
      );
    • 查询表:默认使用批模式。

      • 批模式:只能用于有边界的作业,这样做会更高效。(有界:数据集的大小已确定。)

      • 流模式:既可用于有边界作业,也可用于无边界作业。当您的作业是无边界的时候,必须使用流模式才能处理连续的数据流。(无界:数据集的大小未知或者是无限的。)您可以使用SET语法修改为流模式。

        说明

        查询脚本不支持使用变量管理

        SET 'execution.runtime-mode' = 'streaming';
        SELECT * FROM `mysql_catalog`.flinktest.orders;
  6. 选择或创建Session集群。

    单击页面右下角的执行环境,选择对应版本的Session集群(VVR 8.0.4及以上引擎版本)。如果没有,请参见步骤一:创建Session集群

  7. 选中目标代码片段后,单击代码行左侧的运行

  8. (可选)单击右上方的保存,设置文件名称和存储位置。

常见问题

在数据查询页面运行脚本时,报错:Querying an unbounded table 'XXX' in batch mode is not allowed. The table source is unbounded.

报错原因

当前Source为无界流,批作业要求Source是有界流。请根据以下定义判断数据流类型。

  • 有界流:数据集的大小已确定。

  • 无界流:数据集的大小未知或者是无限的。

解决方案

  • 使用SET语法修改为流模式。

    SET 'execution.runtime-mode' = 'streaming';
  • 数据开发 > ETL新建作业,重新执行。

    ETL新建作业后,通过调试功能查看运行结果,或者部署后查看运行结果。

相关文档