当前位置: 首页 > news >正文

买了个服务器 怎么做网站/网课免费平台

买了个服务器 怎么做网站,网课免费平台,广东省广州市白云区钟落潭镇,小说网站80电子书怎么做–odps sql –– –author:宋文理 –create time:2023-03-08 15:23:52 –– – 差异分为三块 – 1.运算符的差异 – 2.类型转换的差异 – 3.内建函数的差异 – 以下是运算符的差异: – BITAND(&) – 当输入参数是BIGINT类型的时候&…

–odps sql

–author:宋文理
–create time:2023-03-08 15:23:52

– 差异分为三块
– 1.运算符的差异
– 2.类型转换的差异
– 3.内建函数的差异

– 以下是运算符的差异:

– BITAND(&)
– 当输入参数是BIGINT类型的时候,如果BITAND的计算结果是LONG_MIN(-263),在普通模式下会返回NULL,
– 而Hive模式仍然是LONG_MIN。
select cast((3&5)as string); --返回1
– 示例如下
– 普通模式
set odps.sql.hive.compatible=false;
select cast((a & b) as string) from
values(-9223372036854775807L, -9223372036854775792L) t(a, b);
–返回NULL

– Hive兼容模式
set odps.sql.hive.compatible=true;
select cast((a & b) as string) from
values(-9223372036854775807L, -9223372036854775792L) t(a, b);

–返回-9223372036854775808
Hive
select cast((-9223372036854775807L & -9223372036854775792L) as string);
–返回-9223372036854775808
select cast((-9 & -2) as string); --返回-10
select cast((-2 & -3)as string); --返回-4
select cast((1 & 2)as string); --返回0
select cast((-2 & -3)as string); --返回-4
select cast((-2 & -3)as string); --返回-4
select cast(-2 as string);

INSERT overwrite TABLE ods_std_wxthct_tbv_trandetailcount_di partition (ds = ‘bdp.system.bizdate′)selectDEPTID,TRANID,ARTIID,DEALID,STKLOCID,TRANCOUNTID,PROVID,COUNTDATE,TRANDATE,CLDATE,CLOPTRID,CLCHECKOPTRIDfromodsstgwxthcttbvtrandetailcountdiawherecast(a.DEPTIDasbigint)>0andcast(a.ARTIIDasbigint)>0anda.ds=′{bdp.system.bizdate}') select DEPTID ,TRANID ,ARTIID ,DEALID ,STKLOCID ,TRANCOUNTID ,PROVID ,COUNTDATE ,TRANDATE ,CLDATE ,CLOPTRID ,CLCHECKOPTRID from ods_stg_wxthct_tbv_trandetailcount_di a where cast(a.DEPTID as bigint)>0 and cast(a.ARTIID as bigint)>0 and a.ds = 'bdp.system.bizdate)selectDEPTID,TRANID,ARTIID,DEALID,STKLOCID,TRANCOUNTID,PROVID,COUNTDATE,TRANDATE,CLDATE,CLOPTRID,CLCHECKOPTRIDfromodsstgwxthcttbvtrandetailcountdiawherecast(a.DEPTIDasbigint)>0andcast(a.ARTIIDasbigint)>0anda.ds={bdp.system.bizdate}’;

– BITOR(|)
– 当输入参数是BIGINT类型的时候,如果BITOR的计算结果是LONG_MIN(-263),在普通模式下会返回NULL,
– 而Hive模式仍然是LONG_MIN。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select cast((a | b) as string) from
values(java.lang.Long.MIN_VALUE, 0L) t(a, b);
–返回NULL

select cast((a | b) as string) from
values(8,1) t(a, b); --返回9
select cast((a | b) as string) from
values(8,6) t(a, b); --返回14

select cast((a | b) as string) from
values(8,-1) t(a, b); --返回-1

– Hive兼容模式
set odps.sql.hive.compatible=true;
select cast((a | b) as string) from
values(java.lang.Long.MIN_VALUE, 0L) t(a, b);
–返回-9223372036854775808
– Hive
select cast(-9223372036854775808 as bigint) | 0;
– 返回-9223372036854775808
– BITXOR(^)
– 当输入参数是BIGINT类型的时候,如果BITXOR的计算结果是LONG_MIN(-263),在普通模式下会返回NULL,
– 而Hive模式仍然是LONG_MIN。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select cast((a ^ b) as string) from
values(java.lang.Long.MIN_VALUE, 0L) t(a, b);
–返回NULL

– Hive兼容模式
set odps.sql.hive.compatible=true;
select cast((a ^ b) as string) from
values(java.lang.Long.MIN_VALUE, 0L) t(a, b);
–返回-9223372036854775808

– Hive
select cast(-9223372036854775808 as bigint) ^ 0;
–返回-9223372036854775808
– EQ(=)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,就认为它们相等;
– 而Hive兼容模式对相等的检查更加严格。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select a = 1.0 from values (1.000000000000001) t(a);
select 1.0=1.0000000000000000000000001;
– 结果是true,因为这两个数足够接近

