问题一:云数据仓库ADB中中有数组转成字符串的函数吗?
云数据仓库ADB中中有数组转成字符串的函数吗?好像concat_ws 用不了。
有类似这种功能吗?
SELECT owner_company_id
,owner_company_name
,concat_ws(',', COLLECT_SET(owner_dept_id)) AS owner_dept_ids
,concat_ws(',',COLLECT_SET(owner_dept_name) ) AS owner_dept_names
,COUNT(*) AS order_num
,SUM(budget / 100 / 10000) AS total_budget
FROM dws_bid_all_order_info_da
WHERE order_type IN ('招标','询比')
AND status_name != '已流标'
AND (
owner_company_id IN (5,27,14)
OR owner_dept_id IN (12,62,10,15,79,7)
)
GROUP BY owner_company_id
,owner_company_name"
参考回答:
你提到的concat_ws函数实际上是MySQL才有的函数,而ADB是基于Presto的。
Presto作为分布式SQL查询引擎,只提供了比较基础的函数,没有array_to_string这样的高级函数。
不过你还有一些可选方案可以实现类似的效果:
用字符串拼接函数concat
presto
Copy
SELECT owner_company_id,
owner_company_name,
concat('{', concat_ws(',',COLLECT_SET(owner_dept_id)),'}') AS owner_dept_ids
FROM ...
用聚合函数string_agg
presto
Copy
SELECT owner_company_id,
owner_company_name,
string_agg(owner_dept_id, ',') within GROUP(owner_dept_id) AS owner_dept_ids
FROM ...
GROUP BY owner_company_id, owner_company_name
自己写UDF函数
你也可以定义一个自己的array_to_string函数,然后注册为UDF,在查询时直接调用。
总的来说,ADB本身没有将数组转字符串的内置函数。
但是你可以使用concat或string_agg函数,或者自定义UDF,来实现类似的效果。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/534969?spm=5176.8068049.0.0.77566d19q957kd
问题二:云数据仓库ADB中仓库的带分区的一张表中的数据导出oss(parquet格式),导出失败什么原因?
云数据仓库ADB中仓库的带分区的一张表中的数据导出oss(parquet格式),导出失败
什么原因?
参考回答:
创建一个anoe。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/534968?spm=5176.8068049.0.0.77566d19q957kd
问题三:云数据仓库ADB中这个是不支持批量执行sql吗?还是说有什么配置?
云数据仓库ADB中java.sql.BatchUpdateException: [13000, 2023071916281119216806321403453003052] multi-statement be found.
这个是不支持批量执行sql吗?还是说有什么配置?
参考回答:
创建一个anoe吧 。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/534967?spm=5176.8068049.0.0.77566d19q957kd
问题四:云数据仓库ADB中请问这个报错是什么原因,我们是集群版 。官方文档没找到这个错误信息。
云数据仓库ADB中PrestoException:No nodes available for schmea:order_center shard:1 请问这个报错是什么原因,我们是集群版 。官方文档没找到这个错误信息。
参考回答:
该分片正在或者刚刚进行数据迁移
当分片的数据正在或者刚刚从一个节点迁移到另一个节点时,有一段时间该分片会处于不可用状态。
这段不可用期间,如果有查询试图访问这个分片,就会报这个错。
解决方法:等待数据迁移完成后,分片节点就能正常访问了。
该分片的节点故障
如果分片对应的一个或多个节点出现故障无法访问,也会导致这条报错。
解决方法:故障节点需尽快修复,使得分片能访问足够的节点。
分片节点配置错误
如果分片的节点配置中有误,也可能导致查询无法找到对应节点。
解决方法:检查和修复分片节点的配置。
ADB集群本身存在问题
出现这条报错,也表明ADB的集群状态非常不正常。
需要检查集群内每个节点,排查故障点。
总的来说,这条报错主要提示ADB在处理查询时,没法找到对应的分片。
需要排查分片是否处于不可用状态,或者集群本身存在问题。
建议先和运维人员或者相关DBA沟通,了解ADB集群最近是否做过大的维护或变更。同时提供报错的相关信息,方便进一步的诊断和排查。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/534966?spm=5176.8068049.0.0.77566d19q957kd