Snowflake - 有用查询示例


在本章中,我们将在 Snowflake 中提供一些有用的查询示例及其输出。

使用以下查询在 Select 语句中引入有限的数据 -

"SELECT * from <table_name>" Limit 10

此查询将仅显示前 10 行。

使用以下查询显示过去 10 天的使用情况。

SELECT * FROM TABLE (INFORMATION_SCHEMA.DATABASE_STORAGE_USAGE_HISTORY
   (DATEADD('days', -10, CURRENT_DATE()), CURRENT_DATE()))

使用以下查询检查在 Snowflake 中创建的阶段和文件格式 -

SHOW STAGES
SHOW FILE FORMATS

要检查变量,请按顺​​序运行以下查询 -

SELECT * FROM snowflake_sample_data.tpch_sf1.region
JOIN snowflake_sample_data.tpch_sf1.nation
ON r_regionkey = n_regionkey;
select * from table(result_scan(last_query_id()));
SELECT * FROM snowflake_sample_data.tpch_sf1.region
JOIN snowflake_sample_data.tpch_sf1.nation
ON r_regionkey = n_regionkey;
SET q1 = LAST_QUERY_ID();
select $q1;
SELECT * FROM TABLE(result_scan($q1)) ;
SHOW VARIABLES;

使用以下查询查找数据库的登录历史记录 -

select * from table(test_db.information_schema.login_history());

结果提供时间戳、用户名、如何使用密码或 SSO 登录、登录期间的错误等。

使用以下命令查看所有列 -

SHOW COLUMNS 
SHOW COLUMNS in table <table_name>

使用以下命令显示Snowflake提供的所有参数 -

SHOW PARAMETERS;

以下是只需运行查询“SHOW PARAMETERS;”即可查看的一些详细信息

先生编号 按键及说明
1

ABORT_DETACHED_QUERY

如果为 true,Snowflake 在检测到客户端消失时会自动中止查询。

2

自动提交

自动提交属性确定语句是否应隐式包装在事务中。如果自动提交设置为 true,则需要事务的语句将在事务中隐式执行。如果自动提交为 false,则需要显式提交或回滚才能关闭事务。默认自动提交值为 true。

3

自动提交_API_SUPPORTED

是否为此客户端启用自动提交功能。此参数仅供 Snowflake 使用。

4

BINARY_INPUT_FORMAT

二进制输入格式

5

BINARY_OUTPUT_FORMAT

二进制的显示格式

6

CLIENT_ENABLE_CONSERVATIVE_MEMORY_USAGE

为 JDBC 启用保守的内存使用

7

CLIENT_ENABLE_DEFAULT_OVERWRITE_IN_PUT

如果 sql 命令中未指定覆盖选项,则将 put 命令的覆盖选项默认值设置为 true。

8

CLIENT_ENABLE_LOG_INFO_STATMENT_PARAMETERS

为准备好的语句绑定参数启用信息级日志记录

9

CLIENT_MEMORY_LIMIT

限制客户端使用的内存量(以 MB 为单位)

10

CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX

对于客户端元数据请求 (getTables()),如果设置为 true,则使用会话目录和架构

11

CLIENT_METADATA_USE_SESSION_DATABASE

对于客户端元数据请求 (getTables()),如果设置为 true,则使用会话目录,但使用多个架构(与 CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX 结合使用)

12

CLIENT_PREFETCH_THREADS

控制线程的客户参数,0=auto

13

CLIENT_RESULT_CHUNK_SIZE

在客户端设置最大结果块大小(以 MB 为单位)

14

CLIENT_RESULT_COLUMN_CASE_INSENSITIVE

列名搜索在客户端中不区分大小写

15

CLIENT_SESSION_CLONE

如果为 true,客户端会从帐户和用户之前使用的令牌克隆一个新会话。

16

CLIENT_SESSION_KEEP_ALIVE

如果为 true,客户端会话不会自动过期

17 号

CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY

CLIENT_SESSION_KEEP_ALIVE 的心跳频率(以秒为单位)。

18

CLIENT_TIMESTAMP_TYPE_MAPPING

如果使用绑定 API 将变量绑定到 TIMESTAMP 数据类型,则确定它应映射到哪个 TIMESTAMP* 类型:
TIMESTAMP_LTZ(默认)、TIMESTAMP_NTZ

19

C_API_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 C API 的格式

20

DATE_INPUT_FORMAT

日期的输入格式

21

日期输出格式

日期的显示格式

22

ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION

启用 Snowflake 中使用的物理类型优化以影响 Parquet 输出

23

ERROR_ON_NONDETERMINISTIC_MERGE

尝试合并更新连接多行的行时引发错误

24

ERROR_ON_NONDETERMINISTIC_UPDATE

尝试更新连接多行的行时引发错误

25

GEOGRAPHY_OUTPUT_FORMAT

GEOGRAPHY 显示格式:GeoJSON、WKT 或 WKB(不区分大小写)

26

GO_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 golang 驱动程序的格式

27

JDBC_FORMAT_DATE_WITH_TIMEZONE

当为 true 时,ResultSet#getDate(int columnIndex, Calendar cal) 和 getDate(String columnName, Calendar cal) 将使用日历的输出显示日期。

28

JDBC_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 jdbc 的格式

29

JDBC_TREAT_DECIMAL_AS_INT

当scale为0时,JDBC中是否将Decimal视为Int

30

JDBC_TREAT_TIMESTAMP_NTZ_AS_UTC

当 true 时,Timestamp_NTZ 值始终存储在 UTC 时区中

31

JDBC_USE_SESSION_TIMEZONE

如果为 true,JDBC 驱动程序将不会显示 JVM 和会话之间的时区偏移。