– Hive兼容模式
set odps.sql.hive.compatible=true;
select a = 1.0 from values (1.000000000000001) t(a);
– 结果是false

– Hive
select 1.0 = 1.000000000000001 ;
– 结果是false
– NEQ(!=)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,就认为它们相等;
– 而Hive兼容模式对相等的检查更加严格。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select a != 1.0 from values (1.000000000000001) t(a);
– 结果是false,因为这两个数足够接近

– Hive兼容模式
set odps.sql.hive.compatible=true;
select a != 1.0 from values (1.000000000000001) t(a);
– 结果是true
– Hive
select 1.000000000000001 != 1.0 ;
– 结果是true
– GE(>=)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,
– 就认为它们相等这会导致即使第1个输入参数小于第2个参数,但是只要他们足够接近,GE的返回结果也可能是true。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select 1.0 >= a from values (1.000000000000001) t(a);
– 结果是true,因为这两个数足够接近,认为它们相等

– Hive兼容模式
set odps.sql.hive.compatible=true;
select 1.0 >= a from values (1.000000000000001) t(a);
– 结果是false
– Hive
select 1.0 >= 1.000000000000001;
– 结果是false

– GT(>)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,
– 就认为它们相等这会导致即使第1个输入参数大于第2个参数,但是只要他们足够接近,GT的返回结果也可能是false。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select a > 1.0 from values (1.000000000000001) t(a);
– 结果是false,因为这两个数足够接近,认为它们相等

– Hive兼容模式
set odps.sql.hive.compatible=true;
select a > 1.0 from values (1.000000000000001) t(a);
– 结果是true
– Hive
select 1.000000000000001>1.0;
– 结果是true

– LE(<=)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,
– 就认为它们相等这会导致即使第1个输入参数大于第2个参数,但是只要他们足够接近,LE的返回结果也可能是true。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select a <= 1.0 from values (1.000000000000001) t(a);
– 结果是true,因为这两个数足够接近,认为它们相等

– Hive兼容模式
set odps.sql.hive.compatible=true;
select a <= 1.0 from values (1.000000000000001) t(a);
– 结果是false
– Hive
select 1.000000000000001 <= 1.0 ;
– 结果是false
– LT(<)
– 当输入参数是DOUBLE类型的时候,普通模式下对相等的检查更加宽松,如果两个输入参数足够接近,
– 就认为它们相等这会导致即使第1个输入参数小于第2个参数,但是只要他们足够接近,LE的返回结果也可能是false。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select 1.0 < a from values (1.000000000000001) t(a);
– 结果是false,因为这两个数足够接近,认为它们相等

– Hive兼容模式
set odps.sql.hive.compatible=true;
select 1.0 < a from values (1.000000000000001) t(a);
– 结果是true
– Hive
select 1.0 < 1.000000000000001;
– 结果是true
– PLUS(+)
– 计算结果超范围时的处理不同,在普通模式时可能会报错,在Hive兼容模式计算结果溢出不会报错,
– 同时为两种模式开启严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select (100L + a) from values (9223372036854775807L) t(a);
– 报错,计算结果溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select (100L + a) from values (9223372036854775807L) t(a);
– 计算结果溢出,但是不会报错
– Hive
select (100L + 9223372036854775807L) ;
– 返回-9223372036854775709,计算结果溢出,但是不会报错

– MINUS(-)
– 计算结果超范围时的处理不同,在普通模式时可能会报错,在Hive兼容模式计算结果溢出不会报错,
– 同时为两种模式开启严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select (-100L - a) from values (9223372036854775807L) t(a);
– 报错,计算结果溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select (-100L - a) from values (9223372036854775807L) t(a);
– 计算结果溢出,但是不会报错
– Hive
select (-100L - 9223372036854775807L) ;
– 返回 9223372036854775709
– MPL(*)
– 计算结果超范围时的处理不同,在普通模式时可能会报错,在Hive兼容模式计算结果溢出不会报错,
– 同时为两种模式开启严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select (a * 9223372036854775807L) from values (9223372036854775807L) t(a);
– 报错,计算结果溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select (a * 9223372036854775807L) from values (9223372036854775807L) t(a);
– 计算结果溢出,但是不会报错
– Hive
select (9223372036854775807L * 9223372036854775807L) ;
– 返回1;计算结果溢出,但是不会报错
– – DIV(/)
– 计算结果超范围时的处理不同,在普通模式时可能会报错,在Hive兼容模式计算结果溢出不会报错,
– 同时为两种模式开启严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;

select 1 / a from values (0L) t(a);
– strict模式下报错

select 1.0 / a from values (0.0) t(a);
– strict模式下报错

select 1BD / a from values (0BD) t(a);
– strict模式下报错

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;

select 1 / a from values (0L) t(a);
– 返回NULL

select 1.0 / a from values (0.0) t(a);
– 返回NULL

select 1BD / a from values (0BD) t(a);
– 返回NULL
Hive
select 1 / 0L;
– 返回NULL

select 1.0 / 0.0;
– 返回NULL

select 1BD / 0BD;
– 返回NULL

– 以下是类型转换的差异

