BigQuery管道语法——简化SQL查询的新手之旅
2024/12/2 21:03:09
本文主要是介绍BigQuery管道语法——简化SQL查询的新手之旅,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SQL 已经是数据管理的支柱几十年了。它声明式风格让你描述需要的内容,数据库系统则处理其余部分。然而,随着数据处理日益复杂,SQL 的僵化结构和冗长性可能会成为瓶颈,常常导致难以阅读、调试和维护的复杂嵌套查询。
进入GoogleSQL的管道语法功能,这是改变游戏规则的存在。它旨在简化查询构建过程,提供了一个逻辑清晰、逐步构建的方法,让使用者不再受限于传统SQL语法。
传统SQL的执行顺序是固定的。
FROM → WHERE → GROUP BY → ORDER BY → SELECT
。
尽管功能上可行,这种顺序并不总是符合我们逻辑上的问题解决方式。此外,SQL 经常需要子查询,导致嵌套结构很深,开发人员戏称为“倒序流”。调试这样的查询可不容易。
管道语法重新构想了 SQL,允许你将操作,如过滤、分组和选择等,以线性序列连接起来。可以将其视为一个逐步展开的逻辑过程。该语法类似于流行的 PySpark 和 Pandas 数据操作库,对于熟悉这些工具的开发人员来说,这种语法很容易上手。
你可以在我的YouTube视频中了解更多关于管道语法知识
管道语法的关键特点
在我们深入之前,我们先来看看这个样本数据集吧。这是BigQuery公共数据中一个纽约出租车行程的样本数据。我们将用这个表来了解管道语法的各种概念。
出租车行程示例数据
表格的元数据信息。请注意,它是按照行程日期进行分区的。
这里有一些带有实际示例的管道符常用操作:
1.: 筛选行.
从 `coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned` 表中 | WHERE trip_miles > 5, | WHERE trip_date = '2023-07-11';
这会筛选出行距离超过5英里并且发生在某个特定日期的行程。
2. 数据聚合
FROM `沿海王座-433510-a5.partitioned_data.taxi_trips_date_partitioned` |> AGGREGATE SUM(fare) AS total_fare GROUP BY payment_type; -- 计算每个支付类型下的总车费
计算每种支付方式的总金额。
3. 添加新列
FROM `coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned` |> 增加 trip_seconds / 60 AS 行程分钟;
注:此操作将行程秒数转换为行程分钟。
添加一个新的列,trip_minutes
,将行程秒转换成分钟。
4.: 重命名列
在 `coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned` |> 重命名为 trip_miles 到 distance_miles;
使列名更直观易懂。
5. 数据采样
从以下SQL查询中,从 coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned
|> 取10%的样本数据;
随机抽取数据集中的10%记录。 **6\. 数据去扁平化**
从 coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned
数据集开始,使用解构操作将季度计数展开为单独的列:
|> 解构(trip_count
对季度 IN (trip_count_Q1, trip_count_Q2,
trip_count_Q3, trip_count_Q4
)
);
注释:`partitioned_data` 表示分区数据。 把列转成行,这样季度数据分析就更简单了。 **7\. 连接表格**
FROM `coastal-throne-433510-a5.partitioned_data.taxi_trips_date_partitioned` AS taxi_trips |> 左连接 ( SELECT '153ba837...' AS unique_key, 22.5 AS additional_fees UNION ALL SELECT '8d563474...' AS unique_key, 18.0 AS additional_fees ) AS taxi_fare_data ON taxi_trips.unique_key = taxi_fare_data.unique_key |> WHERE trip_date = '2023-06-29' |> SELECT taxi_trips.unique_key, fare, additional_fees;
/* 行程日期为 '2023-06-29' 的行程中,选择出租车行程唯一键和费用。 */ # **管道操作的好处** * **提高可读性**:查询简洁且逻辑清晰,模仿我们的思维方式。 * **熟悉度**:感觉就像使用 PySpark 或 Pandas,降低了学习曲线。 * **互操作性**:与标准 SQL 无缝集成,可以轻松协作。 # **限制:** * **无直接差分隐私支持**:你不能直接在管道查询中使用差分隐私。 * **暂不支持命名窗口**:管道语法暂时不支持命名窗口。 * **采用难题**:传统SQL有庞大的用户群体,改变习惯需要时间。 # **为什么应该使用管道符号?** 管道语法让SQL焕然一新。它改变了我们处理数据查询的方法,使代码更加整洁、易于维护。如果你曾经为复杂的SQL头疼过,这是尝试更简单方法的绝佳机会。 # **最后的思考** GoogleSQL的管道语法不仅是一个新功能,它还是一种新方法,更贴合现代数据工作流程。试试看,感受一下它的不同之处。在评论中和我分享一下你的想法! # 文档资料 1. Google 官方文档: <https://cloud.google.com/bigquery/docs/pipe-syntax> 2. 同样,Axel Thevenot 🐣 撰写的另一篇精彩文章关于管道符号的用法:[更多内容请参阅](https://medium.com/google-cloud/google-pipe-syntax-modernizing-sql-without-sacrificing-its-strengths-78b6e8177648) 关注我在 LinkedIn 和 Medium 上的动态,获取更多类似的内容!
这篇关于BigQuery管道语法——简化SQL查询的新手之旅的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22揭秘 Fluss:下一代流存储,带你走在实时分析的前沿(一)
- 2024-12-20DevOps与平台工程的区别和联系
- 2024-12-20从信息孤岛到数字孪生:一本面向企业的数字化转型实用指南
- 2024-12-20手把手教你轻松部署网站
- 2024-12-20服务器购买课程:新手入门全攻略
- 2024-12-20动态路由表学习:新手必读指南
- 2024-12-20服务器购买学习:新手指南与实操教程
- 2024-12-20动态路由表教程:新手入门指南
- 2024-12-20服务器购买教程:新手必读指南
- 2024-12-20动态路由表实战入门教程