在这篇教程中,展示了如何在某中心Redshift中编写SQL语句。鉴于这个主题庞大而复杂,我们从基础开始。本教程将展示如何:
- 使用查询编辑器
- 使用 group by 聚合行
- 将日期转换为年和月
- 将结果导出到CSV文件
什么是某中心Redshift?
某中心Redshift是某机构网络服务云数据仓库,基于SQL。它旨在处理大型数据集和复杂查询。它非常适合数据仓库、商业智能、大数据分析、机器学习和提取-加载-转换工作流。
Redshift的组件包括以下内容:
- 集群:是围绕一个领导节点组织的计算节点,用于管理连接和协调查询。
- 切片:是节点的分区,用于为高效的大规模并行处理分配内存、处理和磁盘空间资源。
- 数据分发方法:根据键值或跨所有节点均匀地将数据分配到节点。
- 数据的列式存储:以垂直堆栈完成,以减少输入/输出(I/O)并实现更高效的存储。
- 执行引擎:支持SQL查询,并规划获取和使用数据的最佳方式。
- Spectrum:是一项某中心Redshift服务,使得无需将数据带入Redshift环境即可查询某中心S3中的数据。
- 集成数据加载:使用各种某中心和第三方工具。
- 备份和恢复:增加了弹性。
- 安全控制身份和访问,提供日志记录以进行模式识别和漏洞利用后响应。
- 维护和监控:是这项完全托管服务固有的特性,减轻了团队的持续管理负担。
Redshift查询编辑器
要打开查询编辑器,请从集群屏幕点击编辑器。然后,Redshift会要求提供凭据以连接到数据库。一个不错的功能是有一个生成临时凭据的选项,因此无需记住密码。只需登录到某中心AWS控制台即可。下面有一个集群,在将其置于暂停状态(以减少某中心计费费用)后正在恢复。
在此处编写SQL语句。一次只允许一条语句,因为Redshift一次只能显示一组结果。要编写多个语句,请单击加号(+)添加额外的选项卡。运行每个查询时,需要几秒钟时间,因为它会提交作业然后运行它。因此,它并非如您可能在其他产品中预期的那样即时。结果显示在底部,您可以在那里将其导出为CSV、TXT或HTML。还可以对结果进行图表化。
获取表模式
在本教程中,使用了一个天气数据表。(有关从S3加载数据到某中心Redshift的更多信息。)这是塞浦路斯帕福斯20年的天气数据。它有四列:
- dt_iso
- temp
- temp_min
- temp_max
dt_dso是时间戳类型,是主键。Redshift的一个优点是,几乎可以以任何想要的格式加载日期,Redshift都能理解。然后,Redshift提供to_char()函数来打印出所需的任何日期部分,例如小时、年、分钟等。要查看表模式,请查询pg_table_def表。
SELECT *
FROM pg_table_def
WHERE tablename = 'paphos'
AND schemaname = 'public';
模式如下。
schemaname,tablename,column,type,encoding,distkey,sortkey,notnull
public,paphos,dt_iso,timestamp without time zone,none,t,1,t
public,paphos,temp,real,none,f,0,f
public,paphos,temp_min,real,none,f,0,f
public,paphos,temp_max,real,none,f,0,f
聚合SQL语句
此查询计算夏季月份(5月至9月)的月平均温度。注意:
- to_char() 提取所需的任何日期部分,例如YYYY年或MM月数字。
- 使用 in() 语句来选择月份。
- order 语句使用数字 1。这意味着使用查询返回的第一列。这是输入列名的替代方法。
- 按年份和月份分组,因为要计算一年内月份的平均值[avg()]。
- 使用 round() 函数四舍五入到两位小数。否则Redshift会给出太多小数位。
- 与其他数据库一样,as 语句允许为计算产生的列提供别名。没有它,该列将没有描述性名称。这里将平均温度称为aveTemp。
select round(avg(temp),2) as aveTemp,
to_char(dt_iso,'YYYY') as year,
to_char(dt_iso,'MM') as month
from paphos where
month in ('05','06','07','08','09')
group by year, month
order by 1 desc
结果如下。它显示了20年数据中最热的月份。为了使显示简短,已截断部分内容。例如,在这20年中,2010年8月是最热的月份。按年份然后月份分组,因为需要给定每日天气观测值的一年内的月份。
avetemp year month
84.11 2010 8
83.12 2012 8
83.05 2012 7
82.9 2015 8
82.39 2017 7
82.04 2014 8
81.85 2007 7
81.73 2020 9
81.72 2013 8
81.72 2008 8
81.62 2000 7
81.61 2009 8
81.49 2017 8
使用结果右侧的按钮将数据导出为CSV格式。然后将其导入到电子表格中,以便更轻松地查看结果并为其添加颜色等。
以下是最热的年份。通过从聚合中删除月份来获得。
select round(avg(temp),2) as aveTemp,
to_char(dt_iso,'YYYY') as year
from paphos
group by year
order by 1 desc
额外资源
如需更多类似教程,请探索以下资源:
- BMC机器学习与大数据博客
- 某机构指南,包含15篇文章和教程
- 如何将某中心S3数据导入Snowflake
- 如何将某中心Glue连接到JDBC数据库
- 某中心Braket量子计算:如何开始
这些文章仅代表个人观点,不一定代表BMC的立场、策略或意见。发现错误或有建议?请通过发送电子邮件至 blogs@bmc.com 告知。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
1426

被折叠的 条评论
为什么被折叠?



