dataworks中quick bi 数据集里这个的sql是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DataWorks中使用Quick BI创建数据集时,SQL的编写方式取决于具体的数据分析需求。以下是基于知识库资料的详细说明和示例:
如果需要在Quick BI中实现占比计算(例如按城市维度汇总销售额,并计算占所属省份销售额的比值),可以使用以下SQL结构:
SELECT
a.city,
SUM(a.fenzi) / SUM(b.fenmu) AS ratio
FROM
(
SELECT
province,
city,
SUM(order_amt) AS fenzi
FROM
zhanbi_test
WHERE
$expr{date:date_para}
AND $expr{province:province_para}
AND $expr{city:city_para}
GROUP BY
province, city
) a
LEFT JOIN
(
SELECT
province,
SUM(order_amt) AS fenmu
FROM
zhanbi_test
WHERE
$expr{date:date_para}
AND $expr{province:province_para}
AND $expr{city:city_para}
GROUP BY
province
) b
ON a.province = b.province
GROUP BY
a.city;
关键点: - $expr{}
是Quick BI中的参数化语法,用于动态传递日期、省份、城市等筛选条件。 - fenzi
表示分子(城市销售额),fenmu
表示分母(省份总销售额)。 - 需要在数据集的参数设置中将日期字段转换为日期类型。
如果需要实现累计计算(例如月累计),可以参考以下SQL:
SELECT
a.mon_date,
AVG(a.order_num) AS order_num,
SUM(b.order_num) AS add_num
FROM
(
SELECT
DATE_FORMAT(report_date, '%Y/%m') AS mon_date,
COUNT(DISTINCT order_id) AS order_num,
MAX(DATE_FORMAT(report_date, '%Y/%m')) AS max_mon_date
FROM
company_sales_record_copy
WHERE
$expr{report_date:month_date}
GROUP BY
DATE_FORMAT(report_date, '%Y/%m')
) a
LEFT JOIN
(
SELECT
DATE_FORMAT(report_date, '%Y/%m') AS mon_date,
COUNT(DISTINCT order_id) AS order_num
FROM
company_sales_record_copy
WHERE
$expr{report_date:month_date}
GROUP BY
DATE_FORMAT(report_date, '%Y/%m')
) b
ON a.mon_date >= b.mon_date
GROUP BY
a.mon_date;
关键点: - DATE_FORMAT(report_date, '%Y/%m')
用于将日期格式化为年/月。 - a.mon_date >= b.mon_date
实现了累计逻辑。 - $expr{}
参数化语法允许用户动态选择时间范围。
from_unixtime
函数进行转换。例如:
SELECT from_unixtime(unix_timestamp_field) AS standard_datetime
FROM your_table;
SUM
、AVG
等聚合函数,若需聚合,请保存为度量字段。如果在Quick BI中执行SQL时出现报错(如 Incorrect syntax near the keyword 'ORDER'
),可能的原因包括: - SQL语法不符合目标数据库的要求(如SQL Server对关键字的敏感性)。 - 参数化语法未正确配置。
建议检查SQL语句是否符合目标数据库的规范,并确保 $expr{}
参数化语法正确使用。
以上是针对DataWorks中Quick BI数据集SQL的详细说明和示例。根据具体业务需求,您可以调整SQL逻辑以满足分析目标。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。