云服务器内容精选

  • 语法支持的类型 SecMaster SQL语法支持的类型如下: STRING,BOOLEAN,BYTES,DECIMAL,TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,DOUBLE,DATE,TIME,TIMESTAMP,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL,ARRAY,MULTISET,MAP,ROW。 注意事项 SecMaster SQL兼容Flink 1.7.2版本SQL语法。 Flink SQL 对于标识符(表、属性、函数名)有类似于 Java 的词法约定: 不管是否引用标识符,都保留标识符的大小写。 且标识符需区分大小写。 与 Java 不一样的地方在于,通过反引号,可以允许标识符带有非字母的字符(如:"SELECT a AS `my field` FROM t")。 字符串文本常量需要被单引号包起来(如 SELECT 'Hello World' )。两个单引号表示转义(如 SELECT 'It''s me.')。字符串文本常量支持 Unicode 字符,如需明确使用 Unicode 编码,请使用以下语法: 使用反斜杠(\)作为转义字符(默认):SELECT U&'\263A' 使用自定义的转义字符: SELECT U&'#263A' UESCAPE '#' 慎用正则函数(REGEXP) 正则表达式是非常耗时的操作,对比加减乘除通常有百倍的性能开销,而且正则表达式在某些极端情况下可能会进入无限循环,导致作业阻塞,因此建议使用LIKE。正则函数包括: REGEXP REGEXP_REPLACE 父主题: SecMaster SQL语法参考
  • 约束 支持在Hudi客户端执行Spark SQL操作Hudi。 支持在Spark2x的JD BCS erver中执行Spark SQL操作Hudi。 不支持在Spark2x的客户端执行Spark SQL操作Hudi,支持在Spark3.1.1及之后版本的客户端执行Spark SQL操作Hudi。 不支持在Hive、Hetu引擎中写hudi表,以及修改hudi表结构,仅支持读。 由于SQL的KeyGenerator默认是org.apache.hudi.keygen.ComplexKeyGenerator,要求DataSource方式写入时KeyGenerator与SQL设置的一致。
  • CREATE DATABASE CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER ClickHouse集群名]; 表1 参数说明 参数 说明 db_name 数据库 IF NOT EXISTS 如果CREATE语句中存在IF NOT EXISTS关键字,则当数据库已经存在时,该语句不会创建数据库,且不会返回任何错误。 ON CLUSTER ClickHouse集群名 用于指定集群名称。 集群名信息可以使用以下语句的cluster字段获取: select cluster,shard_num,replica_num,host_name from system.clusters;
  • 使用示例 创建数据库demo。 create database demo ON CLUSTER default_cluster; 查看新建的数据库。 host-172-16-30-9 :) show databases;SHOW DATABASESQuery id: ced1af23-0286-40cc-9c7a-ccbca41178d8┌─name───────────────┐│ INFORMATION_SCHEMA ││ default ││ demo ││ information_schema ││ system │└────────────────────┘5 rows in set. Elapsed: 0.002 sec.
  • 使用约束 新增列在设置默认值前,如果数据已经进行了重写,则查询历史数据不支持返回列的默认值,返回NULL。数据入库、更新、执行Compaction、Clustering都会导致部分或全部数据重写。 列的默认值设置要与列的类型一致,如不一致会进行类型强转,导致默认值精度丢失或者默认值为NULL。 历史数据的默认值与列第一次设置的默认值一致,多次修改列的默认值不会影响历史数据的查询结果。 设置默认值后rollback不能回滚默认值配置。 Spark SQL暂不支持查看列默认值信息,可以通过执行show create table SQL查看。 不支持默认缺省列的写入方式,写入时必须指定列名。
  • 示例 SQL语法具体参考 DLI Hudi SQL语法参考章节。 示例: 建表指定列默认值 create table if not exists h3(id bigint,name string,price double default 12.34) using hudioptions (primaryKey = 'id',type = 'mor',preCombineField = 'name'); 添加列指定列默认值 alter table h3 add columns(col1 string default 'col1_value');alter table h3 add columns(col2 string default 'col2_value', col3 int default 1); 修改列默认值 alter table h3 alter column price set default 14.56; 插入数据使用列默认值,需要指定写入的列名,和插入的数据一一对应 insert into h3(id, name) values(1, 'aaa');insert into h3(id, name, price) select 2, 'bbb', 12.5;