数仓sql小技巧(一)

避免ADS层小文件产生

问题产生

ads层由于本身的数据很少,一天只有几条或几十条,并且数据导出常常为全量导出。所以没有进行分区,,也没有才有压缩和列式存储。采用的数据装载语句也是insert into,而不是insert override。但这样就会带来一个在hdfs中非常严重的问题——小文件过多。ads层每插入一条数据,就会生成一个小文件,这样就会形成大量小文件。

问题解决

可以在每次导入数据时,把历史数据查出来,不用修改,再把今天的数据拿过来,两者union all。这样就不会产生小文件了。

insert override table ads_order_daycount
select
  '2020-06-24',
  sum(order_count),
  sum(order_amount),
  sum(if(order_count>0,1,0))
from
  dws_user_action_daycount
where
  dt='2020-06-24'
union all
select
  *
from
  dws_user_action_daycount;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数仓中常用的SQL查询技巧有很多,以下是一些常见的技巧和建议: 1. 使用窗口函数:窗口函数(Window Function)是SQL中强大的功能之一,它可以在查询结果中对数据集进行分组、排序和聚合操作,常用的窗口函数包括RANK、ROW_NUMBER、LEAD、LAG等。 2. 优化查询性能:在处理大规模数据时,优化查询性能是非常重要的。可以通过创建合适的索引、避免全表扫描、使用合适的连接方式等方式来提高查询效率。 3. 使用子查询:子查询(Subquery)可以嵌套在主查询中,用于限制结果集或作为计算字段的来源。使用子查询可以简化复杂的查询逻辑,并提高可读性。 4. 使用临时表或表变量:当需要多次使用相同的结果集时,可以将查询结果存储在临时表或表变量中,避免重复查询和计算,提高性能。 5. 使用CTE(Common Table Expression):CTE是一种临时命名的查询结果集,可以在查询中多次引用,提高可读性和维护性。 6. 使用合适的连接方式:在进行表之间的关联查询时,选择合适的连接方式(如INNER JOIN、LEFT JOIN、RIGHT JOIN等)可以确保查询结果正确且高效。 7. 利用索引进行查询优化:合理创建和使用索引可以加快查询速度,尤其是在大型数据表中。根据查询的字段和件,选择合适的索引策略,可以显著提高查询性能。 8. 使用视图(View):视图是一种虚拟的表,可以将复杂的查询逻辑封装为一个视图,使查询更简洁、可复用。 9. 使用合适的聚合函数:根据需要,选择合适的聚合函数(如SUM、AVG、COUNT、MAX、MIN等)进行数据统计和分析。 10. 使用合适的数据类型和字段命名:选择合适的数据类型可以节省存储空间和提高查询效率,良好的字段命名可以提高代码可读性和维护性。 这些只是一些常见的SQL查询技巧,实际应用中还会根据具体场景和需求进行调整和优化。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值