• 关于

    LATERAL

    的搜索结果

问题

odps 里面一张表A 的一个字段 col 里面为 k-v list结构, 如aa:1,bb:2,cc:3,dd:4 通过 lateral view explode 转换只有, 会保序吗?

祁同伟 2019-12-01 20:19:54 1381 浏览量 回答数 1

回答

用表值函数可以和其他字段混合使用 使用Lateral view

云栖大讲堂 2019-12-02 01:51:21 0 浏览量 回答数 0

回答

https://github.com/digoal/blog/blob/master/201802/20180226_05.md 高级用法(《PostgreSQL SELECT 的高级用法(CTE, LATERAL, ORDINALITY, WINDOW, SKIP LOCKED, DISTINCT, GROUPING SETS, ...) - 珍藏级》)

德哥 2019-12-02 01:38:51 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

Lateral View和split,explode等UDTF一起使用,它能够将一行数据拆成多行数据,并在此基础上对拆分后的数据进行聚合。 可参考文档:https://help.aliyun.com/document_detail/87722.html 如有更多疑问咨询可以加入MaxCompute开发者社区钉群点击链接

montos 2020-05-27 17:17:31 0 浏览量 回答数 0

回答

Postgres 9.4或更高版本 使用WITH ORDINALITY了一组返回功能: 当FROM子句中的函数后缀为时WITH ORDINALITY,bigint会在输出后附加一列,该 列从1开始,对于函数输出的每一行以1递增。这对于设置返回函数(例如)最有用UNNEST()。 结合LATERALpg 9.3+中的功能,并根据pgsql-hackers上的该线程,上述查询现在可以写成: SELECT t.id, a.elem, a.nr FROM tbl AS t LEFT JOIN LATERAL unnest(string_to_array(t.elements, ',')) WITH ORDINALITY AS a(elem, nr) ON TRUE; LEFT JOIN ... ON TRUE保留左侧表中的所有行,即使右侧的表表达式不返回任何行。如果这无关紧要,则可以使用这种等效的,不太冗长的形式并带有一个隐式CROSS JOIN LATERAL: SELECT t.id, a.elem, a.nr FROM tbl t, unnest(string_to_array(t.elements, ',')) WITH ORDINALITY a(elem, nr); 如果基于实际数组(arr是数组列),则更简单: SELECT t.id, a.elem, a.nr FROM tbl t, unnest(t.arr) WITH ORDINALITY a(elem, nr); 甚至使用最少的语法: SELECT id, a, ordinality FROM tbl, unnest(arr) WITH ORDINALITY a; a自动为表和列的别名。添加的序数列的默认名称为ordinality。但是最好添加(更安全,更干净)显式的列别名和表限定列。 PostgreSQL 8.4-9.3 这样,row_number() OVER (PARTITION BY id ORDER BY elem)您将获得根据排序顺序排列的数字,而不是字符串中原始顺序位置的顺序编号。 您可以简单地省略ORDER BY: SELECT *, row_number() OVER (PARTITION by id) AS nr FROM (SELECT id, regexp_split_to_table(elements, ',') AS elem FROM tbl) t; 尽管这通常可以正常工作,但我从未见过它会在简单查询中中断,但是PostgreSQL断言了没有的行的顺序没有任何关系ORDER BY。由于实现细节,它碰巧可以工作。 为了保证用空格分隔的字符串中元素的序号: SELECT id, arr[nr] AS elem, nr FROM ( SELECT *, generate_subscripts(arr, 1) AS nr FROM (SELECT id, string_to_array(elements, ' ') AS arr FROM tbl) t ) sub; 如果基于实际数组,则更简单: SELECT id, arr[nr] AS elem, nr FROM (SELECT *, generate_subscripts(arr, 1) AS nr FROM tbl) t; dba.SE的相关答案: 如何在未嵌套的数组中保留元素的原始顺序? Postgres 8.1-8.4 这些功能都不是可用的,但:RETURNS TABLE,generate_subscripts(),unnest(),array_length()。但这有效: CREATE FUNCTION f_unnest_ord(anyarray, OUT val anyelement, OUT ordinality integer) RETURNS SETOF record LANGUAGE sql IMMUTABLE AS 'SELECT $1[i], i - array_lower($1,1) + 1 FROM generate_series(array_lower($1,1), array_upper($1,1)) i'; 特别要注意的是,数组索引可以与元素的顺序位置不同。考虑具有扩展功能的此演示: CREATE FUNCTION f_unnest_ord_idx(anyarray, OUT val anyelement, OUT ordinality int, OUT idx int) RETURNS SETOF record LANGUAGE sql IMMUTABLE AS 'SELECT $1[i], i - array_lower($1,1) + 1, i FROM generate_series(array_lower($1,1), array_upper($1,1)) i'; SELECT id, arr, (rec).* FROM ( SELECT *, f_unnest_ord_idx(arr) AS rec FROM (VALUES (1, '{a,b,c}'::text[]) -- short for: '[1:3]={a,b,c}' , (2, '[5:7]={a,b,c}') , (3, '[-9:-7]={a,b,c}') ) t(id, arr) ) sub; id | arr | val | ordinality | idx ----+-----------------+-----+------------+----- 1 | {a,b,c} | a | 1 | 1 1 | {a,b,c} | b | 2 | 2 1 | {a,b,c} | c | 3 | 3 2 | [5:7]={a,b,c} | a | 1 | 5 2 | [5:7]={a,b,c} | b | 2 | 6 2 | [5:7]={a,b,c} | c | 3 | 7 3 | [-9:-7]={a,b,c} | a | 1 | -9 3 | [-9:-7]={a,b,c} | b | 2 | -8 3 | [-9:-7]={a,b,c} | c | 3 | -7