– TOBIGINT
– 当输入参数不合法时,普通模式下可能会报错,Hive兼容模式返回NULL,
– 同时为两种模式开启即严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select cast(a as bigint) from values (‘hello’) t(a);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select cast(a as bigint) from values (‘hello’) t(a);
– 返回NULL
– Hive
select cast(‘hello’ as bigint) ;
– 返回NULL
– TODECIMAL
– 当输入参数不合法时,普通模式下可能会报错,Hive兼容模式返回NULL,
– 同时为两种模式开启即严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select cast(a as decimal) from values (‘hello’) t(a);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.sql.udf.strict.mode=true;
select cast(a as decimal) from values (‘hello’) t(a);
– 返回NULL
– Hive
select cast(‘hello’ as decimal) ;
– 返回NULL
– TODOUBLE
– 当输入参数不合法时,普通模式下可能会报错,Hive兼容模式返回NULL,
– 同时为两种模式开启即严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select cast(a as double) from values (‘hello’) t(a);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select cast(a as double) from values (‘hello’) t(a);
– 返回NULL
– Hive
select cast(‘hello’ as double) ;
– 返回NULL
– TOSMALLINT
– 当输入参数不合法或超出范围时,普通模式下可能会报错,Hive兼容模式返回NULL,
– 同时为两种模式开启即严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
set odps.sql.type.system.odps2=true;

select cast(a as smallint) from values (‘hello’) t(a);
– 报错,输入参数不合法

select cast(a as smallint) from values (9223372036854775807L) t(a);
– 报错,数据溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
set odps.sql.type.system.odps2=true;

select cast(a as smallint) from values (‘hello’) t(a);
– 返回NULL

select cast(a as smallint) from values (9223372036854775807L) t(a);
– 数据溢出但是不报错

Hive
select cast(‘hello’ as smallint);
– 返回NULL

select cast(9223372036854775807L as smallint);
– 返回-1,数据溢出但是不报错

– TOTINYINT
– 当输入参数不合法或超出范围时,普通模式下可能会报错,Hive兼容模式返回NULL,
– 同时为两种模式开启即严格模式(odps.function.strictmode=true)。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
set odps.sql.type.system.odps2=true;

select cast(a as tinyint) from values (‘hello’) t(a);
– 报错,输入参数不合法

select cast(a as tinyint) from values (9223372036854775807L) t(a);
– 报错,数据溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
set odps.sql.type.system.odps2=true;

select cast(a as tinyint) from values (‘hello’) t(a);
– 返回NULL

select cast(a as tinyint) from values (9223372036854775807L) t(a);
– 数据溢出但是不报错
– Hive
select cast(‘hello’ as tinyint) ;
– 返回NULL

select cast(9223372036854775807L as tinyint) ;
– 返回-1,数据溢出但是不报错

– 以下是内建函数的差异:

ACOS
– 取值超出范围[-1,1]时,普通模式和Hive模式的表现不同。普通模式返回NULL,并且可能会报错;而Hive模式返回NAN。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select acos(a) from values(1.5) t(a);
–返回NULL,并且有可能会报错

– Hive兼容模式
set odps.sql.hive.compatible=true;
select acos(a) from values(1.5) t(a);
–返回NAN
– Hive
select acos(1.5);
–返回NAN

ASCII
– 普通模式ASCII函数返回值类型为BIGINT,Hive兼容模式ASCII函数返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select ascii(‘abcde’);
–显示返回值类型是bigint

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select ascii(‘abcde’);
–显示返回值类型是int
– Hive
explain select ascii(‘abcde’);
–显示返回值类型是int

ASIN
– 取值超出范围[-1,1]时,普通模式和Hive模式的表现不同。普通模式返回NULL,并且可能会报错;而Hive模式返回NAN。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select asin(a) from values(1.5) t(a);
–返回NULL,并且有可能会报错

– Hive兼容模式
set odps.sql.hive.compatible=true;
select asin(a) from values(1.5) t(a);
–返回NAN
– Hive
select asin(a) from values(1.5) t(a);
–返回NAN

CEIL
– 普通模式CEIL函数输入参数类型是DECIMAL的时候,返回值类型为BIGINT;
– Hive兼容模式CEIL函数输入参数类型是DECIMAL的时候,返回值类型为DECIMAL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select ceil(1.2BD);
–显示返回值类型是bigint

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select ceil(1.2BD);
–显示返回值类型是decimal
– Hive
explain select ceil(1.2BD);
–显示返回值类型是decimal(2,0)
– CHR
– 输入参数取值超出范围,普通模式与Hive模式的返回结果不同。
– 普通模式会报错,而Hive兼容模式返回空字符串。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select chr(-100L);
–报错,输入参数不合法
– Hive兼容模式
set odps.sql.hive.compatible=true;
select chr(-100L);
–返回空字符串
– Hive
select chr(-100L);
–返回空字符串

