Snowflake 简明教程
Snowflake - Sample Useful Queries
在本章中,我们将在 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;" 便可查看的几个详细信息
Sr.No |
Keys & Description |
1 |
ABORT_DETACHED_QUERY 如果为真,那么 Snowflake 会在检测到客户端消失时自动中止查询。 |
2 |
AUTOCOMMIT auto-commit 属性确定是否应将语句隐式包装在事务中。如果 auto-commit 设置为 true,则隐式地在事务中执行需要事务的语句。如果 auto-commit 为 false,则需要显式提交或回滚才能关闭事务。默认的 auto-commit 值为 true。 |
3 |
AUTOCOMMIT_API_SUPPORTED 是否为该客户端启用 auto-commit 功能。此参数仅供 Snowflake 使用。 |
4 |
BINARY_INPUT_FORMAT input format for binary |
5 |
BINARY_OUTPUT_FORMAT display format for binary |
6 |
CLIENT_ENABLE_CONSERVATIVE_MEMORY_USAGE 为 JDBC 启用保守内存使用 |
7 |
CLIENT_ENABLE_DEFAULT_OVERWRITE_IN_PUT 如果在 sql 命令中未指定 overwrite 选项,则将 put 命令的 overwrite 选项的默认值设置为 true。 |
8 |
CLIENT_ENABLE_LOG_INFO_STATEMENT_PARAMETERS 为 Prepared Statement 绑定参数启用信息级日志记录 |
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=自动 |
13 |
CLIENT_RESULT_CHUNK_SIZE 在客户端设置最大结果块大小(单位为 MB) |
14 |
CLIENT_RESULT_COLUMN_CASE_INSENSITIVE 在客户端中,列名搜索不区分大小写 |
15 |
CLIENT_SESSION_CLONE 如果为真,那么客户端将从先前用于该帐户和用户的令牌克隆新会话。 |
16 |
CLIENT_SESSION_KEEP_ALIVE 如果为真,那么客户端会话不会自动过期 |
17 |
CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY CLIENT_SESSION_KEEP_ALIVE 的心跳频率(单位:秒)。 |
18 |
CLIENT_TIMESTAMP_TYPE_MAPPING 如果变量使用 bind API 绑定到 TIMESTAMP 数据类型,则确定它应该映射到的 TIMESTAMP* 类型:TIMESTAMP_LTZ(默认)、TIMESTAMP_NTZ |
19 |
C_API_QUERY_RESULT_FORMAT 用于序列化查询结果以发回 C API 的格式 |
20 |
DATE_INPUT_FORMAT input format for date |
21 |
DATE_OUTPUT_FORMAT display format for date |
22 |
ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION Enable physical-type optimizations used in Snowflake to affect the Parquet output |
23 |
ERROR_ON_NONDETERMINISTIC_MERGE 当尝试合并更新连接多行的行时引发错误 |
24 |
ERROR_ON_NONDETERMINISTIC_UPDATE 当尝试更新连接多行的行时引发错误 |
25 |
GEOGRAPHY_OUTPUT_FORMAT 地理格式: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 当标度为 0 时,是否将 Decimal 视为 JDBC 中的 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 |
LANGUAGE UI、GS、查询协调和 XP 使用的选择语言。输入语言应采用 BCP-47 格式。又名连字符格式。有关详细信息,请参见 LocaleUtil.java。 |
35 |
LOCK_TIMEOUT 尝试锁定资源时等待秒数,然后超时并中止语句。值为 0 会关闭锁定等待,即该语句必须立即获取锁或中止。如果需要由该语句锁定多个资源,则超时将分别应用于每个锁定尝试。 |
36 |
MULTI_STATEMENT_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 如果为真,则忽略带引号的标识符的大小写 |
45 |
ROWS_PER_RESULTSET 结果集中行数的最大值 |
46 |
SEARCH_PATH 不合格对象引用的搜索路径。 |
47 |
SHOW_EXTERNAL_TABLE_KIND_AS_TABLE 通过 SHOW TABLES 和 SHOW OBJECTS 更改外部表 KIND 信息的显示方式。如果为真,则外部表的 KIND 列显示为 TABLE,否则显示为 EXTERNAL_TABLE。 |
48 |
SIMULATED_DATA_SHARING_CONSUMER 数据共享视图将返回行,就像在指定的使用者帐户中执行一样。 |
49 |
SNOWPARK_LAZY_ANALYSIS 为 Snowpark 启用延迟结果架构分析 |
50 |
STATEMENT_QUEUED_TIMEOUT_IN_SECONDS 排队语句的超时时间以秒为单位:如果语句在仓库中排队时间长于此时间,则会自动取消;如果设置为零,则会被禁用。 |
51 |
STATEMENT_TIMEOUT_IN_SECONDS 语句的超时时间以秒为单位:如果语句运行时间过长,则会自动取消;如果设置为零,则会强制执行最大值 (604800)。 |
52 |
STRICT_JSON_OUTPUT JSON 输出严格遵守规范。 |
53 |
TIMESTAMP_DAY_IS_ALWAYS_24H 如果设置,则对日期进行算术运算始终使用每天 24 小时,可能不会保留时间(由于夏令时更改) |
54 |
TIMESTAMP_INPUT_FORMAT input format for timestamp |
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 |
TIMEZONE time zone |
61 |
TIME_INPUT_FORMAT input format for time |
62 |
TIME_OUTPUT_FORMAT display format for time |
63 |
TRANSACTION_ABORT_ON_ERROR 如果此参数为真并且在非自动提交事务中发出的语句返回错误,则非自动提交事务将中止。在该事务中发出的所有语句都将失败,直到执行提交或回滚语句来关闭该事务。 |
64 |
TRANSACTION_DEFAULT_ISOLATION_LEVEL 当启动交易时默认隔离级别,在未指定隔离级别时 |
65 |
TWO_DIGIT_CENTURY_START 对于两位数日期,定义世纪开始年份,例如,当设置为 1980 时:- 解析字符串 '79' 将产生 2079 - 解析字符串 '80' 将产生 1980 |
66 |
UI_QUERY_RESULT_FORMAT 用于序列化查询结果以发送回 Python 连接器的格式 |
67 |
UNSUPPORTED_DDL_ACTION 遇到不受支持的 DDL 语句时采取的操作 |
68 |
USE_CACHED_RESULT 如果启用,只要原始结果尚未过期,查询结果便可在同一查询的连续调用之间重用 |
69 |
WEEK_OF_YEAR_POLICY 定义将星期分配给年的策略:0:该星期必须在给定年份中有 4 天;1:1 月 1 日所在的星期始终属于给定年份。 |
70 |
WEEK_START 定义星期的第一天:0:传统 Snowflake 行为;1:星期一 .. 7:星期日。 |