注意: 由于MaxComputer里面没有主键

默认主键为

保单号+8位险种代码+责任起期
若无主键限制,就对所有的字段进行分组

所以每次join的时候,where条件需要加上 a.主键 =b.主键 进行筛选

下面是各个函数的API,有需要直接按照需求搜

0.1 日期函数汇总

MaxCompute SQL提供了常见的日期函数,您可以根据实际需要选择合适的日期函数,完成日期计算、日期转换。本文为您提供MaxCompute SQL支持的日期函数的命令格式、参数说明及示例,指导您使用日期函数完成开发。

函数 功能
DATEADD 按照指定的单位和幅度修改日期值。
DATE_ADD 按照指定的幅度增减天数。
DATEDIFF 计算两个日期的差值并按照指定的单位表示。
DATEPART 提取日期中符合指定时间单位的字段值。
DATETRUNC 提取日期按照指定时间单位截取后的值。
FROM_UNIXTIME 将数字型的UNIX值转换为日期值。
GETDATE 获取当前系统时间。
ISDATE 判断一个日期字符串能否根据指定的格式串转换为一个日期值。
LASTDAY 获取日期所在月的最后一天。
TO_DATE 将指定格式的字符串转换为日期值。
TO_CHAR 将日期按照指定格式转换为字符串。
UNIX_TIMESTAMP 将日期转换为整型的UNIX格式的日期值。
WEEKDAY 返回日期值是当前周的第几天。
WEEKOFYEAR 返回日期值位于当年的第几周。
ADD_MONTHS 计算日期值增加指定月数后的日期。
CURRENT_TIMESTAMP 返回当前TIMESTAMP类型的时间戳。
DAY 返回日期值的天。
DAYOFMONTH 返回日部分的值。
EXTRACT 获取日期TIMESTAMP中指定单位的部分。
FROM_UTC_TIMESTAMP 将一个UTC时区的时间戳转换为一个指定时区的时间戳。
HOUR 返回日期小时部分的值。
LAST_DAY 返回日期值所在月份的最后一天日期。
MINUTE 返回日期分钟部分的值。
MONTH 返回日期值所属月份。
MONTHS_BETWEEN 返回指定日期值间的月数。
NEXT_DAY 返回大于日期值且与指定周相匹配的第一个日期。
QUARTER 返回日期值所属季度。
SECOND 返回日期秒数部分的值。
YEAR 返回日期值的年。

0.2 窗口函数

您可以在MaxCompute SQL中使用窗口函数对指定开窗列的数据灵活地进行分析处理工作。本文为您提供MaxCompute SQL支持的窗口函数的命令格式、参数说明及示例,指导您使用窗口函数完成开发。

函数 功能
COUNT 计算计数值。
AVG 计算平均值。
MAX 计算最大值。
MIN 计算最小值。
MEDIAN 计算中位数。
STDDEV 计算总体标准差。
STDDEV_SAMP 计算样本标准差。
SUM 计算汇总值。
DENSE_RANK 计算连续排名。
RANK 计算跳跃排名。
LAG 按偏移量取当前行之前第几行的值。
LEAD 按偏移量取当前行之后第几行的值。
PERCENT_RANK 计算一组数据中某行的相对排名。
ROW_NUMBER 计算行号。
CLUSTER_SAMPLE 用于分组抽样。
CUME_DIST 计算累计分布。
NTILE 将分组数据按照顺序切片,并返回切片值。

0.3 聚合函数

聚合(Aggregate)函数的输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值,可以与MaxCompute SQL中的group by语句配合使用。本文为您提供MaxCompute SQL支持的聚合函数的命令格式、参数说明及示例,指导您使用聚合函数完成开发。