CONCAT_WS
– 输入参数中有NULL,普通模式与Hive模式的返回结果不同。普通模式返回NULL,而Hive兼容模式会忽略输入参数中的NULL。
– 输入参数中有空数组,如下所示。普通模式下会返回NULL,而Hive兼容模式下会返回空字符串。
– string concat_ws(string , array arr)
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select concat_ws(‘,’, ‘a’, null, ‘b’);
– 返回NULL
select concat_ws(‘,’, array());
– 返回NULL

– Hive兼容模式
set odps.sql.hive.compatible=true;
select concat_ws(‘,’, ‘a’, null, ‘b’);
– 返回如下值:
±----+
| _c0 |
±----+
| a,b |
±----+

select concat_ws(‘,’, array());
–返回空字符串
– Hive
select concat_ws(‘,’, ‘a’, null, ‘b’);
– 返回如下值:
±----+
| _c0 |
±----+
| a,b |
±----+

select concat_ws(‘,’, array());
–返回空字符串
COT
– 当输入参数为0(或者是其他导致计算结果为无穷大的数)时,普通模式下会返回NULL,
– 并且可能会报错;而Hive兼容模式返回INF。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select cot(a) from values(0.0) t(a);
–返回NULL,并且有可能会报错

– Hive兼容模式
set odps.sql.hive.compatible=true;
select cot(a) from values(0.0) t(a);
–返回INF
– Hive不支持此函数。

EXP
– 当使用EXP函数计算的结果超出输出类型的值域范围时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,而Hive兼容模式返回INF。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select exp(a) from values (1000L) t(a);
– 报错 Data overflow

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select exp(a) from values (1000L) t(a);
– 返回INF
– Hive
select exp(1000L) ;
– 返回INF

FIND_IN_SET
– 普通模式FIND_IN_SET函数返回值类型为BIGINT,Hive兼容模式FIND_IN_SET函数返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select find_in_set(‘ab’, ‘abc,hello,ab,c’);
–显示返回值类型是bigint

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select find_in_set(‘ab’, ‘abc,hello,ab,c’);
–显示返回值类型是int
– Hive
explain select find_in_set(‘ab’, ‘abc,hello,ab,c’);
–显示返回值类型是int

FLOOR
– 普通模式FLOOR函数输入参数类型是DECIMAL的时候,返回值类型为BIGINT;
– Hive兼容模式FLOOR函数输入参数类型是DECIMAL的时候,返回值类型为DECIMAL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select floor(1.2BD);
–显示返回值类型是bigint

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select floor(1.2BD);
–显示返回值类型是decimal
– Hive
explain select floor(1.2BD);
–显示返回值类型是decimal(2,0)

FROM_UNIXTIME
– 普通模式支持如下形式的function signature,不支持指定时间的格式。
– DATETIME FROM_UNIXTIME(BIGINT time)
– Hive兼容模式支持如下两种形式的function signature,这两种function sigature都返回STRING类型。
– 第1个signature允许指定输出的时间格式,输出的时间格式受SimpleDateFormat的控制,详情请参见SimpleDateFormat。
– STRING FROM_UNIXTIME(BIGINT time, STRING format)

– STRING FROM_UNIXTIME(BIGINT time)
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;

select from_unixtime(12345678, ‘yyyy-MM-dd HH:mm:ss’);
–报错,from_unixtime只允许1个输入参数,不允许2个输入参数

select weekday(from_unixtime(0));
– 执行成功,from_unixtime返回datetime类型,weekday接受datetime类型的输入参数

– Hive兼容模式
set odps.sql.hive.compatible=true;

select from_unixtime(12345678, ‘yyyy-MM-dd HH:mm:ss’);
–返回结果如下:
±----+
| _c0 |
±----+
| 1970-05-24 05:21:18 |
±----+

select weekday(from_unixtime(0));
– 执行失败,因为from_unixtime返回string类型,而weekday不接受string类型输入参数。
Hive
select from_unixtime(12345678, ‘yyyy-MM-dd HH:mm:ss’);
–返回结果如下:
±----+
| _c0 |
±----+
| 1970-05-24 05:21:18 |
±----+

select weekday(from_unixtime(0));
– hive不支持weekday函数

FROM_UTC_TIMESTAMP
– 当输入参数超范围时,且同时为两种模式开启严格模式(odps.function.strictmode=true),
– 普通模式返回可能会报错,Hive兼容模式返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select from_utc_timestamp(1501557840000000, ‘UTC’);
– 报错,输入参数超出范围

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select from_utc_timestamp(1501557840000000, ‘UTC’);
– 返回NULL
– Hive
select from_utc_timestamp(1501557840000000, ‘UTC’);
– 报错,FAILED: IllegalArgumentException Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

– HASH
– 普通模式下HASH函数返回BIGINT类型,Hive兼容模式HASH函数下返回INT类型。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select hash(0, 2, 4);
–返回值类型是bigint

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select hash(0, 2, 4);
–返回值类型是int
– Hive
explain select hash(0, 2, 4);
–返回值类型是int

