查询 Snowflake 中的数据¶
Snowflake 支持标准 SQL,包括 ANSI SQL:1999 的子集和 SQL:2003 分析扩展。Snowflake 还支持许多命令的常见变体,这些变体不会相互冲突。
小技巧
您可以使用搜索优化服务来提高查询性能。有关详细信息,请参阅 搜索优化服务。
- 使用联接
联接可合并两个表中的行以创建可在查询中使用的新组合行。
了解联接概念、联接类型以及如何使用联接。
- 分析时间序列数据
使用专为此目的设计的 SQL 函数(例如 ASOF JOIN 功能、日期和时间辅助函数、用于下采样的聚合函数以及支持滑动窗口框架的函数),分析时间序列数据。
使用 ASOF JOIN,了解如何在时间戳列的值批次紧跟、先于或完全匹配的情况下,通过时间戳列连接表。
- 消除冗余联接
键列上的联接可以引用联接不需要的表。 这种联接称为*冗余联接*。
了解冗余联接以及如何消除它们以提高查询性能。
- 使用子查询
子查询是另一个查询中的一个查询。
了解子查询以及如何使用它们。
- 查询分层数据
关系数据库通常使用不同的表来存储分层数据。
了解如何使用联接、公用表表达式 (CTEs) 和 CONNECT BY 查询分层数据。
- 使用 CTEs (公用表表达式)
CTE(公用表表达式)是在 WITH 子句中定义的命名子查询,其结果实际上是一个表。
了解如何编写和使用 CTE 表达式。
- 查询半结构化数据
半结构化数据表示任意分层的数据结构,可用于加载和操作半结构化格式的数据(例如 JSON、Avro、ORC、Parquet 或 XML)。
了解如何使用特殊运算符和函数来查询存储在 VARIANT 中的复杂分层数据。
- 使用窗口函数
窗口函数在窗口上运行,窗口是以某种方式相关的行组。
了解窗口、窗口函数以及如何使用窗口函数检查数据。
- 识别与模式匹配的行序列
在某些情况下,您可能需要识别与模式匹配的表行序列。
了解模式匹配以及如何使用 MATCH_RECOGNIZE 处理匹配模式的表行。
- 使用序列
序列用于在会话和语句(包括并发语句)之间生成唯一编号。
了解什么是序列以及如何使用它们。
- 使用持久化查询结果
当执行查询时,结果会保留一段时间。
了解如何保留查询结果、保留结果的可用时间以及如何使用保留的查询结果来提高性能。
- 计算非重复值的数量
存在多种方法来确定列中不同元素的计数。
学习识别和报告数据中不同元素的方法。
- 估计两个或多个集合的相似度
Snowflake 提供了比较数据集相似性的机制。
了解 Snowflake 如何确定相似性以及如何比较多个数据集的相似性。
- 估计频次值
Snowflake 可以检查数据以确定数据中值的出现频率。
了解如何确定频率以及如何使用 APPROX_TOP_K 系列函数查询数据以确定数据频率。
- 估算百分位值
Snowflake 可以使用改进版本的 t-Digest 算法来估计值的百分比。
了解如何使用 APPROX_PERCENTILE 系列函数估计百分比
- 使用查询配置文件分析查询
查询配置文件提供了查询的执行详细信息。
了解如何使用查询配置文件检查查询以了解和提高性能。
- 使用查询哈希值来识别查询中的模式和趋势
要识别查询中的模式和趋势,您可以使用查询文本的哈希值,该哈希值包含在所选 Account Usage 视图的
query_hash
和query_parameterized_hash
列中,以及所 Information Schema 表函数的输出结果中。了解如何使用这些列中的查询哈希值来识别重复查询并检测查询中的模式和趋势。
- 取消语句
通常使用用于启动查询的接口来取消正在执行的语句。
了解如何使用系统函数取消特定查询或所有当前正在执行的查询。