函数 功能
AVG 计算平均值。
COUNT 计算记录数。
COUNT_IF 计算指定表达式为True的记录数。
MAX 计算最大值。
MIN 计算最小值。
MEDIAN 计算中位数。
STDDEV 计算总体标准差。
STDDEV_SAMP 计算样本标准差。
SUM 计算汇总值。
WM_CONCAT 用指定的分隔符连接字符串。
ANY_VALUE 在指定范围内任选一个值返回。
APPROX_DISTINCT 返回输入的非重复值的近似数目。
ARG_MAX 返回指定列的最大值对应行的列值。
ARG_MIN 返回指定列的最小值对应行的列值。
COLLECT_LIST 将指定的列聚合为一个数组。
COLLECT_SET 将指定的列聚合为一个无重复元素的数组。
COVAR_POP 计算指定两个数值列的总体协方差。
COVAR_SAMP 计算指定两个数值列的样本协方差。
NUMERIC_HISTOGRAM 统计指定列的近似直方图。
PERCENTILE 计算精确百分位数,适用于小数据量。
PERCENTILE_APPROX 计算近似百分位数,适用于大数据量。
VARIANCE/VAR_POP 计算指定数值列的方差。
VAR_SAMP 计算指定数值列的样本方差。

0.4 字符串函数

您可以在MaxCompute SQL中使用字符串函数对指定字符串进行灵活处理。本文为您提供MaxCompute SQL支持的字符串函数的命令格式、参数说明及示例,指导您使用字符串函数完成开发。

函数 功能
ASCII 返回字符串的第一个字符的ASCII码。
BASE64 将二进制表示值转换为BASE64编码格式字符串。
CHAR_MATCHCOUNT 计算A字符串出现在B字符串中的字符个数。
CHR 将指定ASCII码转换成字符。
CONCAT 将字符串连接在一起。
FROM_JSON 根据给定的JSON字符串和输出格式信息,返回ARRAY、MAP或STRUCT类型。
GET_JSON_OBJECT 在一个标准JSON字符串中,按照指定方式抽取指定的字符串。
INSTR 计算A字符串在B字符串中的位置。
IS_ENCODING 判断字符串是否可以从指定的A字符集转换为B字符集。
KEYVALUE 将字符串拆分为Key-Value对,并将Key-Value对分开,返回Key对应的Value。
LENGTH 计算字符串的长度。
LENGTHB 计算字符串以字节为单位的长度。
MD5 计算字符串的MD5值。
PARSE_URL 对URL进行解析返回指定信息。
REGEXP_COUNT 计算字符串从指定位置开始,匹配指定规则的子串数。
REGEXP_EXTRACT 将字符串按照指定规则拆分为组后,返回指定组的字符串。
REGEXP_INSTR 返回字符串从指定位置开始,与指定规则匹配指定次数的子串的起始或结束位置。
REGEXP_REPLACE 将字符串中,与指定规则在指定次数匹配的子串替换为另一字符串。
REGEXP_SUBSTR 返回字符串中,从指定位置开始,与指定规则匹配指定次数的子串。
SPLIT_PART 按照分隔符拆分字符串,返回指定部分的子串。
SUBSTR 返回STRING类型字符串从指定位置开始,指定长度的子串。
SUBSTRING 返回STRING或BINARY类型字符串从指定位置开始,指定长度的子串。
TO_CHAR 将BOOLEAN、BIGINT、DECIMAL或DOUBLE类型值转为对应的STRING类型表示。
TO_JSON 将指定的复杂类型输出为JSON字符串。
TOLOWER 将字符串中的英文字符转换为小写形式。
TOUPPER 将字符串中的英文字符转换为大写形式。
TRIM 去除字符串的左右空格。
LTRIM 去除字符串的左边空格。
RTRIM 去除字符串的右边空格。
REPEAT 返回将字符串重复指定次数后的结果。
REVERSE 返回倒序字符串。
UNBASE64 将BASE64编码格式字符串转换为二进制表示值。
CONCAT_WS 将参数中的所有字符串按照指定的分隔符连接在一起。
JSON_TUPLE 在一个标准的JSON字符串中,按照输入的一组键抽取各个键指定的字符串。
LPAD 将字符串向左补足到指定位数。
RPAD 将字符串向右补足到指定位数。
REPLACE 将字符串中与指定字符串匹配的子串替换为另一字符串。
SOUNDEX 将普通字符串替换为SOUNDEX字符串。
SUBSTRING_INDEX 截取字符串指定分隔符前的字符串。
TRANSLATE 将A出现在B中的字符串替换为C字符串。
URL_ENCODE 将字符串编码为application/x-www-form-urlencoded MIME格式。
URL_DECODE 将字符串从application/x-www-form-urlencoded MIME格式转为常规字符。

0.2 分析函数汇总

0.2.1 分析函数语法 (其实用个函数,既做了加工又排序或者分组后返回了整体数据)