IS_ENCODING
– 判断输入的字符串是否可以从指定的一个字符集from_encoding转为另一个字符集to_encoding。也可以用于判断输入是否为乱码,
– 通常您可以将from_encoding设为UTF-8,to_encoding设为GBK。
– 普通模式下,输入字符串必须要能够用from_encoding解码成功,并能按照to_encoding编码,结果才能返回false。
– Hive兼容模式下,输入字符串必须是UTF-8编码,并且需要能同时被from_encoding和to_encoding编码,结果才返回false。
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select is_encoding(‘中文’, ‘gbk’, ‘utf-8’);
– 返回false,'中文’是utf-8编码,不能用gbk解码,所以返回false

– Hive兼容模式
set odps.sql.hive.compatible=true;
select is_encoding(‘中文’, ‘gbk’, ‘utf-8’);
– 返回true,'中文’既可以转换成gbk编码,又可以转换成utf-8编码
– Hive不支持此语法。

INSTR
– 输入参数为两个字符串时,普通模式下返回值类型为BIGINT,Hive兼容模式下返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select instr(‘Tech on the net’, ‘e’);
–返回bigint类型

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select instr(‘Tech on the net’, ‘e’);
–返回int类型
– Hive
explain select instr(‘Tech on the net’, ‘e’);
–返回的是int类型

LENGTH
– 普通模式下使用LENGTH函数返回值类型为BIGINT,Hive兼容模式下使用LENGTH函数返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select length(‘hello’);
–返回bigint类型
– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select length(‘hello’);
–返回int类型
– Hive
explain select length(‘hello’);
–返回int类型

LENGTHB
– 普通模式下使用LENGTHB函数返回值类型为BIGINT,Hive兼容模式下使用LENGTHB函数返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select lengthb(‘hello’);
–返回bigint类型

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select lengthb(‘hello’);
–返回int类型
– Hive不支持该函数。

LN
– 当输入参数超范围时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select ln(a) from values(-1.0) t(a);
– 报错,输入参数超出范围

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select ln(a) from values(-1.0) t(a);
– 返回NULL
– Hive
select ln(-1.0) ;
– 返回NULL

LOCATE
– 普通模式下使用LOCATE函数返回值类型为BIGINT,Hive兼容模式下使用LOCATE函数返回值类型为INT。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select locate(‘ab’, ‘abchelloabc’);
–返回bigint类型

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select locate(‘ab’, ‘abchelloabc’);
–返回int类型
– Hive
explain select locate(‘ab’, ‘abchelloabc’);
–返回的int类型
LOG
– 当输入参数超范围时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set oodps.function.strictmode=true;
select log(a, 10) from values(-3.0) t(a);
– 报错,输入参数超出范围

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select log(a, 10) from values(-3.0) t(a);
– 返回NULL
– Hive
select log(-3.0, 10) ;
– 返回NULL

MOD
– 当输入参数不合法时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select 1L % a from values(0L) t(a);
– 报错,数据溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select 1L % a from values(0L) t(a);
– 返回NULL
– Hive
select 1L % 0L;
– 返回NULL

PMOD
– 当输入参数不合法时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select pmod(1L, a) from values(0L) t(a);
– 报错,数据溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select pmod(1L, a) from values(0L) t(a);
– 返回NULL

– Hive
select pmod(1L, 0L) ;
– 返回NULL
– POW
– 当计算结果溢出时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回INF。

– 示例如下。
– 普通模式
– set odps.sql.hive.compatible=false;
set odps.sql.udf.strict.mode=true;
select pow(a, 1000L) from values(1000L) t(a);
– 报错,数据溢出

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.sql.udf.strict.mode=true;
select pow(a, 1000L) from values(1000L) t(a);
– 返回INF
– Hive
select pow(1000L, 1000L) ;
– 返回INF

REPEAT
– 当REPEAT的个数小于零时,在普通模式下会报错,在Hive兼容模式下会返回空字符串。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select repeat(‘hi’, n) from values (-1L) t(n);
–报错,输入参数超出范围

– Hive兼容模式
set odps.sql.hive.compatible=true;
select repeat(‘hi’, n) from values (-1L) t(n);
– --返回空字符串
– Hive不支持该函数。

REVERSE
– 当输入参数中包含中文字符时,在普通模式下按照字节来进行reverse操作,返回值可能有乱码;
– 在Hive兼容模式下按照utf8来处理,不会出现乱码。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select reverse(a) from values (‘hello中国world’) t(a);
–返回结果中有乱码

– Hive兼容模式
set odps.sql.hive.compatible=true;
select reverse(a) from values (‘hello中国world’) t(a);
–返回结果中没有乱码
– Hive
select reverse(‘hello中国world’) ;
–返回dlrow国中olleh

ROUND
– 在普通模式下使用ROUND函数,本质上只支持DOUBLE或DECIMAL两种输入数据类型,其他数据类型会转换为这两种类型;
– 在Hive兼容模式下,支持:DOUBLE、DECIMAL、BIGINT、INT、SMALLINT、TINYINT等数据类型。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select round(a) from values(2L) t(a);
–从执行计划看,输入数据从bigint类型转换成double类型,计算结果是double类型

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select round(a) from values(2L) t(a);
–从执行计划看,输入bigint类型,输出是bigint类型
– Hive
explain select round(2L) ;
–从执行计划看,输入bigint类型,输出是bigint类型

