@clickzetta/cz-cli-linux-x64 0.3.2 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/bin/cz-cli +0 -0
  2. package/package.json +1 -1
  3. package/bin/skills/clickzetta-access-control/SKILL.md +0 -243
  4. package/bin/skills/clickzetta-access-control/references/dynamic-masking.md +0 -86
  5. package/bin/skills/clickzetta-access-control/references/grant-revoke.md +0 -103
  6. package/bin/skills/clickzetta-access-control/references/role-management.md +0 -66
  7. package/bin/skills/clickzetta-access-control/references/user-management.md +0 -61
  8. package/bin/skills/clickzetta-ai-vector-search/SKILL.md +0 -160
  9. package/bin/skills/clickzetta-ai-vector-search/references/vector-search.md +0 -155
  10. package/bin/skills/clickzetta-app-python-sdk/SKILL.md +0 -153
  11. package/bin/skills/clickzetta-app-python-sdk/references/bulkload.md +0 -196
  12. package/bin/skills/clickzetta-app-python-sdk/references/connector.md +0 -143
  13. package/bin/skills/clickzetta-app-python-sdk/references/realtime.md +0 -122
  14. package/bin/skills/clickzetta-batch-sync-pipeline/SKILL.md +0 -293
  15. package/bin/skills/clickzetta-bi-connect/SKILL.md +0 -176
  16. package/bin/skills/clickzetta-bi-connect/references/bi-tools.md +0 -170
  17. package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +0 -450
  18. package/bin/skills/clickzetta-concepts/SKILL.md +0 -282
  19. package/bin/skills/clickzetta-concepts/references/brands-and-endpoints.md +0 -79
  20. package/bin/skills/clickzetta-concepts/references/object-model.md +0 -311
  21. package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +0 -165
  22. package/bin/skills/clickzetta-data-lifecycle/SKILL.md +0 -211
  23. package/bin/skills/clickzetta-data-lifecycle/references/lifecycle-reference.md +0 -175
  24. package/bin/skills/clickzetta-data-recovery/SKILL.md +0 -215
  25. package/bin/skills/clickzetta-data-recovery/evals/evals.json +0 -35
  26. package/bin/skills/clickzetta-data-science/SKILL.md +0 -125
  27. package/bin/skills/clickzetta-data-science/references/bitmap-profile.md +0 -146
  28. package/bin/skills/clickzetta-data-science/references/data-patterns.md +0 -110
  29. package/bin/skills/clickzetta-data-science/references/setup.md +0 -160
  30. package/bin/skills/clickzetta-data-science/references/stats-functions.md +0 -195
  31. package/bin/skills/clickzetta-data-science/references/write-and-infer.md +0 -122
  32. package/bin/skills/clickzetta-data-science/references/zettapark-api.md +0 -156
  33. package/bin/skills/clickzetta-data-sharing/SKILL.md +0 -160
  34. package/bin/skills/clickzetta-data-sharing/references/share-ddl.md +0 -134
  35. package/bin/skills/clickzetta-dba-guide/SKILL.md +0 -540
  36. package/bin/skills/clickzetta-dw-modeling/SKILL.md +0 -259
  37. package/bin/skills/clickzetta-dw-modeling/references/modeling-patterns.md +0 -100
  38. package/bin/skills/clickzetta-dynamic-table/SKILL.md +0 -86
  39. package/bin/skills/clickzetta-dynamic-table/best-practices/dimension-table-join-guide.md +0 -257
  40. package/bin/skills/clickzetta-dynamic-table/best-practices/medallion-and-stream-patterns.md +0 -124
  41. package/bin/skills/clickzetta-dynamic-table/best-practices/non-partitioned-merge-into-warning.md +0 -96
  42. package/bin/skills/clickzetta-dynamic-table/best-practices/performance-optimization.md +0 -109
  43. package/bin/skills/clickzetta-dynamic-table/dt-creator/SKILL.md +0 -15
  44. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/dt-declaration-strategy.md +0 -185
  45. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/incremental-config-reference.md +0 -429
  46. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/refresh-history-guide.md +0 -268
  47. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/sql-limitations.md +0 -80
  48. package/bin/skills/clickzetta-dynamic-table/dynamic-table-alter/SKILL.md +0 -190
  49. package/bin/skills/clickzetta-external-catalog/SKILL.md +0 -120
  50. package/bin/skills/clickzetta-external-catalog/references/external-catalog-ddl.md +0 -130
  51. package/bin/skills/clickzetta-external-function/SKILL.md +0 -203
  52. package/bin/skills/clickzetta-external-function/references/external-function-ddl.md +0 -171
  53. package/bin/skills/clickzetta-file-import-pipeline/SKILL.md +0 -117
  54. package/bin/skills/clickzetta-index-manager/SKILL.md +0 -140
  55. package/bin/skills/clickzetta-index-manager/references/bloomfilter-index.md +0 -67
  56. package/bin/skills/clickzetta-index-manager/references/index-management.md +0 -73
  57. package/bin/skills/clickzetta-index-manager/references/inverted-index.md +0 -80
  58. package/bin/skills/clickzetta-index-manager/references/vector-index.md +0 -81
  59. package/bin/skills/clickzetta-information-schema/SKILL.md +0 -367
  60. package/bin/skills/clickzetta-information-schema/references/instance-views-reference.md +0 -276
  61. package/bin/skills/clickzetta-information-schema/references/metering-views-reference.md +0 -137
  62. package/bin/skills/clickzetta-information-schema/references/views-reference.md +0 -271
  63. package/bin/skills/clickzetta-java-sdk/SKILL.md +0 -186
  64. package/bin/skills/clickzetta-java-sdk/references/bulkload.md +0 -163
  65. package/bin/skills/clickzetta-java-sdk/references/realtime.md +0 -212
  66. package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +0 -531
  67. package/bin/skills/clickzetta-kafka-ingest-pipeline/references/kafka-pipe-syntax.md +0 -186
  68. package/bin/skills/clickzetta-lakehouse-connect/SKILL.md +0 -218
  69. package/bin/skills/clickzetta-lakehouse-connect/evals/evals.json +0 -35
  70. package/bin/skills/clickzetta-lakehouse-connect/references/config-file.md +0 -435
  71. package/bin/skills/clickzetta-lakehouse-connect/references/jdbc.md +0 -478
  72. package/bin/skills/clickzetta-lakehouse-connect/references/python-sdk.md +0 -225
  73. package/bin/skills/clickzetta-lakehouse-connect/references/sqlalchemy.md +0 -468
  74. package/bin/skills/clickzetta-lakehouse-connect/references/zettapark-session.md +0 -445
  75. package/bin/skills/clickzetta-manage-comments/SKILL.md +0 -219
  76. package/bin/skills/clickzetta-metadata-query/SKILL.md +0 -298
  77. package/bin/skills/clickzetta-metadata-query/references/show-desc-reference.md +0 -326
  78. package/bin/skills/clickzetta-monitoring/SKILL.md +0 -199
  79. package/bin/skills/clickzetta-monitoring/references/job-history-analysis.md +0 -97
  80. package/bin/skills/clickzetta-monitoring/references/show-jobs.md +0 -48
  81. package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +0 -402
  82. package/bin/skills/clickzetta-query-optimizer/SKILL.md +0 -156
  83. package/bin/skills/clickzetta-query-optimizer/references/explain.md +0 -56
  84. package/bin/skills/clickzetta-query-optimizer/references/hints-and-sortkey.md +0 -78
  85. package/bin/skills/clickzetta-query-optimizer/references/optimize.md +0 -65
  86. package/bin/skills/clickzetta-query-optimizer/references/result-cache.md +0 -49
  87. package/bin/skills/clickzetta-query-optimizer/references/show-jobs.md +0 -42
  88. package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +0 -197
  89. package/bin/skills/clickzetta-semantic-view/SKILL.md +0 -207
  90. package/bin/skills/clickzetta-semantic-view/references/semantic-view-reference.md +0 -167
  91. package/bin/skills/clickzetta-spark-flink-connector/SKILL.md +0 -92
  92. package/bin/skills/clickzetta-spark-flink-connector/references/flink.md +0 -147
  93. package/bin/skills/clickzetta-spark-flink-connector/references/spark.md +0 -132
  94. package/bin/skills/clickzetta-sql-pipeline-manager/SKILL.md +0 -353
  95. package/bin/skills/clickzetta-sql-pipeline-manager/evals/evals.json +0 -166
  96. package/bin/skills/clickzetta-sql-pipeline-manager/references/dynamic-table.md +0 -173
  97. package/bin/skills/clickzetta-sql-pipeline-manager/references/materialized-view.md +0 -129
  98. package/bin/skills/clickzetta-sql-pipeline-manager/references/pipe.md +0 -160
  99. package/bin/skills/clickzetta-sql-pipeline-manager/references/table-stream.md +0 -123
  100. package/bin/skills/clickzetta-sql-syntax-guide/SKILL.md +0 -172
  101. package/bin/skills/clickzetta-sql-syntax-guide/references/ddl-reference.md +0 -350
  102. package/bin/skills/clickzetta-sql-syntax-guide/references/dml-reference.md +0 -279
  103. package/bin/skills/clickzetta-sql-syntax-guide/references/dql-reference.md +0 -504
  104. package/bin/skills/clickzetta-sql-syntax-guide/references/functions-reference.md +0 -372
  105. package/bin/skills/clickzetta-sql-syntax-guide/references/migration-databricks.md +0 -260
  106. package/bin/skills/clickzetta-sql-syntax-guide/references/migration-snowflake.md +0 -382
  107. package/bin/skills/clickzetta-sql-syntax-guide/references/vs-snowflake.md +0 -346
  108. package/bin/skills/clickzetta-sql-syntax-guide/references/vs-spark.md +0 -229
  109. package/bin/skills/clickzetta-studio-overview/SKILL.md +0 -170
  110. package/bin/skills/clickzetta-studio-overview/references/studio-modules.md +0 -173
  111. package/bin/skills/clickzetta-table-stream-pipeline/SKILL.md +0 -155
  112. package/bin/skills/clickzetta-vcluster-manager/SKILL.md +0 -212
  113. package/bin/skills/clickzetta-vcluster-manager/references/vc-cache.md +0 -54
  114. package/bin/skills/clickzetta-vcluster-manager/references/vcluster-ddl.md +0 -150
  115. package/bin/skills/clickzetta-volume-manager/SKILL.md +0 -249
  116. package/bin/skills/clickzetta-volume-manager/references/volume-ddl.md +0 -194
  117. package/bin/skills/clickzetta-zettapark/SKILL.md +0 -248
  118. package/bin/skills/clickzetta-zettapark/references/zettapark-api.md +0 -283