function_name(<argument>,<argument>...) over(<partition_Clause><order by_Clause><windowing_Clause>);

function_name():函数名称

argument:参数

over( ):开窗函数

partition_Clause:分区子句,数据记录集分组,partition by... // 其实就是group up

order by_Clause:排序子句,数据记录集排序,order by...

windowing_Clause:开窗子句,定义分析函数在操作行的集合,三种开窗方式:rows、range、Specifying // 目前未涉及到

0.2.2 分析函数汇总

  1. count() over() :统计分区中各组的行数,partition by 可选,order by 可选

    select ename,esex,eage,count(*) over() from emp; --总计数
    select ename,esex,eage,count(*) over(order by eage) from emp; --递加计数
    select ename,esex,eage,count(*) over(partition by esex) from emp; --分组计数
    select ename,esex,eage,count(*) over(partition by esex order by eage) from emp;--分组递加计数
  2. sum() over() :统计分区中记录的总和,partition by 可选,order by 可选

    select ename,esex,eage,sum(salary) over() from emp; --总累计求和
    select ename,esex,eage,sum(salary) over(order by eage) from emp; --递加累计求和
    select ename,esex,eage,sum(salary) over(partition by esex) from emp; --分组累计求和
    select ename,esex,eage,sum(salary) over(partition by esex order by eage) from emp; --分组递加累计求和
  3. avg() over() :统计分区中记录的平均值,partition by 可选,order by 可选

    select ename,esex,eage,avg(salary) over() from emp; --总平均值
    select ename,esex,eage,avg(salary) over(order by eage) from emp; --递加求平均值
    select ename,esex,eage,avg(salary) over(partition by esex) from emp; --分组求平均值
    select ename,esex,eage,avg(salary) over(partition by esex order by eage) from emp; --分组递加求平均值
  4. min() over() :统计分区中记录的最小值,partition by 可选,order by 可选

    select ename,esex,eage,salary,min(salary) over() from emp; --求总最小值
    select ename,esex,eage,salary,min(salary) over(order by eage) from emp; --递加求最小值
    select ename,esex,eage,salary,min(salary) over(partition by esex) from emp; --分组求最小值
    select ename,esex,eage,salary,min(salary) over(partition by esex order by eage) from emp; --分组递加求最小值

    max() over() :统计分区中记录的最大值,partition by 可选,order by 可选

    select ename,esex,eage,salary,max(salary) over() from emp; --求总最大值
    select ename,esex,eage,salary,max(salary) over(order by eage) from emp; --递加求最大值
    select ename,esex,eage,salary,max(salary) over(partition by esex) from emp; --分组求最大值
    select ename,esex,eage,salary,max(salary) over(partition by esex order by eage) from emp; --分组递加求最大值
  5. rank() over() :跳跃排序,partition by 可选,order by 必选

    select ename,eage,rank() over(partition by job order by eage) from emp;
    select ename,eage,rank() over(order by eage) from emp;
  6. dense_rank() :连续排序,partition by 可选,order by 必选

    select ename,eage,dense_rank() over(partition by job order by eage) from emp;
    select ename,eage,dense_rank() over(order by eage) from emp;
  7. row_number() over() :排序,无重复值,partition by 可选,order by 必选

    select ename,eage,row_number() over(partition by job order by eage) from emp;
    select ename,eage,row_number() over(order by eage) from emp;
  8. ntile(n) over() :每组平均分 partition by 可选,order by 必选

    n表示将分区内记录平均分成n份,多出的按照顺序依次分给前面的组

    select ename,salary,ntile(3) over(order by salary desc) from emp;
    select ename,salary,ntile(3) over(partition by job order by salary desc) from emp;
  9. first_value() over() :取出分区中第一条记录的字段值,partition by 可选,order by 可选

    select ename,first_value(salary) over() from emp;
    select ename,first_value(salary) over(order by salary desc) from emp;
    select ename,first_value(salary) over(partition by job) from emp; select ename,first_value(salary) over(partition by job order by salary desc) from emp;

    last_value() over() :取出分区中最后一条记录的字段值,partition by 可选,order by 可选

    select ename,last_value(ename) over() from emp;
    select ename,last_value(ename) over(order by salary desc) from emp;
    select ename,last_value(ename) over(partition by job) from emp;
    select ename,last_value(ename) over(partition by job order by salary desc) from emp;
  10. lag() over() :取出前n行数据,partition by 可选,order by 必选

    lead() over() :取出后n行数据,partition by 可选,order by 必选

    select ename,eage,lag(eage,1,0) over(order by salary),
    lead(eage,1,0) over(order by salary) from emp; select ename,eage,lag(eage,1) over(partition by esex order by salary),
    lead(eage,1) over(partition by esex order by salary) from emp;
  11. ratio_to_report(a) over(partition by b) :求按照b分组后a的值在所属分组中总值的占比,a的值必须为数值或数值型字段

    partition by 可选,order by 不可选

    select ename,job,salary,ratio_to_report(1) over() from emp; --给每一行赋值1,求当前行在总值的占比,总是0.1
    select ename,job,salary,ratio_to_report(salary) over() from emp; --当前行的值在所有数据中的占比
    select ename,job,salary,ratio_to_report(1) over(partition by job) from emp; --给每一行赋值1,求当前行在分组后的组内总值的占比
    select ename,job,salary,ratio_to_report(salary) over(partition by job) from emp; --当前行的值在分组后组内总值占比
  12. percent_rank() over() :partition by 可选,order by 必选

    所在组排名序号-1除以该组所有的行数-1,排名跳跃排序

    select ename,job,salary,percent_rank() over(order by salary) from emp;
    select ename,job,salary,percent_rank() over(partition by job order by salary) from emp;

    下面函数也不是太常用,上面很重要,下面函数用的时候百度就好或者来这里瞅瞅


  13. ume_dist() over() :partition by 可选,order by必选

    所在组排名序号除以该组所有的行数,注意对于重复行,计算时取重复行中的最后一行的位置

    select ename,job,salary,cume_dist() over(order by salary) from emp;
    select ename,job,salary,cume_dist() over(partition by job order by salary) from emp;
  14. precentile_cont( x ) within group(order by ...) over() :over()中partition by可选,order by 不可选

    x为输入的百分比,是0-1之间的一个小数,返回该百分比位置的数据,若没有则返回以下计算值(r)

    a=1+( x *(N-1) ) x为输入的百分比,N为分区内的记录的行数

    b=ceil ( a ) 向上取整

    c = floor( a ) 向下取整

    r=a * 百分比位置上一条数据 + b * 百分比位置下一条数据

    select ename,job,salary,percentile_cont(0.5) within group(order by salary) over() from emp;
    select ename,job,salary,percentile_cont(0.5) within group(order by salary) over(partition by job) from emp;
  15. precentile_disc( x ) within group(order by ...) over() :over()中partition by可选,order by 不可选

    x为输入的百分比,是0-1之间的一个小数,返回百分比位置对应位置上的数据值,若没有对应数据值,就取大于该分布值的下一个值

    select ename,job,salary,percentile_disc(0.5) within group(order by salary) over()from emp;
    select ename,job,salary,percentile_disc(0.5) within group(order by salary) over(partition by job) from emp;
  16. stddev() over():计算样本标准差,只有一行数据时返回0,partition by 可选,order by 可选

    stddev_samp() over():计算样本标准差,只有一行数据时返回null,partition by 可选,order by 可选

    stddev_pop() over():计算总体标准差,partition by 可选,order by 可选

    select stddev(stu_age) over() from student; --计算所有记录的样本标准差
    select stddev(stu_age) over(order by stu_age) from student; --计算递加的样本标准差
    select stddev(stu_age) over(partition by stu_major) from student; --计算分组的样本标准差
    select stddev(stu_age) over(partition by stu_major order by stu_age) from student; --计算分组递加的样本标准差 select stddev_samp(stu_age) over() from student; --计算所有记录的样本标准差
    select stddev_samp(stu_age) over(order by stu_age) from student; --计算递加的样本标准差
    select stddev_samp(stu_age) over(partition by stu_major) from student; --计算分组的样本标准差
    select stddev_samp(stu_age) over(partition by stu_major order by stu_age) from student; --计算分组递加的样本标准差 select stddev_pop(stu_age) over() from student; --计算所有记录的总体标准差
    select stddev_pop(stu_age) over(order by stu_age) from student; --计算递加的总体标准差
    select stddev_pop(stu_age) over(partition by stu_major) from student; --计算分组的总体标准差
    select stddev_pop(stu_age) over(partition by stu_major order by stu_age) from student;--计算分组递加的总体标准差

    剩下的都是一些数据统计方面东西,方差,相关系数什么的