SIGN
– 输入参数数据类型为DECIMAL时,普通模式下返回BIGINT类型,Hive兼容模式下返回INT类型。
– 输入参数数据类型为DOUBLE时,普通模式下如果输入参数的绝对值和0非常接近,则返回值为0。
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;

explain select sign(a) from values(2BD) t(a);
–从执行计划看,返回bigint类型

select sign(a) from values (0.000000000000009) t(a);
–返回值是0.0,因为输入参数和0非常紧急
– Hive兼容模式
set odps.sql.hive.compatible=true;

explain select sign(a) from values(2BD) t(a);
–从执行计划看,返回int类型

select sign(a) from values (0.000000000000009) t(a);
– 返回值是1.0
– Hive
explain select sign(2BD);
–从执行计划看,返回int类型

select sign(0.000000000000009) ;
–返回值是1

SIZE
– 普通模式下使用SIZE函数返回值类型为BIGINT,Hive兼容模式下使用SIZE函数返回值类型为INT。
– 输入参数为NULL时,普通模式下返回NULL,Hive兼容模式返回-1。
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
explain select size(array(‘a’,‘b’));
–从执行计划看,返回bigint类型

select size(a) from values (cast(NULL as array)) t(a);
–返回结果是NULL

– Hive兼容模式
set odps.sql.hive.compatible=true;
explain select size(array(‘a’,‘b’));
–从执行计划看,返回int类型

select size(a) from values (cast(NULL as array)) t(a);
–返回结果是-1
– Hive
explain select size(array(‘a’,‘b’));
–从执行计划看,返回int类型

SPLIT
– 当输入参数的分隔符为空字符串时,普通模式下返回空数组,Hive兼容模式下按照UTF-8格式分割输入字符串。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
select split(a, ‘’) from values (‘hello中国world’) t(a);
–返回空array

– Hive兼容模式
set odps.sql.hive.compatible=true;
select split(a, ‘’) from values (‘hello中国world’) t(a);
–返回[, h, e, l, l, o, 中, 国, w, o, r, l, d, ]
– Hive
select split(‘hello中国world’, ‘’) ;
–返回[“h”,“e”,“l”,“l”,“o”,“中”,“国”,“w”,“o”,“r”,“l”,“d”,“”]
SQRT
– 当输入参数小于0时,同时为两种模式开启严格模式(odps.function.strictmode=true),
– 在普通模式下可能会报错,在Hive兼容模式下会返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select sqrt(a) from values (-100.0) t(a);
– 报错,输入参数小于0

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select sqrt(a) from values (-100.0) t(a);
– 返回NULL
Hive
select sqrt(-100.0);
– 返回NULL

SUBSTR
– 当输入参数中的起始位置为0时,普通模式下返回空字符串,Hive兼容模式下与起始位置为1时相同。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select substr(a, 0) from values (‘hello, world’) t(a);
– 返回空字符串

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select substr(a, 0) from values (‘hello, world’) t(a);
– 返回如下结果:
±----+
| _c0 |
±----+
| hello, world |
±----+
Hive
select substr(‘hello, world’, 0);
– 返回如下结果:
±----+
| _c0 |
±----+
| hello, world |
±----+

UNIX_TIMESTAMP
– 普通模式下不支持两个输入参数类型为STRING,会报错;Hive兼容模式下支持两个STRING类型的输入参数,
– 如下所示,返回值为BIGINT类型,通过format指定时间格式,时间格式请参见SimpleDateFormat。
– bigint FROM_UNIXTIME(string timeString, String format)
– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;
select unix_timestamp(a) from values (‘99999-01-01 00:00:00’);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;
select unix_timestamp(a) from values (‘99999-01-01 00:00:00’);
– 返回NULL
– Hive
select unix_timestamp(‘2022/7/8’, ‘yyyy/mm/dd’);
–返回结果如下:
±-----------+
| _c0 |
±-----------+
| 1641571620 |
±-----------+
select unix_timestamp(‘99999-01-01 00:00:00’) ;
–返回:3093496416000
select unix_timestamp(‘99999-01-01 00:00:00’);
–返回:3093496416000

URL_DECODE
– 当输入参数不合法时,且同时为两种模式开启严格模式(odps.function.strictmode=true),
– 普通模式返回可能会报错,Hive兼容模式返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;

select url_decode(a) from values (‘%2’) t(a);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;

select url_decode(a) from values (‘%2’) t(a);
– 返回NULL

– Hive不支持该函数。
URL_ENCODE
– 当输入参数不合法或者转换失败时,且同时为两种模式开启严格模式(odps.function.strictmode=true),
– 普通模式返回可能会报错,Hive兼容模式返回NULL。

– 示例如下。
– 普通模式
set odps.sql.hive.compatible=false;
set odps.function.strictmode=true;

select url_encode(a, ‘ascii’) from values (‘示例’) t(a);
– 报错,输入参数不合法

– Hive兼容模式
set odps.sql.hive.compatible=true;
set odps.function.strictmode=true;