保持可爱mmm 2020-02-08 21:41:31 0 浏览量 回答数 0

问题

scala编译的时候报错unclosed character literal

数据boy 2019-12-01 20:20:31 1345 浏览量 回答数 1

回答

这是我实现这一目标的方式。对于这整个解决方案,我使用了spark-shell。这些是一些先决条件: 从json-serde下载这个jar 将zip文件解压缩到任何位置 现在使用此命令运行spark-shell spark-shell --jars path/to/jars/json-serde-cdh5-shim-1.3.7.3.jar,path/to/jars/json-serde-1.3.7.3.jar,path/to/jars/json-1.3.7.3.jar你的Json文件: { "cust": "Retails", "tables": [ { "Name":"customer", "table_NAME":"cust", "param1":"cust_id", "val":"112", "op":"cust_name" }, { "Name":"sales", "table_NAME":"sale", "param1":"country", "val":"ind", "op":"monthly_sale" }] }折叠版: {"cust": "Retails","tables":[{"Name":"customer","table_NAME":"cust","param1":"cust_id","val":"112","op":"cust_name"},{"Name":"sales","table_NAME":"sale","param1":"country","val":"ind","op":"monthly_sale"}]}我把这个json放在这个/tmp/sample.json中 现在去spark-sql部分: 基于json模式创建表 sql("CREATE TABLE json_table(cust string,tables array>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'")现在将json数据加载到表中 sql("LOAD DATA LOCAL INPATH '/tmp/sample.json' OVERWRITE INTO TABLE json_table")现在我将使用蜂巢侧视图概念横向视图 val ans=sql("SELECT myCol FROM json_table LATERAL VIEW explode(tables) myTable as myCol").collect返回结果的架构: ans.printSchema root |-- table: struct (nullable = true) | |-- Name: string (nullable = true) | |-- table_NAME: string (nullable = true) | |-- param1: string (nullable = true) | |-- val: string (nullable = true) | |-- op: string (nullable = true) ans.show的结果 ans.show +--------------------+ | table| +--------------------+ |[customer,cust,cu...| |[sales,sale,count...| +--------------------+ 现在我假设可以有两种类型的数据,例如cust_id是Number类型,country是String类型。我正在添加一种方法来根据它的值来识别数据类型。例如 def isAllDigits(x: String) = x forall Character.isDigit注意:您可以使用自己的方式识别此信息 7.现在基于json数据创建查询 ans.foreach(f=>{ val splitted_string=f.toString.split(",")val op=splitted_string(4).substring(0,splitted_string(4).size-2)val table_NAME=splitted_string(1)val param1 = splitted_string(2)val value = splitted_string(3)if(isAllDigits(value)){println("SELECT " +op+" FROM "+ table_NAME+" WHERE "+param1+"="+value)}else{println("SELECT " +op+" FROM "+ table_NAME+" WHERE "+param1+"='"+value+"'")}})这是我得到的结果: SELECT cust_name FROM cust WHERE cust_id=112SELECT monthly_sale FROM sale WHERE country='ind'

社区小助手 2019-12-02 01:46:20 0 浏览量 回答数 0

问题

【FLINK】在同一个流上执行多次sql,导致第二个sql中的where条件不可用

游客6juj22qmvfpmk 2019-12-01 19:35:00 833 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站