1. 查询的格式

select [all | distinct] <select_expr>, <select_expr>, ...
from <table_reference>
[where <where_condition>]
[group by <col_list>]
[having <having_condition>]
[order by <order_condition>]
[distribute by <distribute_condition> [sort by <sort_condition>] ]
[limit <number>]

2. 去重

去重多列时,distinct的作用域是select的列集合,不是单个列

select distinct region, sale_date from sale_detail;

3. WHERE子句(where_condition)

可选。 where子句为过滤条件。如果表是分区表,可以实现列裁剪。使用规则如下:

  • 配合关系运算符,筛选满足指定条件的数据。关系运算符包含:

    • ><=>=<=<>
    • likerlike
    • innot in
    • between…and

4. GROUP BY分组查询(col_list)

可选。通常, group by聚合函数配合使用,根据指定的普通列、分区列或正则表达式进行分组。 group by使用规则如下:

  • group by操作优先级高于select操作,因此group by的取值是select输入表的列名由输入表的列构成的表达式。需要注意的是:

    • 不允许是select语句的输出列的别名。
    • group by取值为正则表达式时,必须使用列的完整表达式。
    • select语句中没有使用聚合函数的列必须出现在group by中。

5. HAVING子句(having_condition)

可选。通常 having子句与聚合函数一起使用,实现过滤。命令示例如下。