select url_encode(a, ‘ascii’) from values (‘示例’) t(a);
– 返回NULL
– Hive不支持该函数。

相关文章:

普通和hive兼容模式下sql的差异

–odps sql –– –author:宋文理 –create time:2023-03-08 15:23:52 –– – 差异分为三块 – 1.运算符的差异 – 2.类型转换的差异 – 3.内建函数的差异 – 以下是运算符的差异&#xff1a; – BITAND&#xff08;&&#xff09; – 当输入参数是BIGINT类型的时候&…...

github开源自己代码

接下来&#xff0c;我们需要先下载Git&#xff0c;的网址&#xff1a;https://git-scm.com/downloads&#xff0c;安装时如果没有特殊需求&#xff0c;一直下一步就可以了&#xff0c;安装完成之后&#xff0c;双击打开Git Bash 出现以下界面&#xff1a; 第一步&#xff1a;…...

数据库基础语法

sql&#xff08;Structured Query Language 结构化查询语言&#xff09; SQL语法 use DataTableName; 命令用于选择数据库。set names utf8; 命令用于设置使用的字符集。SELECT * FROM Websites; 读取数据表的信息。上面的表包含五条记录&#xff08;每一条对应一个网站信息&…...

【Java】期末复习知识点总结(4)

适合Java期末的复习~ &#xff08;Java期末复习知识点总结分为4篇&#xff0c;这里是最后一篇啦&#xff09;第一篇~https://blog.csdn.net/qq_53869058/article/details/129417537?spm1001.2014.3001.5501第二篇~https://blog.csdn.net/qq_53869058/article/details/1294751…...

IDEA好用插件:MybatisX快速生成接口实体类mapper.xml映射文件

目录 1、在Idea中找到下载插件&#xff0c;Install&#xff0c;重启Idea 2、一个测试java文件&#xff0c;里面有com包 3、在Idea中添加数据库 --------以Oracle数据库为例 4、快速生成entity-service-mapper方法 5、查看生成的代码 6、自动生成&#xff08;增删查改&#xff0…...

【JavaEE】初识线程

一、简述进程认识线程之前我们应该去学习一下“进程" 的概念&#xff0c;我们可以把一个运行起来的程序称之为进程&#xff0c;进程的调度&#xff0c;进程的管理是由我们的操作系统来管理的&#xff0c;创建一个进程&#xff0c;操作系统会为每一个进程创建一个 PCB&…...

智慧水务监控系统-智慧水务信息化平台建设

平台概述柳林智慧水务监控系统&#xff08;智慧水务信息化平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为…...

【Linux】进程优先级前后台理解

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;相关文章推荐&#xff1a;【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习&#xff08;Ⅰ&#xff09;浅谈Linux下的shell--BASH【Linux…...

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元) 目录 时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)效果一览基本描述模型描述程序设计参考资料效果一览...

python 模拟鼠标,键盘点击

