@clickzetta/cz-cli-linux-x64 0.3.4 → 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 -457
  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 -112
  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 -156
  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 -639
  67. package/bin/skills/clickzetta-kafka-ingest-pipeline/references/kafka-pipe-syntax.md +0 -324
  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 -427
  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 -379
  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 -185
  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 -222
  99. package/bin/skills/clickzetta-sql-pipeline-manager/references/table-stream.md +0 -125
  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 -206
  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 -292
  116. package/bin/skills/clickzetta-volume-manager/references/volume-ddl.md +0 -199
  117. package/bin/skills/clickzetta-zettapark/SKILL.md +0 -248
  118. package/bin/skills/clickzetta-zettapark/references/zettapark-api.md +0 -283
@@ -1,382 +0,0 @@
1
- # Snowflake → ClickZetta 迁移指南
2
-
3
- > 全面覆盖从 Snowflake 迁移到 ClickZetta Lakehouse 时遇到的 SQL 兼容性问题,所有结论均经过真实 Lakehouse 验证。
4
-
5
- ---
6
-
7
- ## 对象概念映射
8
-
9
- | Snowflake | ClickZetta | 说明 |
10
- |---|---|---|
11
- | DATABASE | WORKSPACE | 顶层容器 |
12
- | SCHEMA | SCHEMA | 相同 |
13
- | WAREHOUSE | VCLUSTER | 计算集群 |
14
- | STAGE | VOLUME | 文件存储区域 |
15
- | STORAGE INTEGRATION | STORAGE CONNECTION | 对象存储认证 |
16
- | SNOWPIPE | PIPE | 持续导入管道 |
17
- | STREAM | TABLE STREAM | CDC 变更捕获 |
18
- | DYNAMIC TABLE | DYNAMIC TABLE | 语法不同 |
19
- | TASK | Studio 任务 | 调度任务 |
20
- | SEQUENCE | IDENTITY 列 | 自增序列 |
21
- | SHARE | SHARE | 跨实例数据共享(语法相同) |
22
-
23
- ---
24
-
25
- ## DDL 差异
26
-
27
- ### CREATE TABLE
28
-
29
- ```sql
30
- -- Snowflake
31
- CREATE OR REPLACE TABLE orders (
32
- id NUMBER AUTOINCREMENT,
33
- customer_id NUMBER(10,0),
34
- amount NUMBER(18,2),
35
- status VARCHAR(50) DEFAULT 'pending',
36
- created_at TIMESTAMP_LTZ DEFAULT CURRENT_TIMESTAMP(),
37
- meta VARIANT,
38
- tags ARRAY
39
- ) CLUSTER BY (DATE_TRUNC('month', created_at));
40
-
41
- -- ClickZetta 等价写法
42
- CREATE TABLE IF NOT EXISTS orders (
43
- id BIGINT IDENTITY(1), -- AUTOINCREMENT → IDENTITY
44
- customer_id INT, -- NUMBER(10,0) → INT
45
- amount DECIMAL(18,2), -- NUMBER(18,2) → DECIMAL(18,2)
46
- status STRING DEFAULT 'pending',
47
- created_at TIMESTAMP DEFAULT current_timestamp(),
48
- meta JSON, -- VARIANT → JSON
49
- tags ARRAY<STRING> -- ARRAY → ARRAY<T>(需指定元素类型)
50
- )
51
- CLUSTERED BY (customer_id) INTO 16 BUCKETS; -- CLUSTER BY → CLUSTERED BY ... BUCKETS
52
- ```
53
-
54
- ### 不支持的 DDL
55
-
56
- ```sql
57
- -- ❌ CREATE OR REPLACE TABLE(用 IF NOT EXISTS)
58
- CREATE OR REPLACE TABLE t (...);
59
- -- ✅ ClickZetta
60
- CREATE TABLE IF NOT EXISTS t (...);
61
-
62
- -- ❌ CREATE SEQUENCE(用 IDENTITY 列)
63
- CREATE SEQUENCE my_seq START 1 INCREMENT 1;
64
- -- ✅ ClickZetta
65
- CREATE TABLE t (id BIGINT IDENTITY(1), ...);
66
-
67
- -- ❌ CREATE TEMPORARY TABLE(用 CTE 替代)
68
- CREATE TEMPORARY TABLE temp_t AS SELECT ...;
69
- -- ✅ ClickZetta
70
- WITH temp_t AS (SELECT ...) SELECT * FROM temp_t;
71
-
72
- -- ❌ CREATE TRANSIENT TABLE(用 data_lifecycle 控制)
73
- CREATE TRANSIENT TABLE t (...);
74
- -- ✅ ClickZetta
75
- CREATE TABLE t (...) PROPERTIES ('data_lifecycle' = '1');
76
-
77
- -- ❌ CLUSTER BY(列级别)
78
- CREATE TABLE t (...) CLUSTER BY (col1, col2);
79
- -- ✅ ClickZetta(分桶)
80
- CREATE TABLE t (...) CLUSTERED BY (col1) INTO 16 BUCKETS;
81
- ```
82
-
83
- ---
84
-
85
- ## 数据类型映射
86
-
87
- | Snowflake | ClickZetta | 注意事项 |
88
- |---|---|---|
89
- | `NUMBER(p,s)` / `NUMERIC(p,s)` | `DECIMAL(p,s)` | |
90
- | `NUMBER(10,0)` / `INTEGER` | `INT` / `BIGINT` | |
91
- | `FLOAT` / `FLOAT4` | `FLOAT` | |
92
- | `FLOAT8` / `DOUBLE` | `DOUBLE` | |
93
- | `VARCHAR(n)` / `TEXT` | `STRING` 或 `VARCHAR(n)` | |
94
- | `CHAR(n)` | `CHAR(n)` | 相同 |
95
- | `BOOLEAN` | `BOOLEAN` | 相同,但写入规则不同(见下) |
96
- | `DATE` | `DATE` | 相同 |
97
- | `TIMESTAMP_LTZ` | `TIMESTAMP` | 带本地时区 |
98
- | `TIMESTAMP_NTZ` | `TIMESTAMP_NTZ` | 无时区 |
99
- | `TIMESTAMP_TZ` | `TIMESTAMP` | ClickZetta 无独立 TZ 类型 |
100
- | `VARIANT` | `JSON` | 访问语法不同(见下) |
101
- | `ARRAY` | `ARRAY<T>` | 需指定元素类型 |
102
- | `OBJECT` | `MAP<STRING,STRING>` 或 `STRUCT<...>` | |
103
- | `GEOGRAPHY` | 不支持 | |
104
- | `VECTOR(FLOAT, N)` | `VECTOR(FLOAT, N)` | 相同 |
105
-
106
- ---
107
-
108
- ## ⚠️ 写入时类型转换(重要差异)
109
-
110
- Snowflake 允许字符串隐式转换为日期/布尔等类型,ClickZetta **不允许**:
111
-
112
- ```sql
113
- -- ❌ Snowflake 可以,ClickZetta 报错
114
- INSERT INTO t VALUES ('2024-01-15', 'true', '123');
115
-
116
- -- ✅ ClickZetta 必须显式转换
117
- INSERT INTO t VALUES (DATE '2024-01-15', TRUE, CAST('123' AS INT));
118
- INSERT INTO t VALUES (CAST('2024-01-15' AS DATE), CAST('true' AS BOOLEAN), 123);
119
- ```
120
-
121
- | 目标类型 | Snowflake | ClickZetta |
122
- |---|---|---|
123
- | `DATE` ← `'2024-01-15'` | ✅ 隐式 | ❌ 需 `DATE '...'` 或 `CAST` |
124
- | `TIMESTAMP` ← `'2024-01-15 12:00'` | ✅ 隐式 | ❌ 需 `TIMESTAMP '...'` 或 `CAST` |
125
- | `BOOLEAN` ← `'true'` | ✅ 隐式 | ❌ 需 `TRUE`/`FALSE` 或 `CAST` |
126
- | `BOOLEAN` ← `1` | ✅ 隐式 | ❌ 需 `CAST(1 AS BOOLEAN)` |
127
- | `INT` ← `'123'` | ✅ 隐式 | ❌ 需 `CAST('123' AS INT)` |
128
- | `JSON` ← `'{"k":1}'` | ✅ 隐式 | ❌ 需 `PARSE_JSON(...)` 或 `CAST` |
129
- | WHERE 中字符串比较 | ✅ | ✅ 允许 |
130
-
131
- ---
132
-
133
- ## DML 差异
134
-
135
- ### INSERT / UPDATE
136
-
137
- ```sql
138
- -- Snowflake:字符串可隐式转换
139
- INSERT INTO orders VALUES (1, '2024-01-15', 'true');
140
-
141
- -- ClickZetta:必须显式转换
142
- INSERT INTO orders VALUES (1, DATE '2024-01-15', TRUE);
143
- UPDATE orders SET dt = CAST('2024-06-01' AS DATE) WHERE id = 1;
144
- ```
145
-
146
- ### MERGE INTO
147
-
148
- ```sql
149
- -- Snowflake:支持多个 WHEN NOT MATCHED,支持 WHEN NOT MATCHED BY SOURCE
150
- MERGE INTO t USING s ON t.id = s.id
151
- WHEN MATCHED THEN UPDATE SET ...
152
- WHEN NOT MATCHED THEN INSERT ...
153
- WHEN NOT MATCHED BY SOURCE THEN DELETE; -- ❌ ClickZetta 不支持
154
-
155
- -- ClickZetta:WHEN NOT MATCHED 只能有一个,UPDATE 必须在 DELETE 前
156
- MERGE INTO t USING s ON t.id = s.id
157
- WHEN MATCHED AND s.flag = 0 THEN UPDATE SET t.val = s.val -- UPDATE 在前
158
- WHEN MATCHED AND s.flag = 1 THEN DELETE -- DELETE 在后
159
- WHEN NOT MATCHED THEN INSERT (id, val) VALUES (s.id, s.val);
160
- ```
161
-
162
- ### 事务
163
-
164
- ```sql
165
- -- ❌ ClickZetta 不支持事务语法
166
- BEGIN;
167
- BEGIN TRANSACTION;
168
- START TRANSACTION;
169
- COMMIT;
170
- ROLLBACK;
171
-
172
- -- ✅ 用 MERGE 实现原子性 UPSERT
173
- MERGE INTO target USING source ON ...
174
- ```
175
-
176
- ---
177
-
178
- ## DQL 差异
179
-
180
- ### QUALIFY(窗口函数过滤)
181
-
182
- ```sql
183
- -- 两者都支持 QUALIFY
184
- SELECT * FROM orders
185
- QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) = 1;
186
- ```
187
-
188
- ### PIVOT / UNPIVOT
189
-
190
- ```sql
191
- -- Snowflake:原生支持
192
- SELECT * FROM sales
193
- PIVOT (SUM(amount) FOR month IN ('Jan', 'Feb', 'Mar'));
194
-
195
- -- ClickZetta:用 CASE WHEN
196
- SELECT product,
197
- SUM(CASE WHEN month = 'Jan' THEN amount END) AS Jan,
198
- SUM(CASE WHEN month = 'Feb' THEN amount END) AS Feb
199
- FROM sales GROUP BY product;
200
- ```
201
-
202
- ### LATERAL FLATTEN → LATERAL VIEW EXPLODE
203
-
204
- ```sql
205
- -- Snowflake:LATERAL FLATTEN
206
- SELECT f.value::STRING AS skill
207
- FROM employees, LATERAL FLATTEN(input => skills) f;
208
-
209
- -- ClickZetta:LATERAL VIEW EXPLODE
210
- SELECT skill
211
- FROM employees
212
- LATERAL VIEW EXPLODE(skills) lv AS skill;
213
-
214
- -- 带位置索引
215
- SELECT pos, skill
216
- FROM employees
217
- LATERAL VIEW POSEXPLODE(skills) lv AS pos, skill;
218
- ```
219
-
220
- ### JSON 访问语法
221
-
222
- ```sql
223
- -- Snowflake:冒号语法
224
- SELECT data:address:city AS city FROM users;
225
- SELECT data[0]:name AS name FROM users;
226
- SELECT data:scores[2] AS score FROM users;
227
-
228
- -- ClickZetta:方括号语法
229
- SELECT data['address']['city'] AS city FROM users;
230
- SELECT data['phoneNumbers'][0]['name'] AS name FROM users;
231
- SELECT data['scores'][2] AS score FROM users;
232
-
233
- -- 类型转换
234
- -- Snowflake: data:age::INT
235
- -- ClickZetta: CAST(data['age'] AS INT)
236
- ```
237
-
238
- ### OBJECT_CONSTRUCT / ARRAY_CONSTRUCT
239
-
240
- ```sql
241
- -- Snowflake
242
- SELECT OBJECT_CONSTRUCT('name', 'Alice', 'age', 30) AS obj;
243
- SELECT ARRAY_CONSTRUCT(1, 2, 3) AS arr;
244
-
245
- -- ClickZetta
246
- SELECT MAP('name', 'Alice') AS obj; -- 简单 MAP
247
- SELECT named_struct('id', 1, 'name', 'Alice') AS person; -- ✅ 命名字段用 named_struct
248
- SELECT STRUCT(1, 'Alice') AS person; -- 位置参数写法
249
- SELECT ARRAY(1, 2, 3) AS arr; -- ARRAY_CONSTRUCT → ARRAY()
250
- ```
251
-
252
- ### ASOF JOIN / MATCH_RECOGNIZE
253
-
254
- ```sql
255
- -- ❌ ClickZetta 不支持
256
- SELECT * FROM t1 ASOF JOIN t2 ON t1.id = t2.id;
257
- SELECT * FROM t MATCH_RECOGNIZE (...);
258
- ```
259
-
260
- ---
261
-
262
- ## 函数差异
263
-
264
- ### 日期函数
265
-
266
- ```sql
267
- -- Snowflake → ClickZetta
268
- DATEADD(day, 7, dt) → DATEADD(day, 7, dt) ✅ 相同;也可用 DATE_ADD(dt, 7)
269
- DATEDIFF(day, start, end) → DATEDIFF(end, start) ⚠️ 参数顺序相反!
270
- DATE_TRUNC('month', dt) → DATE_TRUNC('month', dt) 相同
271
- TO_DATE('2024-01-01') → TO_DATE('2024-01-01') 相同
272
- CONVERT_TIMEZONE(tz, dt) → CONVERT_TZ(dt, from_tz, to_tz)
273
- SYSDATE() / GETDATE() → CURRENT_TIMESTAMP() / NOW()
274
- LAST_DAY(dt) → LAST_DAY(dt) 相同
275
- YEAR(dt) / MONTH(dt) → YEAR(dt) / MONTH(dt) 相同
276
- ```
277
-
278
- ### 字符串函数
279
-
280
- ```sql
281
- -- Snowflake → ClickZetta
282
- CHARINDEX(sub, s) → INSTR(s, sub) ⚠️ 参数顺序相反!
283
- EDITDISTANCE(s1, s2) → LEVENSHTEIN(s1, s2)
284
- STRTOK(s, delim, n) → SPLIT_PART(s, delim, n)
285
- ILIKE(s, pattern) → ILIKE(s, pattern) ✅ ClickZetta 也支持!
286
- CONTAINS(s, sub) → INSTR(s, sub) > 0
287
- STARTSWITH(s, prefix) → s LIKE 'prefix%'
288
- ENDSWITH(s, suffix) → s LIKE '%suffix'
289
- INITCAP(s) → INITCAP(s) 相同
290
- REGEXP_LIKE(s, p) → RLIKE(s, p) 或 s RLIKE p
291
- ```
292
-
293
- ### 聚合函数
294
-
295
- ```sql
296
- -- Snowflake → ClickZetta
297
- LISTAGG(col, ',') WITHIN GROUP (ORDER BY col) → GROUP_CONCAT(col ORDER BY col SEPARATOR ',')
298
- ARRAY_AGG(col) WITHIN GROUP (ORDER BY col) → ARRAY_AGG(col) ⚠️ 不支持 WITHIN GROUP
299
- OBJECT_AGG(key, value) → MAP_AGG(key, value)
300
- APPROX_COUNT_DISTINCT(col) → APPROX_COUNT_DISTINCT(col) 相同
301
- MEDIAN(col) → MEDIAN(col) 相同
302
- ```
303
-
304
- ### 条件函数
305
-
306
- ```sql
307
- -- Snowflake → ClickZetta
308
- IFF(cond, a, b) → IF(cond, a, b)
309
- ZEROIFNULL(x) → COALESCE(x, 0) 或 NVL(x, 0)
310
- NULLIFZERO(x) → NULLIF(x, 0)
311
- DECODE(expr, v1, r1, ...) → DECODE(expr, v1, r1, ...) 相同
312
- BOOLAND(a, b) → a AND b
313
- BOOLOR(a, b) → a OR b
314
- ```
315
-
316
- ---
317
-
318
- ## Stream 元数据字段
319
-
320
- ```sql
321
- -- Snowflake Stream
322
- METADATA$ACTION -- 'INSERT' / 'DELETE'
323
- METADATA$ISUPDATE -- TRUE/FALSE(UPDATE 会产生一对 DELETE+INSERT)
324
- METADATA$ROW_ID -- 行唯一标识
325
-
326
- -- ClickZetta Table Stream
327
- __change_type -- 'INSERT' / 'UPDATE_BEFORE' / 'UPDATE_AFTER' / 'DELETE'
328
- __commit_version -- 提交版本号
329
- __commit_timestamp -- 提交时间戳
330
-
331
- -- 消费 Stream 的 MERGE 写法
332
- -- Snowflake
333
- MERGE INTO target t USING stream s ON t.id = s.id
334
- WHEN MATCHED AND s.METADATA$ACTION = 'DELETE' THEN DELETE
335
- WHEN MATCHED THEN UPDATE SET ...
336
- WHEN NOT MATCHED AND s.METADATA$ACTION = 'INSERT' THEN INSERT ...;
337
-
338
- -- ClickZetta
339
- MERGE INTO target t USING stream s ON t.id = s.id
340
- WHEN MATCHED AND s.__change_type = 'UPDATE_AFTER' THEN UPDATE SET ...
341
- WHEN MATCHED AND s.__change_type = 'DELETE' THEN DELETE
342
- WHEN NOT MATCHED AND s.__change_type = 'INSERT' THEN INSERT ...;
343
- ```
344
-
345
- ---
346
-
347
- ## Dynamic Table 差异
348
-
349
- ```sql
350
- -- Snowflake
351
- CREATE DYNAMIC TABLE product_sales
352
- TARGET_LAG = '1 minutes'
353
- WAREHOUSE = my_warehouse
354
- AS SELECT ...;
355
-
356
- -- ClickZetta(不支持 TARGET_LAG)
357
- CREATE DYNAMIC TABLE product_sales
358
- REFRESH INTERVAL 1 MINUTE VCLUSTER default_ap
359
- AS SELECT ...;
360
- ```
361
-
362
- ---
363
-
364
- ## 已验证的兼容性(Snowflake 有,ClickZetta 也有)
365
-
366
- - `SEMI JOIN` / `ANTI JOIN` ✅
367
- - `QUALIFY` ✅(ClickZetta 也支持)
368
- - `ILIKE` ✅(ClickZetta 也支持)
369
- - `DATEADD` ✅(ClickZetta 也支持)
370
- - `MINUS`(等价于 EXCEPT)✅
371
- - `DECODE` ✅
372
- - `INITCAP` ✅
373
- - `MEDIAN` ✅
374
- - `APPROX_COUNT_DISTINCT` ✅
375
- - `TRY_CAST` ✅
376
- - `NULLIF` / `COALESCE` / `NVL` ✅
377
- - `GROUPING SETS` / `ROLLUP` / `CUBE` ✅
378
- - `WITH CTE` ✅
379
- - `REGEXP_LIKE` / `RLIKE` ✅
380
- - `SPLIT_PART` ✅
381
- - `LAST_DAY` ✅
382
- - `IDENTITY` 列(替代 AUTOINCREMENT/SEQUENCE)✅