@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,346 +0,0 @@
1
- # ClickZetta Lakehouse vs Snowflake SQL 差异
2
-
3
- > 来源:产品文档 + 迁移实践
4
-
5
- ## 对象概念映射
6
-
7
- | ClickZetta Lakehouse | Snowflake | 说明 |
8
- |---|---|---|
9
- | WORKSPACE | DATABASE | 工作空间 ≈ 数据库 |
10
- | SCHEMA | SCHEMA | 相同 |
11
- | VCLUSTER | WAREHOUSE | 计算集群 |
12
- | STORAGE CONNECTION | STORAGE INTEGRATION | 对象存储认证 |
13
- | VOLUME | STAGE | 文件存储区域 |
14
- | TABLE | TABLE | 相同 |
15
- | PIPE | SNOWPIPE | 持续导入管道 |
16
- | TABLE STREAM | STREAM | 变更数据捕获 |
17
- | DYNAMIC TABLE | DYNAMIC TABLE | 增量计算表(语法不同) |
18
- | Studio 任务 | TASK | 调度任务 |
19
-
20
- ---
21
-
22
- ## DDL 差异
23
-
24
- ### CREATE OR REPLACE vs IF NOT EXISTS
25
-
26
- ```sql
27
- -- Snowflake:支持 CREATE OR REPLACE
28
- CREATE OR REPLACE TABLE orders (id INT, amount DECIMAL);
29
-
30
- -- ClickZetta:不支持 CREATE OR REPLACE,用 IF NOT EXISTS
31
- CREATE TABLE IF NOT EXISTS orders (id INT, amount DECIMAL);
32
- -- 修改已有表用 ALTER TABLE
33
- ```
34
-
35
- ### 注释语法
36
-
37
- ```sql
38
- -- Snowflake:支持 // 和 ///
39
- // 这是注释
40
- /// 这也是注释
41
-
42
- -- ClickZetta:只支持 -- 和 /* */
43
- -- 这是注释
44
- /* 这也是注释 */
45
- ```
46
-
47
- ### 数据类型差异
48
-
49
- | ClickZetta | Snowflake | 说明 |
50
- |---|---|---|
51
- | `STRING` | `VARCHAR` / `TEXT` | ClickZetta 推荐用 STRING |
52
- | `TIMESTAMP` | `TIMESTAMP_LTZ` | 本地时区时间戳 |
53
- | `TIMESTAMP_NTZ` | `TIMESTAMP_NTZ` | 无时区时间戳 |
54
- | `JSON` | `VARIANT` | 半结构化数据 |
55
- | `ARRAY<T>` | `ARRAY` | ClickZetta 需指定元素类型 |
56
- | `MAP<K,V>` | `OBJECT` | 键值对 |
57
- | `STRUCT<f:T,...>` | `OBJECT` | 结构体 |
58
- | `VECTOR(FLOAT, N)` | 无原生支持 | 向量类型(ClickZetta 特有) |
59
- | `TINYINT` | `NUMBER(3,0)` | 1字节整数 |
60
- | `SMALLINT` | `NUMBER(5,0)` | 2字节整数 |
61
- | 无 `NUMBER` | `NUMBER(p,s)` | ClickZetta 用 `DECIMAL(p,s)` |
62
-
63
- ### ⚠️ 写入时隐式类型转换(重要差异)
64
-
65
- Snowflake 允许写入时字符串隐式转换为日期/布尔等类型,ClickZetta **不允许**:
66
-
67
- | 操作 | Snowflake | ClickZetta |
68
- |---|---|---|
69
- | INSERT 字符串→DATE | ✅ 允许 | ❌ 报错,需 `CAST` 或 `DATE '...'` |
70
- | INSERT 字符串→TIMESTAMP | ✅ 允许 | ❌ 报错,需 `CAST` 或 `TIMESTAMP '...'` |
71
- | INSERT 字符串→BOOLEAN | ✅ 允许 | ❌ 报错,需 `TRUE`/`FALSE` 或 `CAST` |
72
- | INSERT 字符串→INT | ✅ 允许 | ❌ 报错,需 `CAST('123' AS INT)` |
73
- | INSERT 字符串→JSON | ✅ 允许 | ❌ 报错,需 `PARSE_JSON(...)` 或 `CAST` |
74
- | UPDATE 字符串→DATE | ✅ 允许 | ❌ 报错,需 `CAST` |
75
- | WHERE 字符串=DATE | ✅ 允许 | ✅ 允许(查询中可隐式比较) |
76
-
77
- ### 建表语法差异
78
-
79
- ```sql
80
- -- Snowflake:CLUSTER BY
81
- CREATE TABLE orders (id INT, dt DATE)
82
- CLUSTER BY (dt);
83
-
84
- -- ClickZetta:CLUSTERED BY + PARTITIONED BY
85
- CREATE TABLE orders (
86
- id INT,
87
- dt DATE
88
- )
89
- PARTITIONED BY (dt)
90
- CLUSTERED BY (id) INTO 8 BUCKETS;
91
-
92
- -- ClickZetta 特有:Sort Key(内联索引)
93
- CREATE TABLE orders (
94
- id INT,
95
- amount DECIMAL,
96
- INDEX amount_bf (amount) USING BLOOM_FILTER
97
- );
98
- ```
99
-
100
- ---
101
-
102
- ## DML 差异
103
-
104
- ### INSERT
105
-
106
- ```sql
107
- -- 两者基本相同,ClickZetta 额外支持:
108
- INSERT OVERWRITE TABLE orders SELECT * FROM staging; -- 覆盖写入(Hive 风格)
109
- INSERT INTO orders PARTITION (dt='2024-01-01') VALUES (1, 100); -- 静态分区
110
- ```
111
-
112
- ### UPDATE
113
-
114
- ```sql
115
- -- Snowflake
116
- UPDATE orders SET amount = amount * 1.1 WHERE status = 'VIP';
117
-
118
- -- ClickZetta:相同语法,额外支持 ORDER BY + LIMIT
119
- UPDATE orders SET amount = amount * 1.1
120
- WHERE status = 'VIP'
121
- ORDER BY created_at DESC
122
- LIMIT 1000;
123
- ```
124
-
125
- ### MERGE INTO
126
-
127
- ```sql
128
- -- ClickZetta 限制:WHEN NOT MATCHED 只能有一个
129
- -- Snowflake 支持多个 WHEN NOT MATCHED
130
-
131
- -- ClickZetta MERGE 示例(⚠️ UPDATE 必须在 DELETE 之前)
132
- MERGE INTO target t
133
- USING source s ON t.id = s.id
134
- WHEN MATCHED THEN UPDATE SET t.amount = s.amount
135
- WHEN MATCHED AND s.action = 'DELETE' THEN DELETE
136
- WHEN NOT MATCHED THEN INSERT (id, amount) VALUES (s.id, s.amount);
137
- ```
138
-
139
- ---
140
-
141
- ## 查询语法差异
142
-
143
- ### SELECT 扩展
144
-
145
- ```sql
146
- -- ClickZetta 特有:SELECT * EXCEPT(col)
147
- SELECT * EXCEPT(sensitive_col) FROM users;
148
-
149
- -- ClickZetta 特有:GROUP BY ALL(自动推断分组列)
150
- SELECT year, month, SUM(amount)
151
- FROM orders
152
- GROUP BY ALL;
153
-
154
- -- 两者都支持:GROUPING SETS / ROLLUP / CUBE
155
- SELECT region, product, SUM(sales)
156
- FROM orders
157
- GROUP BY GROUPING SETS ((region), (product), ());
158
- ```
159
-
160
- ### JSON 查询
161
-
162
- ```sql
163
- -- Snowflake:VARIANT 类型,用 : 访问
164
- SELECT data:address:city FROM users;
165
- SELECT data[0]:name FROM users;
166
-
167
- -- ClickZetta:JSON 类型,用 [] 访问
168
- SELECT data['address']['city'] FROM users;
169
- SELECT data['phoneNumbers'][0]['number'] FROM users;
170
-
171
- -- 两者都支持 PARSE_JSON
172
- SELECT parse_json('{"name":"Alice"}')['name'];
173
- ```
174
-
175
- ### LATERAL VIEW(展开数组)
176
-
177
- ```sql
178
- -- ClickZetta(Hive 风格)
179
- SELECT e.id, s.skill
180
- FROM employees e
181
- LATERAL VIEW EXPLODE(e.skills) s AS skill;
182
-
183
- -- Snowflake(用 FLATTEN)
184
- SELECT e.id, f.value::STRING AS skill
185
- FROM employees e,
186
- LATERAL FLATTEN(input => e.skills) f;
187
- ```
188
-
189
- ### QUALIFY(窗口函数过滤)
190
-
191
- ```sql
192
- -- 两者都支持 QUALIFY
193
- SELECT * FROM orders
194
- QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) = 1;
195
- ```
196
-
197
- ### PIVOT / UNPIVOT
198
-
199
- ```sql
200
- -- Snowflake 原生支持 PIVOT
201
- SELECT * FROM sales
202
- PIVOT (SUM(amount) FOR month IN ('Jan', 'Feb', 'Mar'));
203
-
204
- -- ClickZetta:用 CASE WHEN 实现
205
- SELECT
206
- product,
207
- SUM(CASE WHEN month = 'Jan' THEN amount END) AS Jan,
208
- SUM(CASE WHEN month = 'Feb' THEN amount END) AS Feb
209
- FROM sales GROUP BY product;
210
- ```
211
-
212
- ---
213
-
214
- ## 流(Stream)差异
215
-
216
- ```sql
217
- -- Snowflake Stream 元数据字段
218
- METADATA$ACTION -- 'INSERT' / 'DELETE'
219
- METADATA$ISUPDATE -- TRUE/FALSE
220
- METADATA$ROW_ID -- 行唯一标识
221
-
222
- -- ClickZetta Table Stream 元数据字段
223
- __change_type -- 'INSERT' / 'UPDATE_BEFORE' / 'UPDATE_AFTER' / 'DELETE'
224
- __commit_version -- 提交版本号
225
- __commit_timestamp -- 提交时间戳
226
- ```
227
-
228
- ---
229
-
230
- ## 动态表(Dynamic Table)差异
231
-
232
- ```sql
233
- -- Snowflake Dynamic Table
234
- CREATE DYNAMIC TABLE product_sales
235
- TARGET_LAG = '1 minutes'
236
- WAREHOUSE = my_warehouse
237
- AS SELECT ...;
238
-
239
- -- ClickZetta Dynamic Table(不支持 TARGET_LAG)
240
- CREATE DYNAMIC TABLE product_sales
241
- REFRESH INTERVAL 1 MINUTE VCLUSTER default_ap
242
- AS SELECT ...;
243
- ```
244
-
245
- ---
246
-
247
- ## 对象存储(Stage vs Volume)
248
-
249
- ```sql
250
- -- Snowflake:Stage
251
- CREATE STAGE my_stage
252
- URL = 's3://bucket/path'
253
- STORAGE_INTEGRATION = my_integration;
254
-
255
- COPY INTO orders FROM @my_stage/data.csv;
256
-
257
- -- ClickZetta:Volume
258
- CREATE EXTERNAL VOLUME my_volume
259
- LOCATION = 'oss://bucket/path'
260
- USING CONNECTION my_oss_conn;
261
-
262
- COPY INTO orders FROM VOLUME my_volume USING CSV;
263
- ```
264
-
265
- ---
266
-
267
- ## 函数差异
268
-
269
- ### 日期函数
270
-
271
- ```sql
272
- -- Snowflake
273
- DATEADD(day, 7, order_date)
274
- DATEDIFF(day, start_date, end_date)
275
- DATE_TRUNC('month', order_date)
276
- TO_DATE('2024-01-01')
277
- CURRENT_TIMESTAMP()
278
-
279
- -- ClickZetta(兼容 Hive/Spark 风格,同时也支持 Snowflake 风格)
280
- DATEADD(day, 7, order_date) -- ✅ 与 Snowflake 相同语法也支持
281
- DATE_ADD(order_date, 7) -- 或 Hive 风格
282
- DATEDIFF(end_date, start_date) -- 注意参数顺序相反!
283
- DATE_TRUNC('month', order_date) -- 相同
284
- TO_DATE('2024-01-01') -- 相同
285
- CURRENT_TIMESTAMP() -- 相同,也支持 NOW()
286
- ```
287
-
288
- ### 字符串函数
289
-
290
- ```sql
291
- -- Snowflake
292
- CHARINDEX('sub', str) -- 查找子串位置
293
- EDITDISTANCE(s1, s2) -- 编辑距离
294
- SOUNDEX(str) -- 语音相似度
295
- INITCAP(str) -- 首字母大写
296
-
297
- -- ClickZetta
298
- INSTR(str, 'sub') -- 查找子串位置(Hive 风格)
299
- LOCATE('sub', str) -- 也支持
300
- LEVENSHTEIN(s1, s2) -- 编辑距离
301
- INITCAP(str) -- 相同
302
- ```
303
-
304
- ### 条件函数
305
-
306
- ```sql
307
- -- Snowflake
308
- IFF(condition, true_val, false_val)
309
- ZEROIFNULL(expr)
310
- NULLIFZERO(expr)
311
- DECODE(expr, val1, res1, val2, res2, default)
312
-
313
- -- ClickZetta
314
- IF(condition, true_val, false_val) -- 或 CASE WHEN
315
- COALESCE(expr, 0) -- 替代 ZEROIFNULL
316
- NULLIF(expr, 0) -- 替代 NULLIFZERO
317
- DECODE(expr, val1, res1, ...) -- 支持(兼容)
318
- ```
319
-
320
- ### 聚合函数
321
-
322
- ```sql
323
- -- Snowflake
324
- LISTAGG(col, ',') WITHIN GROUP (ORDER BY col)
325
- ARRAY_AGG(col)
326
- OBJECT_AGG(key, value)
327
- APPROX_COUNT_DISTINCT(col)
328
-
329
- -- ClickZetta
330
- GROUP_CONCAT(col ORDER BY col SEPARATOR ',') -- 替代 LISTAGG
331
- ARRAY_AGG(col) -- 相同
332
- MAP_AGG(key, value) -- 替代 OBJECT_AGG
333
- APPROX_COUNT_DISTINCT(col) -- 相同
334
- ```
335
-
336
- ---
337
-
338
- ## 权限体系差异
339
-
340
- | 概念 | ClickZetta | Snowflake |
341
- |---|---|---|
342
- | 顶层容器 | WORKSPACE | DATABASE |
343
- | 权限对象 | VCLUSTER / SCHEMA / TABLE / VIEW | WAREHOUSE / DATABASE / SCHEMA / TABLE |
344
- | 角色授予 | `GRANT ROLE r TO USER u` | `GRANT ROLE r TO USER u` |
345
- | 查看权限 | `SHOW GRANTS TO USER u` | `SHOW GRANTS TO USER u` |
346
- | 系统角色 | instance_admin / workspace_admin / workspace_dev / workspace_analyst | ACCOUNTADMIN / SYSADMIN / USERADMIN |
@@ -1,229 +0,0 @@
1
- # ClickZetta Lakehouse vs Spark SQL 差异
2
-
3
- > 来源:产品文档 + Spark Connector 文档
4
-
5
- ## 数据类型映射
6
-
7
- | ClickZetta | Spark SQL | 说明 |
8
- |---|---|---|
9
- | `BOOLEAN` | `BooleanType` | 相同 |
10
- | `TINYINT` | `ByteType` | 1字节 |
11
- | `SMALLINT` | `ShortType` | 2字节 |
12
- | `INT` | `IntegerType` | 4字节 |
13
- | `BIGINT` | `LongType` | 8字节 |
14
- | `FLOAT` | `FloatType` | 4字节浮点 |
15
- | `DOUBLE` | `DoubleType` | 8字节浮点 |
16
- | `DECIMAL(p,s)` | `DecimalType(p,s)` | 精确数值 |
17
- | `STRING` / `VARCHAR` | `StringType` | 字符串 |
18
- | `BINARY` | `BinaryType` | 二进制 |
19
- | `DATE` | `DateType` | 日期 |
20
- | `TIMESTAMP` | `TimestampType` | 带时区时间戳 |
21
- | `TIMESTAMP_NTZ` | `TimestampNTZType` | 无时区时间戳 |
22
- | `ARRAY<T>` | `ArrayType` | 数组 |
23
- | `MAP<K,V>` | `MapType` | 键值对 |
24
- | `STRUCT<f:T>` | `StructType` | 结构体 |
25
-
26
- ---
27
-
28
- ## 建表语法差异
29
-
30
- ### 分区
31
-
32
- ```sql
33
- -- Spark SQL:PARTITIONED BY
34
- CREATE TABLE orders (id INT, amount DECIMAL, dt STRING)
35
- USING PARQUET
36
- PARTITIONED BY (dt);
37
-
38
- -- ClickZetta:相同语法,但不需要 USING 子句
39
- CREATE TABLE orders (id INT, amount DECIMAL, dt STRING)
40
- PARTITIONED BY (dt);
41
- ```
42
-
43
- ### Bucket(分桶)
44
-
45
- ```sql
46
- -- Spark SQL
47
- CREATE TABLE orders (id INT, amount DECIMAL)
48
- CLUSTERED BY (id) INTO 8 BUCKETS;
49
-
50
- -- ClickZetta:相同语法
51
- CREATE TABLE orders (id INT, amount DECIMAL)
52
- CLUSTERED BY (id) INTO 8 BUCKETS;
53
- ```
54
-
55
- ### 表属性
56
-
57
- ```sql
58
- -- Spark SQL:TBLPROPERTIES
59
- CREATE TABLE orders (id INT)
60
- TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');
61
-
62
- -- ClickZetta:PROPERTIES
63
- CREATE TABLE orders (id INT)
64
- PROPERTIES ('data_lifecycle' = '30'); -- 数据保留天数
65
- ```
66
-
67
- ---
68
-
69
- ## 查询语法差异
70
-
71
- ### LATERAL VIEW(展开数组)
72
-
73
- ```sql
74
- -- 两者语法相同(ClickZetta 兼容 Hive/Spark 风格)
75
- SELECT id, skill
76
- FROM employees
77
- LATERAL VIEW EXPLODE(skills) t AS skill;
78
-
79
- -- POSEXPLODE(带位置索引)
80
- SELECT id, pos, skill
81
- FROM employees
82
- LATERAL VIEW POSEXPLODE(skills) t AS pos, skill;
83
- ```
84
-
85
- ### 窗口函数
86
-
87
- ```sql
88
- -- 两者基本相同
89
- SELECT id, amount,
90
- ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) AS rn,
91
- SUM(amount) OVER (PARTITION BY customer_id
92
- ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total
93
- FROM orders;
94
- ```
95
-
96
- ### CTE(公用表表达式)
97
-
98
- ```sql
99
- -- 两者语法相同
100
- WITH
101
- monthly_sales AS (
102
- SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS total
103
- FROM orders GROUP BY 1
104
- ),
105
- ranked AS (
106
- SELECT *, RANK() OVER (ORDER BY total DESC) AS rnk FROM monthly_sales
107
- )
108
- SELECT * FROM ranked WHERE rnk <= 3;
109
- ```
110
-
111
- ### STRUCT / ARRAY 操作
112
-
113
- ```sql
114
- -- Spark SQL
115
- SELECT address.city FROM users; -- STRUCT 字段访问
116
- SELECT skills[0] FROM employees; -- ARRAY 索引
117
- SELECT EXPLODE(skills) FROM employees; -- 展开数组
118
- SELECT TRANSFORM(skills, x -> UPPER(x)) FROM emp; -- 数组变换
119
-
120
- -- ClickZetta(相同语法)
121
- SELECT address.city FROM users;
122
- SELECT skills[0] FROM employees;
123
- SELECT EXPLODE(skills) FROM employees;
124
- SELECT TRANSFORM(skills, x -> UPPER(x)) FROM emp;
125
- ```
126
-
127
- ---
128
-
129
- ## 函数差异
130
-
131
- ### 日期函数
132
-
133
- ```sql
134
- -- 两者基本兼容
135
- DATE_ADD(date, days)
136
- DATE_SUB(date, days)
137
- DATEDIFF(end_date, start_date) -- 注意:ClickZetta 参数顺序与 Snowflake 相反
138
- DATE_TRUNC('month', date)
139
- DATE_FORMAT(date, 'yyyy-MM-dd')
140
- FROM_UNIXTIME(unix_ts)
141
- UNIX_TIMESTAMP(date_str)
142
- ```
143
-
144
- ### 字符串函数
145
-
146
- ```sql
147
- -- 两者基本兼容
148
- CONCAT(s1, s2, ...)
149
- CONCAT_WS(',', s1, s2, ...)
150
- SPLIT(str, ',')
151
- REGEXP_EXTRACT(str, pattern, group)
152
- REGEXP_REPLACE(str, pattern, replacement)
153
- INSTR(str, substr)
154
- SUBSTR(str, pos, len)
155
- TRIM(str) / LTRIM(str) / RTRIM(str)
156
- ```
157
-
158
- ### 聚合函数
159
-
160
- ```sql
161
- -- 两者基本兼容
162
- COUNT(*) / COUNT(DISTINCT col)
163
- SUM / AVG / MAX / MIN
164
- COLLECT_LIST(col) -- Spark:返回数组(含重复)
165
- COLLECT_SET(col) -- Spark:返回去重数组
166
- ARRAY_AGG(col) -- ClickZetta:等价于 COLLECT_LIST
167
- ```
168
-
169
- ---
170
-
171
- ## ClickZetta 特有功能(Spark 无对应)
172
-
173
- ```sql
174
- -- 1. VCLUSTER(计算集群管理)
175
- CREATE VCLUSTER my_vc VCLUSTER_TYPE = ANALYTICS VCLUSTER_SIZE = 4;
176
- USE VCLUSTER my_vc;
177
-
178
- -- 2. DYNAMIC TABLE(增量计算)
179
- CREATE DYNAMIC TABLE sales_summary
180
- REFRESH INTERVAL 5 MINUTE VCLUSTER default_ap
181
- AS SELECT customer_id, SUM(amount) FROM orders GROUP BY 1;
182
-
183
- -- 3. TABLE STREAM(CDC 变更捕获)
184
- CREATE TABLE STREAM orders_stream ON TABLE orders
185
- WITH PROPERTIES ('TABLE_STREAM_MODE' = 'STANDARD');
186
-
187
- -- 4. PIPE(持续导入)
188
- CREATE PIPE my_pipe
189
- AS COPY INTO orders FROM VOLUME my_volume USING CSV;
190
-
191
- -- 5. VECTOR 类型(向量检索)
192
- CREATE TABLE embeddings (id INT, vec VECTOR(FLOAT, 1024));
193
- SELECT id, cosine_distance(vec, vector(0.1, 0.2, ...)) AS dist
194
- FROM embeddings ORDER BY dist LIMIT 10;
195
-
196
- -- 6. Time Travel
197
- SELECT * FROM orders TIMESTAMP AS OF '2024-01-01 00:00:00';
198
- RESTORE TABLE orders TO TIMESTAMP AS OF '2024-01-01 00:00:00';
199
- UNDROP TABLE orders;
200
-
201
- -- 7. SHARE(跨实例数据共享)
202
- CREATE SHARE my_share;
203
- GRANT SELECT, READ METADATA ON TABLE public.orders TO SHARE my_share;
204
- ```
205
-
206
- ---
207
-
208
- ## Spark SQL 特有功能(ClickZetta 无对应或语法不同)
209
-
210
- ```sql
211
- -- 1. Delta Lake 特有语法(ClickZetta 无对应)
212
- OPTIMIZE table_name ZORDER BY (col); -- ClickZetta 有 OPTIMIZE 但无 ZORDER
213
- VACUUM table_name RETAIN 168 HOURS; -- ClickZetta 自动管理,无需手动 VACUUM
214
-
215
- -- 2. SHOW TABLES EXTENDED(ClickZetta 无对应)
216
- SHOW TABLES EXTENDED IN schema LIKE 'orders*';
217
-
218
- -- 3. DESCRIBE HISTORY(Delta)→ ClickZetta 用 DESC HISTORY
219
- -- Spark/Delta:
220
- DESCRIBE HISTORY orders;
221
- -- ClickZetta:
222
- DESC HISTORY orders;
223
-
224
- -- 4. 生成列(语法不同)
225
- -- Spark:
226
- CREATE TABLE orders (id INT, year INT GENERATED ALWAYS AS (YEAR(order_date)));
227
- -- ClickZetta(相同语法,也支持):
228
- CREATE TABLE orders (id INT, year INT GENERATED ALWAYS AS (YEAR(order_date)));
229
- ```