@@ -1,504 +0,0 @@
1
- # DQL 完整语法参考
2
-
3
- > 基于 ClickZetta Lakehouse 产品文档整理,含与 Snowflake / Spark SQL 的差异标注
4
-
5
- ---
6
-
7
- ## SELECT 基本语法
8
-
9
- ```sql
10
- [WITH cte_name AS (SELECT ...) [, ...]]
11
- SELECT
12
- [/*+ HINTS */]
13
- [ALL | DISTINCT]
14
- select_expr [, ...]
15
- [EXCEPT (col1, col2, ...)]
16
- FROM table_reference
17
- [WHERE condition]
18
- [GROUP BY [GROUPING SETS | ROLLUP | CUBE] {col | expr | position}]
19
- [HAVING condition]
20
- [ORDER BY col [ASC | DESC] [NULLS FIRST | NULLS LAST] [, ...]]
21
- [LIMIT n [OFFSET m]]
22
- ```
23
-
24
- ---
25
-
26
- ## SELECT 扩展
27
-
28
- ### EXCEPT(排除列)
29
-
30
- ```sql
31
- -- 排除指定列(ClickZetta 特有,Snowflake/Spark 也支持)
32
- SELECT * EXCEPT(password, secret_key) FROM users;
33
- SELECT * EXCEPT(meta, tags) FROM orders;
34
- ```
35
-
36
- ### DISTINCT
37
-
38
- ```sql
39
- SELECT DISTINCT customer_id FROM orders;
40
- SELECT ALL customer_id FROM orders; -- 默认,保留重复
41
- ```
42
-
43
- ### LIMIT / OFFSET
44
-
45
- ```sql
46
- SELECT * FROM orders LIMIT 100;
47
- SELECT * FROM orders LIMIT 100 OFFSET 200; -- 跳过前200行
48
-
49
- -- ⚠️ ClickZetta 不支持 Snowflake 的 TOP N 语法
50
- -- Snowflake: SELECT TOP 10 * FROM orders;
51
- -- ClickZetta: SELECT * FROM orders LIMIT 10;
52
- ```
53
-
54
- ---
55
-
56
- ## FROM 子句
57
-
58
- ### JOIN
59
-
60
- ```sql
61
- -- INNER JOIN
62
- SELECT o.id, c.name FROM orders o
63
- INNER JOIN customers c ON o.customer_id = c.id;
64
-
65
- -- LEFT / RIGHT / FULL OUTER JOIN
66
- SELECT o.id, c.name FROM orders o
67
- LEFT JOIN customers c ON o.customer_id = c.id;
68
-
69
- -- CROSS JOIN
70
- SELECT * FROM a CROSS JOIN b;
71
-
72
- -- SELF JOIN
73
- SELECT a.id, b.id FROM orders a JOIN orders b ON a.customer_id = b.customer_id;
74
-
75
- -- USING 语法
76
- SELECT * FROM orders JOIN customers USING (customer_id);
77
-
78
- -- NATURAL JOIN
79
- SELECT * FROM orders NATURAL JOIN customers;
80
-
81
- -- SEMI JOIN(用 EXISTS 或 IN 实现)
82
- SELECT * FROM orders WHERE EXISTS (
83
- SELECT 1 FROM customers WHERE customers.id = orders.customer_id
84
- );
85
-
86
- -- ANTI JOIN(用 NOT EXISTS 或 NOT IN 实现)
87
- SELECT * FROM orders WHERE NOT EXISTS (
88
- SELECT 1 FROM customers WHERE customers.id = orders.customer_id
89
- );
90
- ```
91
-
92
- **与 Snowflake 差异:**
93
- - Snowflake 支持 `ASOF JOIN`(时序连接);ClickZetta 不支持
94
- - Snowflake 支持 `MATCH_RECOGNIZE`;ClickZetta 不支持
95
-
96
- ### LATERAL VIEW(展开数组/MAP)
97
-
98
- ```sql
99
- -- EXPLODE 展开数组
100
- SELECT e.id, s.skill
101
- FROM employees e
102
- LATERAL VIEW EXPLODE(e.skills) s AS skill;
103
-
104
- -- POSEXPLODE 带位置索引
105
- SELECT e.id, ps.pos, ps.skill
106
- FROM employees e
107
- LATERAL VIEW POSEXPLODE(e.skills) ps AS pos, skill;
108
-
109
- -- OUTER(空数组也保留行)
110
- SELECT e.id, s.skill
111
- FROM employees e
112
- LATERAL VIEW OUTER EXPLODE(e.skills) s AS skill;
113
-
114
- -- 展开 MAP
115
- SELECT id, k, v
116
- FROM t
117
- LATERAL VIEW EXPLODE(meta_map) m AS k, v;
118
- ```
119
-
120
- **与 Snowflake 差异:**
121
- - Snowflake 用 `LATERAL FLATTEN(input => arr)`;ClickZetta 用 `LATERAL VIEW EXPLODE(arr)`
122
- - Snowflake `f.value::STRING`;ClickZetta 直接用列别名
123
-
124
- **与 Spark SQL 差异:**
125
- - 语法完全相同(ClickZetta 兼容 Hive/Spark 风格)
126
-
127
- ### TABLESAMPLE
128
-
129
- ```sql
130
- -- SYSTEM 模式:按百分比采样(文件级)
131
- SELECT * FROM orders TABLESAMPLE (10 PERCENT);
132
-
133
- -- ROW 模式:按行数采样
134
- SELECT * FROM orders TABLESAMPLE (100 ROWS);
135
- ```
136
-
137
- ### SEQUENCE(生成序列)
138
-
139
- ```sql
140
- -- 生成整数序列(返回 ARRAY)
141
- SELECT SEQUENCE(1, 5); -- [1,2,3,4,5]
142
- SELECT SEQUENCE(0, 10, 2); -- [0,2,4,6,8,10]
143
-
144
- -- 展开为行(ClickZetta 用 EXPLODE(SEQUENCE(...)),无 GENERATE_SERIES)
145
- SELECT EXPLODE(SEQUENCE(1, 5)) AS n; -- 5行:1,2,3,4,5
146
- ```
147
-
148
- ### EXPLODE 直接在 SELECT 中使用
149
-
150
- ```sql
151
- -- Spark 风格:EXPLODE 直接在 SELECT 中
152
- SELECT EXPLODE(ARRAY(1, 2, 3)) AS val;
153
- SELECT POSEXPLODE(ARRAY('a', 'b', 'c')) AS (pos, val);
154
-
155
- -- 等价的 LATERAL VIEW 写法
156
- SELECT val FROM (SELECT ARRAY(1,2,3) AS arr) t
157
- LATERAL VIEW EXPLODE(arr) lv AS val;
158
- ```
159
-
160
-
161
-
162
- ## WHERE 子句
163
-
164
- ```sql
165
- -- 基本条件
166
- WHERE amount > 100 AND status = 'completed'
167
- WHERE status IN ('pending', 'processing')
168
- WHERE status NOT IN ('cancelled', 'refunded')
169
- WHERE amount BETWEEN 100 AND 1000
170
- WHERE name LIKE '%Alice%'
171
- WHERE name NOT LIKE '%test%'
172
- WHERE tags IS NULL
173
- WHERE tags IS NOT NULL
174
-
175
- -- 正则匹配
176
- WHERE name RLIKE '^[A-Z].*'
177
- WHERE name REGEXP '^[A-Z].*' -- 同 RLIKE
178
-
179
- -- 子查询
180
- WHERE customer_id IN (SELECT id FROM customers WHERE tier = 'VIP')
181
- WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id)
182
- ```
183
-
184
- **与 Snowflake 差异:**
185
- - Snowflake `ILIKE`(不区分大小写 LIKE)→ ClickZetta `ILIKE` ✅ 同样支持
186
- - Snowflake `RLIKE` → ClickZetta 同样支持 `RLIKE` / `REGEXP`
187
-
188
- ---
189
-
190
- ## GROUP BY 扩展
191
-
192
- ```sql
193
- -- 基本分组
194
- SELECT region, SUM(amount) FROM orders GROUP BY region;
195
- SELECT region, SUM(amount) FROM orders GROUP BY 1; -- 按位置
196
-
197
- -- GROUP BY ALL(自动推断所有非聚合列)
198
- SELECT year, month, region, SUM(amount) FROM orders GROUP BY ALL;
199
-
200
- -- GROUPING SETS(多维分组)
201
- SELECT region, product, SUM(sales)
202
- FROM orders
203
- GROUP BY GROUPING SETS ((region, product), (region), (product), ());
204
-
205
- -- ROLLUP(层级汇总)
206
- SELECT region, city, SUM(amount)
207
- FROM orders
208
- GROUP BY ROLLUP (region, city);
209
- -- 等价于 GROUPING SETS ((region, city), (region), ())
210
-
211
- -- CUBE(全组合汇总)
212
- SELECT region, product, channel, SUM(amount)
213
- FROM orders
214
- GROUP BY CUBE (region, product, channel);
215
-
216
- -- HAVING
217
- SELECT customer_id, SUM(amount) AS total
218
- FROM orders
219
- GROUP BY customer_id
220
- HAVING total > 10000;
221
- ```
222
-
223
- **与 Snowflake 差异:**
224
- - `GROUP BY ALL` 两者都支持
225
- - `GROUPING SETS / ROLLUP / CUBE` 两者都支持
226
-
227
- ---
228
-
229
- ## ORDER BY
230
-
231
- ```sql
232
- SELECT * FROM orders ORDER BY amount DESC;
233
- SELECT * FROM orders ORDER BY amount DESC NULLS LAST;
234
- SELECT * FROM orders ORDER BY amount ASC NULLS FIRST;
235
- SELECT * FROM orders ORDER BY 1 DESC, 2 ASC; -- 按位置
236
- ```
237
-
238
- ---
239
-
240
- ## CTE(公用表表达式)
241
-
242
- ```sql
243
- -- 基本 CTE
244
- WITH
245
- monthly AS (
246
- SELECT DATE_TRUNC('month', created_at) AS month, SUM(amount) AS total
247
- FROM orders GROUP BY 1
248
- ),
249
- ranked AS (
250
- SELECT *, RANK() OVER (ORDER BY total DESC) AS rnk FROM monthly
251
- )
252
- SELECT * FROM ranked WHERE rnk <= 5;
253
-
254
- -- ⚠️ 递归 CTE(ClickZetta 不支持)
255
- -- Snowflake/Databricks/Spark SQL 支持:
256
- WITH RECURSIVE org_tree AS (
257
- SELECT id, name, parent_id, 0 AS level
258
- FROM employees WHERE parent_id IS NULL
259
- UNION ALL
260
- SELECT e.id, e.name, e.parent_id, t.level + 1
261
- FROM employees e JOIN org_tree t ON e.parent_id = t.id
262
- )
263
- SELECT * FROM org_tree ORDER BY level, id;
264
-
265
- -- ClickZetta 替代方案:用 Python/ZettaPark 迭代实现
266
- -- 或用多层 CTE 模拟有限深度的递归
267
- WITH
268
- level0 AS (SELECT id, name, parent_id, 0 AS level FROM employees WHERE parent_id IS NULL),
269
- level1 AS (SELECT e.id, e.name, e.parent_id, 1 AS level FROM employees e JOIN level0 t ON e.parent_id = t.id),
270
- level2 AS (SELECT e.id, e.name, e.parent_id, 2 AS level FROM employees e JOIN level1 t ON e.parent_id = t.id)
271
- SELECT * FROM level0 UNION ALL SELECT * FROM level1 UNION ALL SELECT * FROM level2;
272
- ```
273
-
274
- **与 Snowflake 差异:**
275
- - Snowflake 支持 `WITH RECURSIVE`;ClickZetta ❌ 不支持递归 CTE
276
- - ClickZetta 仅支持非递归 CTE(普通 WITH 子句)
277
- - 递归场景需用 Python/ZettaPark 迭代实现,或用多层 CTE 模拟有限深度
278
-
279
- ---
280
-
281
- ## 窗口函数
282
-
283
- ```sql
284
- -- 基本语法
285
- function_name() OVER (
286
- [PARTITION BY col1, col2]
287
- [ORDER BY col3 [ASC|DESC]]
288
- [ROWS|RANGE BETWEEN start AND end]
289
- )
290
-
291
- -- 排名函数
292
- ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC)
293
- RANK() OVER (ORDER BY score DESC)
294
- DENSE_RANK() OVER (ORDER BY score DESC)
295
- NTILE(4) OVER (ORDER BY amount)
296
- PERCENT_RANK() OVER (ORDER BY amount)
297
- CUME_DIST() OVER (ORDER BY amount)
298
-
299
- -- 聚合窗口
300
- SUM(amount) OVER (PARTITION BY customer_id)
301
- AVG(amount) OVER (PARTITION BY dept ORDER BY date
302
- ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
303
- COUNT(*) OVER (PARTITION BY region)
304
- MAX(amount) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
305
-
306
- -- 分析函数
307
- LAG(amount, 1, 0) OVER (ORDER BY date) -- 前1行,默认0
308
- LEAD(amount, 1) OVER (ORDER BY date) -- 后1行
309
- FIRST_VALUE(amount) OVER (ORDER BY date)
310
- LAST_VALUE(amount) OVER (ORDER BY date
311
- ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
312
- NTH_VALUE(amount, 3) OVER (ORDER BY date)
313
-
314
- -- Window Frame
315
- ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW -- 从头到当前行
316
- ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING -- 前后3行
317
- RANGE BETWEEN INTERVAL 7 DAY PRECEDING AND CURRENT ROW -- 7天内
318
- ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING -- 当前行到末尾
319
- ```
320
-
321
- **与 Snowflake 差异:**
322
- - ClickZetta 同样支持 `QUALIFY` 直接过滤窗口函数结果:
323
- ```sql
324
- -- 两者都支持
325
- SELECT * FROM orders QUALIFY ROW_NUMBER() OVER (PARTITION BY cust ORDER BY dt DESC) = 1;
326
- -- 子查询写法也可以
327
- SELECT * FROM (
328
- SELECT *, ROW_NUMBER() OVER (PARTITION BY cust ORDER BY dt DESC) AS rn FROM orders
329
- ) t WHERE rn = 1;
330
- ```
331
-
332
- ---
333
-
334
- ## 子查询
335
-
336
- ```sql
337
- -- 标量子查询
338
- SELECT id, (SELECT MAX(amount) FROM orders) AS max_amount FROM orders;
339
-
340
- -- IN 子查询
341
- SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE tier = 'VIP');
342
-
343
- -- EXISTS 子查询
344
- SELECT * FROM customers c
345
- WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
346
-
347
- -- 相关子查询
348
- SELECT * FROM orders o
349
- WHERE amount > (SELECT AVG(amount) FROM orders WHERE customer_id = o.customer_id);
350
-
351
- -- FROM 子查询(派生表)
352
- SELECT t.region, t.total FROM (
353
- SELECT region, SUM(amount) AS total FROM orders GROUP BY region
354
- ) t WHERE t.total > 100000;
355
- ```
356
-
357
- ---
358
-
359
- ## JSON 查询
360
-
361
- ```sql
362
- -- 访问 JSON 字段(用 [] 而非 Snowflake 的 :)
363
- SELECT data['address']['city'] AS city FROM users;
364
- SELECT data['phoneNumbers'][0]['number'] AS phone FROM users;
365
- SELECT data['scores'][2] AS third_score FROM users;
366
-
367
- -- 构建 JSON
368
- SELECT PARSE_JSON('{"name":"Alice","age":30}') AS info;
369
- SELECT TO_JSON(STRUCT(name, age)) AS json_str FROM users;
370
-
371
- -- 类型转换
372
- SELECT CAST(data['age'] AS INT) AS age FROM users;
373
- SELECT data['amount']::DOUBLE AS amount FROM orders; -- :: 语法也支持
374
-
375
- -- JSON 聚合
376
- SELECT customer_id, TO_JSON(COLLECT_LIST(STRUCT(id, amount))) AS orders_json
377
- FROM orders GROUP BY customer_id;
378
- ```
379
-
380
- **与 Snowflake 差异:**
381
- - Snowflake `data:key` 冒号语法 → ClickZetta `data['key']` 方括号语法
382
- - Snowflake `data:key::STRING` → ClickZetta `CAST(data['key'] AS STRING)` 或 `data['key']::STRING`
383
- - Snowflake `OBJECT_CONSTRUCT(k, v)` → ClickZetta `MAP_AGG(k, v)` 或 `STRUCT(...)` + `TO_JSON`
384
- - Snowflake `PARSE_JSON` → ClickZetta 相同
385
-
386
- ---
387
-
388
- ## STRUCT / ARRAY / MAP 操作
389
-
390
- ```sql
391
- -- 构建 STRUCT
392
- SELECT STRUCT(name, age, email) AS user_info FROM users; -- ✅ 支持(无字段名,默认 col1, col2...)
393
- SELECT named_struct('name', name, 'age', age, 'email', email) AS user_info FROM users; -- ✅ 支持(有字段名)
394
- -- ⚠️ SELECT STRUCT(name AS n, age AS a) 不支持 AS 语法(Snowflake/Spark 支持)
395
-
396
- -- 构建 ARRAY / MAP
397
- SELECT ARRAY(1, 2, 3) AS nums;
398
- SELECT MAP('k1', 1, 'k2', 2) AS m;
399
-
400
- -- 访问
401
- SELECT address.city FROM users; -- STRUCT 字段
402
- SELECT skills[0] FROM employees; -- ARRAY 索引(0-based)
403
- SELECT meta_map['key'] FROM t; -- MAP 访问
404
-
405
- -- 数组函数
406
- SELECT SIZE(skills) AS cnt FROM employees;
407
- SELECT ARRAY_CONTAINS(skills, 'Python') FROM employees;
408
- SELECT ARRAY_AGG(order_id) FROM orders GROUP BY customer_id;
409
- SELECT COLLECT_LIST(order_id) FROM orders GROUP BY customer_id; -- 同 ARRAY_AGG
410
- SELECT COLLECT_SET(status) FROM orders GROUP BY customer_id; -- 去重
411
- SELECT SORT_ARRAY(skills) FROM employees;
412
- SELECT ARRAY_DISTINCT(tags) FROM articles;
413
- SELECT ARRAY_UNION(a, b) FROM t;
414
- SELECT ARRAY_INTERSECT(a, b) FROM t;
415
- SELECT ARRAY_EXCEPT(a, b) FROM t;
416
- SELECT FLATTEN(nested_array) FROM t; -- 展平嵌套数组
417
-
418
- -- 高阶函数
419
- SELECT TRANSFORM(skills, x -> UPPER(x)) FROM employees;
420
- SELECT FILTER(scores, x -> x > 90) FROM students;
421
- -- ⚠️ AGGREGATE(arr, init, (acc,x)->...) 不支持,用 ARRAY_AGG + SUM 替代
422
- -- ⚠️ REDUCE(arr, init, (acc,x)->...) 不支持(Spark 名称)
423
- SELECT EXISTS(scores, x -> x > 100) FROM students;
424
- SELECT FORALL(scores, x -> x >= 0) FROM students;
425
- SELECT ZIP_WITH(a, b, (x, y) -> x + y) FROM t;
426
-
427
- -- MAP 函数
428
- SELECT MAP_KEYS(meta) FROM t;
429
- SELECT MAP_VALUES(meta) FROM t;
430
- SELECT MAP_ENTRIES(meta) FROM t;
431
- SELECT MAP_CONCAT(m1, m2) FROM t;
432
- SELECT MAP_FILTER(meta, (k, v) -> v > 0) FROM t;
433
- SELECT MAP_TRANSFORM_VALUES(meta, (k, v) -> v * 2) FROM t;
434
- ```
435
-
436
- **与 Snowflake 差异:**
437
- - Snowflake `ARRAY_SIZE` → ClickZetta `SIZE`
438
- - Snowflake `ARRAY_CONTAINS(val, arr)` 参数顺序相反 → ClickZetta `ARRAY_CONTAINS(arr, val)`
439
- - Snowflake `OBJECT_KEYS(obj)` → ClickZetta `MAP_KEYS(map)`
440
- - Snowflake 无高阶函数(TRANSFORM/FILTER);ClickZetta 支持
441
-
442
- ---
443
-
444
- ## PIVOT / UNPIVOT
445
-
446
- ```sql
447
- -- ClickZetta 不支持原生 PIVOT 语法
448
- -- 用 CASE WHEN 实现行转列
449
- SELECT
450
- product,
451
- SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) AS Jan,
452
- SUM(CASE WHEN month = 'Feb' THEN amount ELSE 0 END) AS Feb,
453
- SUM(CASE WHEN month = 'Mar' THEN amount ELSE 0 END) AS Mar
454
- FROM sales
455
- GROUP BY product;
456
-
457
- -- UNPIVOT 用 LATERAL VIEW + STACK 实现
458
- SELECT id, month, amount
459
- FROM sales
460
- LATERAL VIEW STACK(3,
461
- 'Jan', jan_amount,
462
- 'Feb', feb_amount,
463
- 'Mar', mar_amount
464
- ) t AS month, amount;
465
- ```
466
-
467
- **与 Snowflake 差异:**
468
- - Snowflake 原生支持 `PIVOT` / `UNPIVOT` 语法;ClickZetta 不支持,需手动实现
469
-
470
- ---
471
-
472
- ## SET 操作
473
-
474
- ```sql
475
- -- ClickZetta 支持 UNION / UNION ALL / INTERSECT / EXCEPT 集合操作
476
- SELECT id FROM orders_2023
477
- UNION ALL
478
- SELECT id FROM orders_2024;
479
-
480
- SELECT id FROM orders_2023
481
- UNION
482
- SELECT id FROM orders_2024;
483
-
484
- SELECT id FROM orders_2023
485
- INTERSECT
486
- SELECT id FROM orders_2024;
487
-
488
- SELECT id FROM orders_2023
489
- EXCEPT
490
- SELECT id FROM orders_2024;
491
- ```
492
-
493
- ---
494
-
495
- ## HINTS(查询提示)
496
-
497
- ```sql
498
- -- MAPJOIN(强制广播小表)
499
- SELECT /*+ MAPJOIN(small_table) */ *
500
- FROM large_table l JOIN small_table s ON l.id = s.id;
501
-
502
- -- 向量索引探索因子
503
- SET cz.vector.index.search.ef = 128;
504
- ```