--为直观展示数据呈现效果,向sale_detail表中追加数据。
insert into sale_detail partition (sale_date='2014', region='shanghai') values ('null','c5',null),('s6','c6',100.4),('s7','c7',100.5);
--使用having子句配合聚合函数实现过滤。
select region,sum(total_price) from sale_detail
group by region
having sum(total_price)<305;

6.ORDER BY全局排序(order_condition)

  • 默认对数据进行升序,如果降序排序,需要使用desc关键字。

  • order by默认要求带limit数据行数限制,没有limit会返回报错。(实测不会报错,)

  • 在使用order by排序时,NULL会被认为比任何值都小,

  • order by后面需要加上select列的别名。当select某列时,如果没有指定列的别名,则列名会被作为列的别名。order by加列的别名。命令示例如下。

    select total_price as t from sale_detail order by total_price limit 3;
    --等效于如下语句。
    select total_price as t from sale_detail order by t limit 3;

7.常见 select语句的执行顺序如下:

  • 场景1:from->where->group by->having->select->order by->limit
  • 为避免混淆,MaxCompute支持以执行顺序书写查询语句,语法结构可改为如下形式:
from <table_reference>
[where <where_condition>]
[group by <col_list>]
[having <having_condition>]
select [all | distinct] <select_expr>, <select_expr>, ...
[order by <order_condition>]
[limit <number>]

使用示例

--按照select语法书写。
select region,max(total_price)
from sale_detail
where total_price > 100
group by region
having sum(total_price)>305
order by region
limit 5;
--按照执行顺序书写。与上一写法等效。
from sale_detail
where total_price > 100
group by region
having sum(total_price)>305
select region,max(total_price)
order by region
limit 5;

8.子查询(SUBQUERY)

  • 基础子查询 (示例)

    select * from (select shop_name from sale_detail) a;
  • in subquery (示例)

    select * from sale_detail where shop_name in (select shop_name from shop);
  • not in subquery (示例)

    select * from shop1 where shop_name not in (select shop_name from sale_detail);
  • exists subquery

    使用exists subquery时,当子查询中有至少一行数据时,返回True,否则返回False。

    select * from sale_detail where exists (select * from shop where customer_id = sale_detail.customer_id);
  • not exists subquery

    使用not exists subquery时,当子查询中无数据时,返回True,否则返回False。

    select * from sale_detail where not exists (select * from shop where shop_name = sale_detail.shop_name);