信息爆炸 消息轰炸模拟鼠标和键盘敲击import time from pynput.keyboard import Controller as key_col from pynput.mouse import Button,Controller def keyboard_input(insertword):keyboardkey_col()keyboard.type(insertword)def mouth():mouseController()mouse.press(…...

【CSS】盒子边框 ③ ( 设置表格细线边框 | 合并相邻边框 border-collapse: collapse; )

文章目录一、设置表格细线边框1、表格示例2、合并相邻边框3、完整代码示例一、设置表格细线边框 1、表格示例 给定一个 HTML 结构中的表格 , 默认样式如下 : <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" />…...

TensorRT量化工具pytorch_quantization代码解析(一)

量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT &#xff0c;该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。 API 的核心是 TensorQuantizer 模块&#xff0c;它可以量化、伪量化或收集张量的…...

【Kubernetes】第二十七篇 - 布署前端项(下)

一&#xff0c;前言 上一篇&#xff0c;介绍了前端项目的部署&#xff1a;项目的创建和 jenkins 配置&#xff1b; 本篇&#xff0c;创建 Deployment、Service&#xff0c;完成前端项目的部署&#xff1b; 二&#xff0c;创建 Deployment 创建 Deployment 配置文件&#xff…...

【MFC】两个ListBox控件数据交互

一.控件ID名称 界面如图下所示&#xff1a; 候选数据列表的ID为&#xff1a; 已选数据列表的ID为&#xff1a; 二.数据添加 可以使用以下代码往框中添加数据&#xff1a; ((CListBox *)GetDlgItem(IDC_LIST_TO_CHO))->AddString("测试数据"); 显示效果如下&#…...

sklearn库学习--SelectKBest 、f_regression

目录 一、SelectKBest 介绍、代码使用 介绍&#xff1a; 代码使用&#xff1a; 二、评分函数 【1】f_regression&#xff1a; &#xff08;1&#xff09;介绍&#xff1a; &#xff08;2&#xff09;F值和相关系数 【2】除了f_regression函数&#xff0c;还有一些适用于…...

蓝桥杯刷题第十三天

第一题&#xff1a;特殊日期问题描述对于一个日期&#xff0c;我们可以计算出年份的各个数位上的数字之和&#xff0c;也可以分别计算月和日的各位数字之和。请问从 1900 年 11 月 1 日至 9999 年 12 月 31 日&#xff0c;总共有多少天&#xff0c;年份的数位数字之和等于月的数…...

CPU 和带宽之间的时空权衡

在 从一道面试题看 TCP 的吞吐极限 一文的开始&#xff0c;我提到在环形域上两个数字比较大小的前提是在同一个半圆内&#xff0c;进而得到滑动窗口最大值被限定在一个环形域的一半。 现在来看更为基本的问题。如果序列号只有 2bit&#xff0c;甚至仅有 1bit&#xff0c;保序传…...

ES+Redis+MySQL,这个高可用架构设计太顶了!

一、背景 会员系统是一种基础系统&#xff0c;跟公司所有业务线的下单主流程密切相关。如果会员系统出故障&#xff0c;会导致用户无法下单&#xff0c;影响范围是全公司所有业务线。所以&#xff0c;会员系统必须保证高性能、高可用&#xff0c;提供稳定、高效的基础服务。 …...

【Maven】Maven的常用命令

目录 一、Maven的常用命令 1、compile 编译命令 2、test 测试命令 3 、clean 清理命令 4、package 打包命令 5、 install 安装命令 6、Maven 指令的生命周期 二、maven 的概念模型 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一…...

python的循环结构

python中有for循环和while循环两种形式。 1. for 循环 可以用for循环来遍历不同类型的对象&#xff0c;如数组、列表、元组、字典、集合或字符串&#xff0c;并对每个元素执行一段代码。 1.1 数组的for循环 用for循环遍历一个数组&#xff0c;并打印出每个元素&#xff1a;…...

五种Python中字典的高级用法

1. 引言 Python中的字典是一种非常有用的数据结构&#xff0c;它允许大家存储键值对。通常来说&#xff0c;字典灵活、高效且易于使用&#xff0c;是Python中最常用的数据结构之一。字典通常被用于统计频率、映射值等任务&#xff0c;但在Python中使用字典也可以达到许多意想不…...

[蓝桥杯单片机]——八到十一届初赛决赛客观题

第八届初赛 一、填空题 采用外部12MHz晶振&#xff0c;经过系统12分频时定时器获得最大定时长度&#xff0c;此时定时器定时脉冲为1MHz&#xff0c;周期为1s&#xff0c;而定时器计时均为16位加法计数器&#xff0c;即计时长度为。 二、 选择题 ①带阻滤波器是指能通过大多数频…...

多线程(初阶)

文章目录一.初始线程(Thread)1.1.线程的概念1.2.线程的优势1.2.1.线程比进程更轻量1.2.2.并发编程1.3.线程和进程的区别二.Thread类方法2.1. java 中创建线程的方法2.1.1. 继承Thread,重写run2.1.2. 实现Ruuable接口2.1.3. 使用匿名内部类,继承Thread2.1.4.使用匿名内部类,实现…...

【Vue从入门到进阶】Node.js安装与配置

✅作者简介&#xff1a;CSDN一位小博主&#xff0c;正在学习前端&#xff0c;欢迎大家一起来交流学习&#x1f3c6; &#x1f4c3;个人主页&#xff1a;白月光777的CSDN博客 &#x1f525;系列专栏&#xff1a;Vue从入门到进阶 &#x1f4ac;个人格言&#xff1a;但行好事&…...

python 正则使用详解

python 正则使用详解什么是正则在 python 中使用正则一些正则的定义python 正则的方法match 从字符串开头匹配正则返回的结果分析&#xff08;重要&#xff09;fullmatch 严格匹配整个字符串search 任意位置开始匹配sub 替换匹配内容subn 以元组方式返回替换结果split 正则切割…...

一个深度学习项目需要什么

DataLoader1.数据预处理在将数据提供给模型之前&#xff0c;DataLoader需要对数据进行预处理。预处理可以包括数据增强、归一化、裁剪、缩放等操作。这些操作可以提高模型的性能和准确度。在处理点云数据时&#xff0c;可以通过最远点下采样到固定的点数。2.读取标签文件我 1 2…...

【Java进阶篇】—— 常用类和基础API

一、String类 1.1 String的特性 java.lang.String 类代表字符串&#xff0c;由final关键字修饰&#xff0c;在赋值后不能改变&#xff08;常量&#xff09;&#xff0c;不能继承String类String 对象的字符内容是存储在一个字符数组 value[]中的 我们来看一下String在JDK8中的…...

手敲Mybatis(六)-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…...

内含18禁~~关于自学\跳槽\转行做网络安全行业的一些建议

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。所以可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。…...

春分策划×运维老王主讲:CMDB数据运营精准化公开课启动报名啦!

『CMDB数据运营精准化』 公开直播课 要来了&#xff01; &#x1f446;扫描海报二维码&#xff0c;预约直播 CMDB似乎是运维中永恒的老话题。 提到CMDB很多人都是又爱又恨&#xff0c;爱的是它给我们提供了一个美好的未来&#xff0c;有了CMDB我们可以解决诸多运维中的难题。…...