32

JSON_INDENT

JSON 输出中的缩进宽度(0 表示紧凑)

33

JS_TREAT_INTEGER_AS_BIGINT

如果为 true,nodejs 客户端会将所有整数列转换为 bigint 类型

34

语言

UI、GS、查询协调和 XP 将使用的选定语言。输入语言应采用 BCP-47 格式。又名。破折号格式。有关详细信息,请参阅 LocaleUtil.java。

35

锁定超时

在超时并中止语句之前尝试锁定资源时等待的秒数。值 0 将关闭锁等待,即
语句必须立即获取锁或中止。如果语句需要锁定多个资源,则超时将单独应用于每个
锁定尝试。

36

MULTI_STATMENT_COUNT 个

提交的查询文本中包含的语句数。该参数由用户提交,以避免sql注入。值1表示一条语句,值> 1表示可以执行N条语句,如果不等于该值将引发异常。值 0 表示可以执行任意数量的语句

37

ODBC_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 ODBC 的格式

38

ODBC_SCHEMA_CACHING

如果为 true,则在 ODBC 中启用架构缓存。这可以加速 SQL 列 API 调用。

39

ODBC_USE_CUSTOM_SQL_DATA_TYPES

ODBC 在结果集元数据中返回Snowflake特定的 SQL 数据类型

40

PYTHON_CONNECTOR_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 python 连接器的格式

41

QA_TEST_NAME

如果在 QA 模式下运行,则测试名称。用作共享池的多样化工具

42

QUERY_RESULT_FORMAT

用于序列化查询结果以发送回客户端的格式

43

QUERY_TAG

用于标记会话执行的语句的字符串(最多 2000 个字符)

44

QUOTED_IDENTIFIERS_IGNORE_CASE

如果为 true,则忽略带引号的标识符的大小写

45

ROWS_PER_RESULTSET

结果集中的最大行数

46

搜索路径

不合格对象引用的搜索路径。

47

SHOW_EXTERNAL_TABLE_KIND_AS_TABLE

更改 SHOW TABLES 和 SHOW OBJECTS 显示外部表 KIND 信息的方式。如果为 true,则外部表的 KIND 列显示为 TABLE,否则显示为 EXTERNAL_TABLE。

48

SIMULATED_DATA_SHARING_CONSUMER

数据共享视图将返回行,就像在指定的消费者帐户中执行一样。

49

SNOWPARK_LAZY_ANALYSIS

为 Snowpark 启用惰性结果模式分析

50

STATMENT_QUEUED_TIMEOUT_IN_SECONDS

排队语句超时(以秒为单位):如果语句在仓库中排队的时间超过此时间,则语句将自动取消;如果设置为零则禁用。

51

STATMENT_TIMEOUT_IN_SECONDS

语句超时(以秒为单位):如果语句运行时间较长,则自动取消;如果设置为零,则强制执行最大值 (604800)。

52

STRICT_JSON_OUTPUT

JSON输出严格符合规范

53

TIMESTAMP_DAY_IS_ALWAYS_24H

如果设置,则天数计算始终使用每天 24 小时,可能不会保留时间(由于 DST 更改)

54

TIMESTAMP_INPUT_FORMAT

时间戳的输入格式

55

TIMESTAMP_LTZ_OUTPUT_FORMAT

TIMESTAMP_LTZ 值的显示格式。如果为空,则使用 TIMESTAMP_OUTPUT_FORMAT。

56

TIMESTAMP_NTZ_OUTPUT_FORMAT

TIMESTAMP_NTZ 值的显示格式。如果为空,则使用 TIMESTAMP_OUTPUT_FORMAT。

57

TIMESTAMP_OUTPUT_FORMAT

所有时间戳类型的默认显示格式。

58

TIMESTAMP_TYPE_MAPPING

如果使用 TIMESTAMP 类型,它应该映射到什么特定的 TIMESTAMP* 类型:
TIMESTAMP_LTZ、TIMESTAMP_NTZ(默认)或 TIMESTAMP_TZ

59

TIMESTAMP_TZ_OUTPUT_FORMAT

TIMESTAMP_TZ 值的显示格式。如果为空,则使用 TIMESTAMP_OUTPUT_FORMAT。

60

时区

时区

61

TIME_INPUT_FORMAT

时间的输入格式

62

TIME_OUTPUT_FORMAT

时间的显示格式

63

TRANSACTION_ABORT_ON_ERROR

如果此参数为 true,并且在非自动提交事务中发出的语句返回错误,则非自动提交事务将中止。在执行提交或回滚语句来关闭该事务之前,该事务内发出的所有语句都将失败。

64

TRANSACTION_DEFAULT_ISOLATION_LEVEL

未指定隔离级别时启动事务时的默认隔离级别

65

TWO_DIGIT_CENTURY_START

对于 2 位数日期,定义世纪起始年份。
例如,当设置为 1980 时:
- 解析字符串“79”将产生 2079
- 解析字符串“80”将产生 1980

66

UI_QUERY_RESULT_FORMAT

用于序列化查询结果以发送回 python 连接器的格式

67

不支持的_DDL_ACTION

遇到不受支持的 DDL 语句时采取的操作

68

USE_CACHED_RESULT

如果启用,只要原始结果尚未过期,就可以在同一查询的连续调用之间重复使用查询结果

69

WEEK_OF_YEAR_POLICY

定义将周分配给年的策略:
0:给定年份中一周需要有 4 天;
1:包含 1 月 1 日的一周始终属于给定年份。

70

WEEK_START

定义一周的第一天:
0:传统的 Snowflake Behave;1:星期一.. 7:星期日。