DataWork之 MaxComputer的使用的更多相关文章

  1. IDEA的Maxcomputer Studio开发

    一.安装 在IDEA中File > Settings > Plugins中Browse repositories搜索安装即可:MaxCompute Studio 二.开发UDF.UDAF. ...

  2. 【SQL】MaxComputer中调试与问题排查技巧小结

    1.分段调试 面对长的SQL,出错时一般直接看定位的行号,有时候不出错但是没数据时,应该尝试分段调试,很长的SQL嵌套很多的子查询时,一个一个子查询进行分别调试,看哪一步子查询出了问题,层层推进 2. ...

  3. 【SQL】MaxComputer常用SQL与注意小结

    MaxComputer常用SQL 1.建表 CREATE TABLE dwd_tfc_ctl_signal_phasedir ( cust_inter_id STRING COMMENT '客户路口I ...

  4. Linux设备驱动剖析之Input(三)

    /* get current state of buttons */ ; i < pdata->nbuttons; i++) gpio_keys_report_event(&dda ...

  5. sensor BMA250源代码执行分析

    重力传感器是根据压电效应的原理来工作的.   所谓的压电效应就是 “对于不存在对称中心的异极晶体加在晶体上的外力除了使晶体发生形变以外,还将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力作用使 ...

  6. Spring 3整合Quartz 2实现定时任务--转

    常规整合 http://www.meiriyouke.net/?p=82 最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之 ...

  7. android电池充电以及电量检测驱动分析

    前段时间比较烦躁,各种不想学习不想工作,于是休息了几天.这几天又下来任务了--调试充电电路和电池电量检测电路,于是又开始工作,顺便把调试过程记录下来. 平台: cpu        飞思卡尔imx6q ...

  8. 项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

    前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备 ...

  9. 1.Linux电源管理-休眠与唤醒

    1.休眠方式 在内核中,休眠方式有很多种,可以通过下面命令查看 # cat /sys/power/state //来得到内核支持哪几种休眠方式. 常用的休眠方式有freeze,standby, mem ...

  10. 1.Linux电源管理-休眠与唤醒【转】

    转自:https://www.cnblogs.com/lifexy/p/9629699.html 1.休眠方式 在内核中,休眠方式有很多种,可以通过下面命令查看 # cat /sys/power/st ...

随机推荐

  1. Spring Cloud服务发现组件Eureka

    简介 Netflix Eureka是微服务系统中最常用的服务发现组件之一,非常简单易用.当客户端注册到Eureka后,客户端可以知道彼此的hostname和端口等,这样就可以建立连接,不需要配置. E ...

  2. Redis--回顾提要

    一.写在前 知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!Redis干就完事了! 二.来辣! Redis做异步队列:一般list结构做队列,rpush生产消息,lpop消费消息,当lpop ...

  3. mysql 简单查询

    查询特定列SELECT ename,birthday FROM emp; 查询所有的select*from emp; 给列起别名select ename AS 姓名, salary AS 工资 FRO ...

  4. Lamdba表达式的无参数无返回值的练习-Lambda表达式有参数有返回值的练习

    Lamdba表达式的无参数无返回值的练习 题目给定一个厨子Cook接口,内含唯一的抽象方法makeFood,且无参数.无返回值.如下∶public interface cook {void makeF ...

  5. ES字段类型

    1 String ELasticsearch 5.X之后的字段类型不再支持string,由text和keyword取代,不做说明. 2 text和keyword 2.1 简介 ElasticSearc ...

  6. 计算机网络基础07 DNS概述

    1 什么是DNS Domain Name System(域名系统),它是一个应用层的服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.当前,对于每一级域名长度的限制是 ...

  7. Serverless Streaming:毫秒级流式大文件处理探秘

    摘要:本文将以图片处理的场景作为例子详细描述当前的问题以及华为云FunctionGraph函数工作流在面对该问题时采取的一系列实践. 文章作者|旧浪:华为云Serverless研发专家.平山:华为云中 ...

  8. 【eslint 插件开发】禁用 location 跳转外部链接

    背景 公司 h5 项目需要为跳转的外部链接统一增加参数.举个例子,假设有如下代码: location.href = 'https://www.test.com/a?id=xxx' location.r ...

  9. 躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发

    早春二月,研发倍忙,杂花生树,群鸥竟飞.为什么?因为春季招聘,无论是应届生,还是职场老鸟,都在摩拳擦掌,秣马厉兵,准备在面试场上一较身手,既分高下,也决Offer,本次我们打响春招第一炮,躬身入局,让 ...

  10. 【Oculus Interaction SDK】(十二)Meta Quest 如何开启透视(Passthrough)

    前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ...