@clickzetta/cz-cli-darwin-x64 0.3.39 → 0.3.41
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.
- package/bin/cz-cli +0 -0
- package/bin/skills/clickzetta-app-python-sdk/SKILL.md +153 -0
- package/bin/skills/clickzetta-app-python-sdk/eval_cases.jsonl +12 -0
- package/bin/skills/clickzetta-app-python-sdk/references/bulkload.md +196 -0
- package/bin/skills/clickzetta-app-python-sdk/references/connector.md +143 -0
- package/bin/skills/clickzetta-app-python-sdk/references/realtime.md +122 -0
- package/bin/skills/clickzetta-batch-sync-pipeline/SKILL.md +128 -287
- package/bin/skills/clickzetta-bi-connect/SKILL.md +176 -0
- package/bin/skills/clickzetta-bi-connect/eval_cases.jsonl +5 -0
- package/bin/skills/clickzetta-bi-connect/references/bi-tools.md +170 -0
- package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +96 -11
- package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +237 -0
- package/bin/skills/clickzetta-data-ingest-pipeline/eval_cases.jsonl +5 -0
- package/bin/skills/clickzetta-data-science/SKILL.md +125 -0
- package/bin/skills/clickzetta-data-science/eval_cases.jsonl +12 -0
- package/bin/skills/clickzetta-data-science/references/bitmap-profile.md +146 -0
- package/bin/skills/clickzetta-data-science/references/data-patterns.md +110 -0
- package/bin/skills/clickzetta-data-science/references/setup.md +160 -0
- package/bin/skills/clickzetta-data-science/references/stats-functions.md +195 -0
- package/bin/skills/clickzetta-data-science/references/write-and-infer.md +122 -0
- package/bin/skills/clickzetta-data-science/references/zettapark-api.md +156 -0
- package/bin/skills/clickzetta-data-sharing/SKILL.md +160 -0
- package/bin/skills/clickzetta-data-sharing/eval_cases.jsonl +3 -0
- package/bin/skills/clickzetta-data-sharing/references/share-ddl.md +134 -0
- package/bin/skills/clickzetta-dw-modeling/SKILL.md +103 -11
- package/bin/skills/clickzetta-dynamic-table/SKILL.md +58 -2
- package/bin/skills/clickzetta-dynamic-table/dynamic-table-alter/SKILL.md +4 -4
- package/bin/skills/clickzetta-external-catalog/SKILL.md +123 -0
- package/bin/skills/clickzetta-external-catalog/eval_cases.jsonl +5 -0
- package/bin/skills/clickzetta-external-catalog/references/external-catalog-ddl.md +130 -0
- package/bin/skills/clickzetta-file-import-pipeline/SKILL.md +34 -0
- package/bin/skills/clickzetta-java-sdk/SKILL.md +186 -0
- package/bin/skills/clickzetta-java-sdk/eval_cases.jsonl +12 -0
- package/bin/skills/clickzetta-java-sdk/references/bulkload.md +163 -0
- package/bin/skills/clickzetta-java-sdk/references/realtime.md +212 -0
- package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +38 -20
- package/bin/skills/clickzetta-metadata/SKILL.md +51 -32
- package/bin/skills/clickzetta-monitoring/SKILL.md +18 -2
- package/bin/skills/clickzetta-monitoring/references/show-jobs.md +2 -2
- package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +63 -38
- package/bin/skills/clickzetta-pipeline-review/SKILL.md +377 -0
- package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +63 -16
- package/bin/skills/clickzetta-semantic-view/SKILL.md +207 -0
- package/bin/skills/clickzetta-semantic-view/eval_cases.jsonl +12 -0
- package/bin/skills/clickzetta-semantic-view/references/semantic-view-reference.md +167 -0
- package/bin/skills/clickzetta-spark-flink-connector/SKILL.md +92 -0
- package/bin/skills/clickzetta-spark-flink-connector/eval_cases.jsonl +5 -0
- package/bin/skills/clickzetta-spark-flink-connector/references/flink.md +147 -0
- package/bin/skills/clickzetta-spark-flink-connector/references/spark.md +132 -0
- package/bin/skills/clickzetta-sql-pipeline-manager/SKILL.md +115 -9
- package/bin/skills/clickzetta-sql-syntax-guide/SKILL.md +249 -0
- package/bin/skills/clickzetta-sql-syntax-guide/eval_cases.jsonl +3 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/ddl-reference.md +350 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/dml-reference.md +279 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/dql-reference.md +504 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/functions-reference.md +372 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/migration-databricks.md +260 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/migration-snowflake.md +382 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/vs-snowflake.md +346 -0
- package/bin/skills/clickzetta-sql-syntax-guide/references/vs-spark.md +229 -0
- package/bin/skills/clickzetta-studio-task-manager/SKILL.md +652 -0
- package/bin/skills/clickzetta-table-lineage/SKILL.md +90 -0
- package/bin/skills/clickzetta-table-lineage/eval_cases.jsonl +1 -0
- package/bin/skills/clickzetta-table-lineage/references/normalize_func.sql +14 -0
- package/bin/skills/clickzetta-table-lineage/references/table_cost.sql +38 -0
- package/bin/skills/clickzetta-table-lineage/references/table_lineage_standalone.html +562 -0
- package/bin/skills/clickzetta-table-lineage/references/table_relation.sql +25 -0
- package/bin/skills/clickzetta-zettapark/SKILL.md +248 -0
- package/bin/skills/clickzetta-zettapark/eval_cases.jsonl +12 -0
- package/bin/skills/clickzetta-zettapark/references/zettapark-api.md +283 -0
- package/bin/skills/cz-cli-inner/SKILL.md +5 -4
- package/package.json +1 -1
- package/bin/skills/clickzetta-ai-vector-search/SKILL.md +0 -160
- package/bin/skills/clickzetta-ai-vector-search/eval_cases.jsonl +0 -4
- package/bin/skills/clickzetta-ai-vector-search/references/vector-search.md +0 -155
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{"case_id":"001","type":"should_call","user_input":"怎么把 Superset 连接到 ClickZetta?","expected_skill":"clickzetta-bi-connect","expected_output_contains":["SQLAlchemy","clickzetta://"]}
|
|
2
|
+
{"case_id":"002","type":"should_call","user_input":"Tableau 怎么连接 ClickZetta Lakehouse?","expected_skill":"clickzetta-bi-connect","expected_output_contains":["JDBC",".taco"]}
|
|
3
|
+
{"case_id":"003","type":"should_call","user_input":"DBeaver 连接 ClickZetta 的 JDBC URL 怎么写?","expected_skill":"clickzetta-bi-connect","expected_output_contains":["jdbc:clickzetta://","ClickZettaDriver"]}
|
|
4
|
+
{"case_id":"004","type":"should_call","user_input":"Metabase 怎么连接 ClickZetta?需要装什么驱动?","expected_skill":"clickzetta-bi-connect","expected_output_contains":["Metabase",".jar"]}
|
|
5
|
+
{"case_id":"005","type":"should_call","user_input":"帆软 FineBI 怎么连接 ClickZetta?","expected_skill":"clickzetta-bi-connect","expected_output_contains":["JDBC","MySQL 协议"]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# BI 工具连接参考
|
|
2
|
+
|
|
3
|
+
> 来源:https://www.yunqi.tech/documents/ecosystem-all 等
|
|
4
|
+
|
|
5
|
+
## 连接方式总览
|
|
6
|
+
|
|
7
|
+
| 工具 | 连接方式 | 说明 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| Apache Superset | SQLAlchemy URL | 需安装 clickzetta-connector |
|
|
10
|
+
| Tableau | JDBC + 插件 | 需下载 .taco 插件 |
|
|
11
|
+
| Metabase | 专用驱动 | 需下载 .jar 驱动 |
|
|
12
|
+
| DBeaver | JDBC | 通用数据库客户端 |
|
|
13
|
+
| DataGrip | JDBC | JetBrains 数据库 IDE |
|
|
14
|
+
| 帆软 FineBI | JDBC | 国产 BI 工具 |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## JDBC 连接字符串格式
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
jdbc:clickzetta://<instance_name>.<region_id>.api.clickzetta.com/<workspace_name>?username=<user>&password=<pwd>&schema=<schema>&virtualCluster=<vc_name>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
示例:
|
|
25
|
+
```
|
|
26
|
+
jdbc:clickzetta://f8866243.cn-shanghai-alicloud.api.clickzetta.com/quick_start?username=alice&password=xxxx&schema=public&virtualCluster=default_ap
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
JDBC 驱动类:`com.clickzetta.client.jdbc.ClickZettaDriver`
|
|
30
|
+
|
|
31
|
+
JDBC 驱动下载:
|
|
32
|
+
- Maven: `com.clickzetta:clickzetta-java`
|
|
33
|
+
- 直接下载:https://central.sonatype.com/artifact/com.clickzetta/clickzetta-java/versions
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## SQLAlchemy URL 格式
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
clickzetta://<username>:<password>@<instance_name>.<region_id>.api.clickzetta.com/<workspace_name>?schema=<schema>&vcluster=<vc_name>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
示例:
|
|
44
|
+
```
|
|
45
|
+
clickzetta://alice:xxxx@f8866243.cn-shanghai-alicloud.api.clickzetta.com/quick_start?schema=public&vcluster=default_ap
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
安装:
|
|
49
|
+
```bash
|
|
50
|
+
pip uninstall -y clickzetta-sqlalchemy clickzetta-connector && pip install clickzetta-connector -U
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Apache Superset
|
|
56
|
+
|
|
57
|
+
### 快速启动(Docker)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
docker pull clickzetta/superset:2.1.0-1
|
|
61
|
+
docker run -p 8088:8088 clickzetta/superset:2.1.0-1
|
|
62
|
+
# 访问 http://localhost:8088,默认账号 admin/clickzetta
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 本地安装
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pip uninstall -y clickzetta-sqlalchemy clickzetta-connector
|
|
69
|
+
pip install clickzetta-connector -U
|
|
70
|
+
pip install 'apache-superset>=2.1'
|
|
71
|
+
|
|
72
|
+
export FLASK_APP=superset
|
|
73
|
+
superset db upgrade
|
|
74
|
+
superset fab create-admin
|
|
75
|
+
superset init
|
|
76
|
+
superset run -p 8088 --with-threads --reload --debugger
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 配置数据库连接
|
|
80
|
+
|
|
81
|
+
1. Settings → Database Connections → + Database
|
|
82
|
+
2. 选择 **Other** 数据库类型
|
|
83
|
+
3. 填写 SQLAlchemy URI:
|
|
84
|
+
```
|
|
85
|
+
clickzetta://username:password@instance.region.api.clickzetta.com/workspace?vcluster=default_ap
|
|
86
|
+
```
|
|
87
|
+
4. 点击 TESTING CONNECTION 验证,通过后 CONNECT
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Tableau
|
|
92
|
+
|
|
93
|
+
### 前提条件
|
|
94
|
+
|
|
95
|
+
1. 下载 JDBC 驱动 JAR 包
|
|
96
|
+
2. 下载 Tableau 插件:`clickzetta_jdbc-v0.0.1.taco`
|
|
97
|
+
|
|
98
|
+
### 安装步骤
|
|
99
|
+
|
|
100
|
+
**放置 JDBC 驱动:**
|
|
101
|
+
- Windows: `C:\Program Files\Tableau\Drivers`
|
|
102
|
+
- macOS: `~/Library/Tableau/Drivers`
|
|
103
|
+
- Linux: `/opt/tableau/tableau_driver/jdbc`
|
|
104
|
+
|
|
105
|
+
**放置 Tableau 插件(.taco 文件):**
|
|
106
|
+
- Windows: `C:\Users\[User]\Documents\My Tableau Repository\Connectors`
|
|
107
|
+
- macOS: `/Users/[user]/Documents/My Tableau Repository/Connectors`
|
|
108
|
+
|
|
109
|
+
**启动 Tableau(禁用签名校验):**
|
|
110
|
+
```bash
|
|
111
|
+
# macOS
|
|
112
|
+
/Applications/Tableau\ Desktop\ [version].app/Contents/MacOS/Tableau -DDisableVerifyConnectorPluginSignature=true
|
|
113
|
+
|
|
114
|
+
# Windows
|
|
115
|
+
tableau.exe -DDisableVerifyConnectorPluginSignature=true
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**连接:** 左侧导航 → 到服务器 → 更多 → Lakehouse x 云器科技 → 填写服务器/用户名/密码
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Metabase
|
|
123
|
+
|
|
124
|
+
### Docker 部署
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
docker pull metabase/metabase:v0.54.6
|
|
128
|
+
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.54.6
|
|
129
|
+
|
|
130
|
+
# 下载并安装云器驱动
|
|
131
|
+
docker cp clickzetta.metabase-driver.jar metabase:/plugins/clickzetta.metabase-driver.jar
|
|
132
|
+
docker restart metabase
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
驱动下载:`clickzetta.metabase-driver.jar`(联系云器技术支持获取)
|
|
136
|
+
|
|
137
|
+
### 配置连接
|
|
138
|
+
|
|
139
|
+
1. 访问 `http://localhost:3000`
|
|
140
|
+
2. Admin Settings → Databases → Add a database
|
|
141
|
+
3. 选择 ClickZetta Lakehouse,填写连接信息
|
|
142
|
+
4. Test connection → Save
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## DBeaver
|
|
147
|
+
|
|
148
|
+
### 配置步骤
|
|
149
|
+
|
|
150
|
+
1. 数据库 → 驱动管理器 → 新建驱动
|
|
151
|
+
2. 填写:
|
|
152
|
+
- 驱动名称:`Clickzetta`
|
|
153
|
+
- 类名:`com.clickzetta.client.jdbc.ClickZettaDriver`
|
|
154
|
+
- URL 模板:`jdbc:clickzetta://{instanceName}.{service}/{workspaceName}?virtualCluster={vc_name}`
|
|
155
|
+
3. 选择库 → 添加 JDBC JAR 包
|
|
156
|
+
4. 新建连接 → 搜索 Clickzetta → 粘贴 JDBC 连接字符串 → 填写用户名密码
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 地域代码(region_id)速查
|
|
161
|
+
|
|
162
|
+
| 云厂商 | 地域 | region_id |
|
|
163
|
+
|---|---|---|
|
|
164
|
+
| 阿里云 | 华东2(上海) | cn-shanghai-alicloud |
|
|
165
|
+
| 腾讯云 | 华东(上海) | ap-shanghai-tencentcloud |
|
|
166
|
+
| 腾讯云 | 华北(北京) | ap-beijing-tencentcloud |
|
|
167
|
+
| 腾讯云 | 华南(广州) | ap-guangzhou-tencentcloud |
|
|
168
|
+
| AWS | 中国(北京) | cn-north-1-aws |
|
|
169
|
+
| 阿里云(新加坡) | 亚太东南1 | ap-southeast-1-alicloud |
|
|
170
|
+
| AWS(新加坡) | 亚太(新加坡) | ap-southeast-1-aws |
|
|
@@ -15,6 +15,43 @@ description: |
|
|
|
15
15
|
|
|
16
16
|
# 多表实时同步 Pipeline 工作流
|
|
17
17
|
|
|
18
|
+
## 向导:收集必要信息
|
|
19
|
+
|
|
20
|
+
开始创建 CDC 同步任务前,优先使用交互式问答工具(如 `question`)收集以下信息并弹出选项菜单;若无此类工具,则用文字一次性列出所有问题:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
question({
|
|
24
|
+
questions: [
|
|
25
|
+
{
|
|
26
|
+
question: "源端数据库类型?",
|
|
27
|
+
options: [
|
|
28
|
+
{ label: "MySQL", description: "含 Aurora MySQL、PolarDB MySQL,基于 Binlog" },
|
|
29
|
+
{ label: "PostgreSQL", description: "含 Aurora PG、PolarDB PG,基于 WALs,需 14+" }
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: "同步模式?",
|
|
34
|
+
options: [
|
|
35
|
+
{ label: "整库镜像", description: "同步整个数据库,自动适配新增表" },
|
|
36
|
+
{ label: "多表镜像", description: "指定同步哪些表" },
|
|
37
|
+
{ label: "多表合并", description: "分库分表合并到一张目标表" }
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
question: "源端是否已完成准备?",
|
|
42
|
+
options: [
|
|
43
|
+
{ label: "已准备好", description: "MySQL: Binlog 已开启,账号有 REPLICATION 权限;PG: wal_level=logical" },
|
|
44
|
+
{ label: "不确定,帮我检查", description: "我来帮你验证源端配置" }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
})
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
收集到信息后,还需确认目标 schema(如 `ods`)。
|
|
52
|
+
|
|
53
|
+
**如果用户已经提供了足够信息,直接进入工作流,不再弹出菜单。**
|
|
54
|
+
|
|
18
55
|
## 适用场景
|
|
19
56
|
|
|
20
57
|
- 将 MySQL / PostgreSQL 数据库整库或多表实时同步到 Lakehouse(CDC 变更捕获)
|
|
@@ -59,7 +96,7 @@ description: |
|
|
|
59
96
|
- 源端数据源已在 Studio 中配置(通过 Studio UI 添加数据源,不是 SQL Storage Connection),且账号具备 CDC 所需权限
|
|
60
97
|
- Sync VCluster 可用(多表实时同步任务 task_type=281 必须使用 Sync VCluster)
|
|
61
98
|
- **执行环境(满足其一即可,优先使用 cz-cli)**:
|
|
62
|
-
- **cz-cli 路径**:已安装 cz-cli(`
|
|
99
|
+
- **cz-cli 路径**:已安装 cz-cli(`brew install cz-cli 或参考官方文档安装`),并完成 `cz-cli setup` 配置
|
|
63
100
|
- **MCP 路径**:clickzetta-studio-mcp 工具可用(`create_task`、`save_cdc_realtime_task`、`publish_task`、`list_data_sources`、`LH_show_object_list` 等)
|
|
64
101
|
|
|
65
102
|
## 环境探测(执行前必读)
|
|
@@ -79,7 +116,7 @@ cz-cli --version
|
|
|
79
116
|
- 若工具存在于 tool list → **走 MCP 路径**(本文档默认路径)
|
|
80
117
|
- 若工具不存在 → 停止执行,提示用户:
|
|
81
118
|
> "当前环境既无 cz-cli 也无 MCP 工具,请安装其中之一后重试。
|
|
82
|
-
> cz-cli 安装:`
|
|
119
|
+
> cz-cli 安装:`brew install cz-cli 或参考官方文档安装`,然后运行 `cz-cli setup`
|
|
83
120
|
> MCP 安装:参考 clickzetta-studio-mcp 配置文档"
|
|
84
121
|
|
|
85
122
|
> ⚠️ **重要区分**:CDC 多表同步使用 **Studio 数据源**(通过 Studio UI 或 API 配置),不是 SQL 的 `CREATE STORAGE CONNECTION`。
|
|
@@ -485,7 +522,18 @@ PostgreSQL 权限要求(建议用管理员账号执行):
|
|
|
485
522
|
> 仅在 cz-cli 可用且 MCP 不可用时使用本节。步骤编号与上方 MCP 路径对应。
|
|
486
523
|
> 所有操作通过 `cz-cli agent run` 委托给内置 agent 完成,agent 内置完整的 Studio MCP 工具访问能力。
|
|
487
524
|
|
|
488
|
-
###
|
|
525
|
+
### 快速路径:直接创建任务 + Studio UI 配置
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
# 创建 CDC 多表实时同步任务(task_type=281,即 MULTI_REALTIME)
|
|
529
|
+
cz-cli task create "cdc_<database>" --type MULTI_REALTIME --folder <folder_name>
|
|
530
|
+
# 返回 task_id 和 studio_url,在 studio_url 中完成数据源选择、表映射等配置
|
|
531
|
+
|
|
532
|
+
# 配置完成后发布(CDC 任务无需调度,提交即持续运行)
|
|
533
|
+
cz-cli task deploy "cdc_<database>" -y
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### 模式一:整库镜像同步(cz-cli agent 版)
|
|
489
537
|
|
|
490
538
|
```bash
|
|
491
539
|
# 步骤 1-9 合并:让 agent 完成完整的 CDC 整库同步任务创建
|
|
@@ -515,7 +563,7 @@ cz-cli agent run "提交 CDC 任务 cdc_<database>,使其开始持续运行" \
|
|
|
515
563
|
|
|
516
564
|
---
|
|
517
565
|
|
|
518
|
-
### 模式二:多表镜像同步(cz-cli 版)
|
|
566
|
+
### 模式二:多表镜像同步(cz-cli agent 版)
|
|
519
567
|
|
|
520
568
|
```bash
|
|
521
569
|
# 创建多表镜像 CDC 任务(指定具体表)
|
|
@@ -525,7 +573,7 @@ cz-cli agent run "创建 CDC 多表实时同步任务(task_type=281),pipel
|
|
|
525
573
|
|
|
526
574
|
---
|
|
527
575
|
|
|
528
|
-
### 模式三:多表合并同步(cz-cli 版)
|
|
576
|
+
### 模式三:多表合并同步(cz-cli agent 版)
|
|
529
577
|
|
|
530
578
|
```bash
|
|
531
579
|
# 创建多表合并 CDC 任务(多源表合并到单目标表)
|
|
@@ -538,11 +586,48 @@ cz-cli agent run "创建 CDC 多表实时同步任务(task_type=281),pipel
|
|
|
538
586
|
### 运维监控(cz-cli 版)
|
|
539
587
|
|
|
540
588
|
```bash
|
|
541
|
-
#
|
|
542
|
-
cz-cli
|
|
543
|
-
--format a2a --dangerously-skip-permissions
|
|
589
|
+
# 查看最近运行记录
|
|
590
|
+
cz-cli runs list --task <task_name>
|
|
544
591
|
|
|
545
|
-
#
|
|
546
|
-
cz-cli
|
|
547
|
-
|
|
592
|
+
# 查看运行详情
|
|
593
|
+
cz-cli runs detail <run_id>
|
|
594
|
+
|
|
595
|
+
# 查看执行日志
|
|
596
|
+
cz-cli attempts log <run_id>
|
|
597
|
+
|
|
598
|
+
# 下线任务(停止持续运行)
|
|
599
|
+
cz-cli task undeploy <task_name> -y
|
|
548
600
|
```
|
|
601
|
+
|
|
602
|
+
---
|
|
603
|
+
|
|
604
|
+
## 交付验收 Checklist
|
|
605
|
+
|
|
606
|
+
CDC 同步任务发布运行后,**必须逐项验证**:
|
|
607
|
+
|
|
608
|
+
```sql
|
|
609
|
+
-- 1. 行数比对:全量阶段完成后,ODS 层行数与源端一致
|
|
610
|
+
SELECT COUNT(*) FROM <ods_schema>.<table>;
|
|
611
|
+
|
|
612
|
+
-- 2. 增量验证:写入一条测试数据到源端,确认 Lakehouse 侧同步到位
|
|
613
|
+
-- 在源端 MySQL 执行 INSERT,等待 10~30 秒后在 Lakehouse 查询
|
|
614
|
+
|
|
615
|
+
-- 3. 关键字段非空率
|
|
616
|
+
SELECT
|
|
617
|
+
COUNT(*) AS total,
|
|
618
|
+
COUNT(key_field) AS non_null,
|
|
619
|
+
ROUND(COUNT(key_field) * 100.0 / COUNT(*), 2) AS non_null_pct
|
|
620
|
+
FROM <ods_schema>.<table>;
|
|
621
|
+
|
|
622
|
+
-- 4. 检查 _op 字段分布(CDC 接入时)
|
|
623
|
+
SELECT _op, COUNT(*) FROM <ods_schema>.<table> GROUP BY _op;
|
|
624
|
+
-- 正常应有 I(INSERT)记录,UPDATE/DELETE 场景下有 U/D
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
**验收标准:**
|
|
628
|
+
- [ ] 全量阶段完成,ODS 层行数与源端一致
|
|
629
|
+
- [ ] 增量写入测试数据,Lakehouse 侧 30 秒内同步到位
|
|
630
|
+
- [ ] 关键字段非空率符合预期
|
|
631
|
+
- [ ] _op 字段分布合理(无异常大量 D 记录)
|
|
632
|
+
- [ ] 任务状态为持续运行(RUNNING),无频繁重启
|
|
633
|
+
- [ ] 字段类型映射正确(重点检查 BIT/ENUM/TEXT 等异构类型)
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clickzetta-data-ingest-pipeline
|
|
3
|
+
description: |
|
|
4
|
+
ClickZetta Lakehouse 数据导入总览与路由。根据用户的数据源类型、实时性要求、数据量等条件,
|
|
5
|
+
推荐最合适的数据导入方式,并引导到对应的专项 Skill 或直接执行简单导入操作。
|
|
6
|
+
当用户说"导入数据到 Lakehouse"、"数据入仓"、"数据入湖"、"怎么把数据导进来"、
|
|
7
|
+
"数据采集"、"数据加载"、"ingest data"、"load data"、"数据导入方案选择"时触发。
|
|
8
|
+
Keywords: data ingestion, import, routing, pipeline selection, data source
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Lakehouse 数据导入总览与路由
|
|
12
|
+
|
|
13
|
+
根据用户的数据源、实时性需求、数据规模等条件,推荐最合适的数据导入方式,
|
|
14
|
+
并路由到对应的专项 Pipeline Skill 或直接执行简单导入操作。
|
|
15
|
+
|
|
16
|
+
## 适用场景
|
|
17
|
+
|
|
18
|
+
- 用户想把数据导入 ClickZetta Lakehouse,但不确定用哪种方式
|
|
19
|
+
- 用户描述了数据源(Kafka、MySQL、OSS、文件等),需要推荐导入方案
|
|
20
|
+
- 用户需要了解各种导入方式的适用场景和差异
|
|
21
|
+
- 关键词:数据导入、数据入仓、数据入湖、数据采集、数据加载、pipeline 选择
|
|
22
|
+
|
|
23
|
+
## 前置依赖
|
|
24
|
+
|
|
25
|
+
- ClickZetta Lakehouse 账户,具备创建工作空间、Schema、表、PIPE、任务等权限
|
|
26
|
+
- **执行环境**:已安装并配置 cz-cli
|
|
27
|
+
|
|
28
|
+
## 执行环境
|
|
29
|
+
|
|
30
|
+
所有操作通过 `cz-cli` 执行:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cz-cli --version
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
需要 cz-cli,请参考官方文档安装并完成配置后重试。
|
|
37
|
+
|
|
38
|
+
## 数据导入方式决策树
|
|
39
|
+
|
|
40
|
+
### 步骤 1:确认数据源类型和需求
|
|
41
|
+
|
|
42
|
+
向用户收集以下信息:
|
|
43
|
+
|
|
44
|
+
1. **数据源类型**:Kafka / 对象存储(OSS/S3/COS) / 关系型数据库(MySQL/PostgreSQL/SQL Server) / 本地文件 / URL/Web 文件 / Java SDK / ZettaPark
|
|
45
|
+
2. **实时性要求**:实时(秒级延迟)/ 准实时(分钟级)/ 离线批量(小时/天级)
|
|
46
|
+
3. **同步范围**:单表 / 多表 / 整库
|
|
47
|
+
4. **是否需要持续同步**:一次性导入 / 持续增量同步
|
|
48
|
+
5. **是否需要 CDC(变更数据捕获)**:是 / 否
|
|
49
|
+
|
|
50
|
+
### 步骤 2:根据决策矩阵推荐方案
|
|
51
|
+
|
|
52
|
+
| 数据源 | 实时性 | 同步范围 | 推荐方式 | 对应 Skill |
|
|
53
|
+
|--------|--------|---------|---------|-----------|
|
|
54
|
+
| Kafka | 实时/准实时 | 单 topic | Kafka PIPE 持续导入(SQL) | `clickzetta-kafka-ingest-pipeline` |
|
|
55
|
+
| Kafka | 实时 | 多 topic | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` |
|
|
56
|
+
| 对象存储 (OSS/S3/COS) | 准实时/批量 | 文件持续到达 | PIPE 持续导入 | `clickzetta-oss-ingest-pipeline` |
|
|
57
|
+
| 对象存储 | 一次性 | 批量文件 | COPY INTO 命令 | `clickzetta-file-import-pipeline`(COPY INTO 部分) |
|
|
58
|
+
| MySQL/PostgreSQL/SQL Server | 实时 CDC | 单表 | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` |
|
|
59
|
+
| MySQL/PostgreSQL/SQL Server | 实时 CDC | 多表/整库 | Studio 多表实时同步 | `clickzetta-cdc-sync-pipeline` |
|
|
60
|
+
| MySQL/PostgreSQL/SQL Server | 离线批量 | 单表 | Studio 离线同步 | `clickzetta-batch-sync-pipeline` |
|
|
61
|
+
| MySQL/PostgreSQL/SQL Server | 离线批量 | 多表 | Studio 多表离线同步 | `clickzetta-batch-sync-pipeline` |
|
|
62
|
+
| 本地文件 / URL | 一次性 | 单文件/多文件 | URL 下载 + COPY INTO | `clickzetta-file-import-pipeline` |
|
|
63
|
+
| 流式增量计算 | 准实时 | 表变更驱动 | Dynamic Table + Stream | `clickzetta-incremental-compute-pipeline` |
|
|
64
|
+
| Java 应用 | 实时/批量 | 程序写入 | Java SDK | (见下方 SDK 导入指引) |
|
|
65
|
+
| Python/ZettaPark | 批量 | DataFrame | ZettaPark save_as_table | (见下方 SDK 导入指引) |
|
|
66
|
+
|
|
67
|
+
### 步骤 3:路由到专项 Skill 或直接执行
|
|
68
|
+
|
|
69
|
+
根据推荐方案,执行以下路由逻辑:
|
|
70
|
+
|
|
71
|
+
**有对应专项 Skill 的场景** → 告知用户推荐方案,引导使用对应 Skill:
|
|
72
|
+
- `clickzetta-kafka-ingest-pipeline`:Kafka PIPE 管道搭建
|
|
73
|
+
- `clickzetta-oss-ingest-pipeline`:对象存储 PIPE 管道搭建
|
|
74
|
+
- `clickzetta-batch-sync-pipeline`:Studio 离线同步任务
|
|
75
|
+
- `clickzetta-realtime-sync-pipeline`:Studio 实时同步任务
|
|
76
|
+
- `clickzetta-cdc-sync-pipeline`:Studio 多表实时同步(CDC)
|
|
77
|
+
- `clickzetta-incremental-compute-pipeline`:Dynamic Table + Stream 增量计算管道
|
|
78
|
+
- `clickzetta-file-import-pipeline`:URL/文件下载导入
|
|
79
|
+
- `clickzetta-table-stream-pipeline`:Table Stream 变更数据捕获
|
|
80
|
+
|
|
81
|
+
**无专项 Skill 的简单场景** → 直接执行:
|
|
82
|
+
|
|
83
|
+
#### SQL INSERT 导入(小数据量)
|
|
84
|
+
```sql
|
|
85
|
+
INSERT INTO schema_name.table_name (col1, col2, col3)
|
|
86
|
+
VALUES ('val1', 'val2', 'val3');
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### COPY INTO 快速导入(从 Volume)
|
|
90
|
+
```sql
|
|
91
|
+
-- 1. 确认 Volume 中有文件
|
|
92
|
+
SHOW VOLUME DIRECTORY volume_name;
|
|
93
|
+
|
|
94
|
+
-- 2. 执行 COPY INTO
|
|
95
|
+
COPY INTO schema_name.table_name
|
|
96
|
+
FROM VOLUME volume_name
|
|
97
|
+
USING CSV
|
|
98
|
+
OPTIONS('header' = 'true');
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Java SDK 导入指引
|
|
102
|
+
提供 Java SDK 的关键配置信息:
|
|
103
|
+
- Maven 依赖坐标
|
|
104
|
+
- 连接配置(endpoint、workspace、schema、vcluster)
|
|
105
|
+
- 批量写入 API:`BulkloadWriter`
|
|
106
|
+
- 实时写入 API:`RealtimeWriter`
|
|
107
|
+
- 建议用户参考官方文档:`comprehensive_guide_to_ingesting_javasdk_buckload_realtime`
|
|
108
|
+
|
|
109
|
+
#### ZettaPark (Python) 导入指引
|
|
110
|
+
- `INSERT` 方式:`session.sql("INSERT INTO ...")`
|
|
111
|
+
- `save_as_table` 方式:`df.write.save_as_table("table_name")`
|
|
112
|
+
- 建议用户参考官方文档:`comprehensive_guide_to_ingesting_zettapark_save_as_table`
|
|
113
|
+
|
|
114
|
+
## 异构数据源类型映射(ODS 层建表必读)
|
|
115
|
+
|
|
116
|
+
从关系型数据库(MySQL/PostgreSQL 等)同步数据时,ODS 层建表的字段类型选择直接影响同步成功率。
|
|
117
|
+
|
|
118
|
+
**核心原则:ODS 层使用宽泛类型,DWD 层再做精确转换。**
|
|
119
|
+
|
|
120
|
+
### MySQL → Lakehouse 类型映射
|
|
121
|
+
|
|
122
|
+
| MySQL 类型 | ❌ ODS 层不要用 | ✅ ODS 层用 | DWD 层转换 |
|
|
123
|
+
|---|---|---|---|
|
|
124
|
+
| `BIT(1)` | `BOOLEAN` | `TINYINT` | `CAST(col AS BOOLEAN)` |
|
|
125
|
+
| `TINYINT(1)` | `BOOLEAN` | `TINYINT` | `CAST(col AS BOOLEAN)` |
|
|
126
|
+
| `DATETIME` | `DATETIME` | `TIMESTAMP` | 直接用 |
|
|
127
|
+
| `ENUM('a','b')` | `ENUM` | `STRING` | 直接用 |
|
|
128
|
+
| `TEXT` / `LONGTEXT` / `MEDIUMTEXT` | `TEXT` | `STRING` | 直接用 |
|
|
129
|
+
| `DECIMAL(p,s)` | `FLOAT` / `DOUBLE` | `DECIMAL(p,s)` | 直接用 |
|
|
130
|
+
| `JSON` | `JSON` | `STRING` | `parse_json(col)['field']` |
|
|
131
|
+
| `SET('a','b')` | `SET` | `STRING` | 直接用 |
|
|
132
|
+
|
|
133
|
+
> ⚠️ **最常见踩坑**:`BIT(1)` 映射为 `BOOLEAN` 会导致同步任务失败。ODS 层改为 `TINYINT`,同步成功后在 DWD 层用 `CAST(col AS BOOLEAN)` 转换。
|
|
134
|
+
|
|
135
|
+
### PostgreSQL → Lakehouse 类型映射
|
|
136
|
+
|
|
137
|
+
| PostgreSQL 类型 | ❌ ODS 层不要用 | ✅ ODS 层用 |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `BOOLEAN` | `BOOLEAN` | `TINYINT` |
|
|
140
|
+
| `SERIAL` / `BIGSERIAL` | `SERIAL` | `BIGINT` |
|
|
141
|
+
| `JSONB` / `JSON` | `JSON` | `STRING` |
|
|
142
|
+
| `ARRAY` | `ARRAY` | `STRING`(JSON 序列化) |
|
|
143
|
+
| `UUID` | `UUID` | `STRING` |
|
|
144
|
+
| `NUMERIC(p,s)` | `FLOAT` | `DECIMAL(p,s)` |
|
|
145
|
+
|
|
146
|
+
## 数据入仓 vs 数据入湖| 维度 | 数据入仓 | 数据入湖 |
|
|
147
|
+
|------|---------|---------|
|
|
148
|
+
| 目标 | Lakehouse 托管表 | 用户 Volume(对象存储) |
|
|
149
|
+
| 格式 | 自动转为内部列式格式 | 保持原始文件格式 |
|
|
150
|
+
| 查询性能 | 高(列式存储 + 索引) | 较低(需扫描原始文件) |
|
|
151
|
+
| 适用场景 | 分析查询、BI 报表、数据仓库 | 数据暂存、原始数据归档、跨系统共享 |
|
|
152
|
+
| 常用方式 | Studio 同步、PIPE、COPY INTO、SDK | PUT 文件、Python 脚本上传 |
|
|
153
|
+
|
|
154
|
+
## 示例
|
|
155
|
+
|
|
156
|
+
### 示例 1:用户不确定导入方式
|
|
157
|
+
|
|
158
|
+
用户说:"我有一个 MySQL 数据库,想把里面的订单表实时同步到 Lakehouse"
|
|
159
|
+
|
|
160
|
+
路由逻辑:
|
|
161
|
+
1. 数据源:MySQL(关系型数据库)
|
|
162
|
+
2. 实时性:实时
|
|
163
|
+
3. 同步范围:单表
|
|
164
|
+
4. 需要 CDC:是(实时同步意味着需要捕获变更)
|
|
165
|
+
→ 推荐:Studio 实时同步
|
|
166
|
+
→ 路由到 `clickzetta-realtime-sync-pipeline` Skill
|
|
167
|
+
|
|
168
|
+
### 示例 2:多种数据源混合场景
|
|
169
|
+
|
|
170
|
+
用户说:"我们有 Kafka 的用户行为日志,还有 MySQL 的业务数据,都要导入 Lakehouse"
|
|
171
|
+
|
|
172
|
+
路由逻辑:
|
|
173
|
+
1. Kafka 用户行为日志 → `clickzetta-kafka-ingest-pipeline`(PIPE 持续导入)
|
|
174
|
+
2. MySQL 业务数据 → 确认实时性需求:
|
|
175
|
+
- 实时 → `clickzetta-realtime-sync-pipeline` 或 `clickzetta-cdc-sync-pipeline`
|
|
176
|
+
- 离线 → `clickzetta-batch-sync-pipeline`
|
|
177
|
+
→ 分别引导到对应 Skill
|
|
178
|
+
|
|
179
|
+
### 示例 3:简单的一次性文件导入
|
|
180
|
+
|
|
181
|
+
用户说:"我有一个 CSV 文件要导入"
|
|
182
|
+
|
|
183
|
+
路由逻辑:
|
|
184
|
+
1. 数据源:本地文件
|
|
185
|
+
2. 一次性导入
|
|
186
|
+
→ 路由到 `clickzetta-file-import-pipeline` Skill(支持文件上传 + COPY INTO)
|
|
187
|
+
|
|
188
|
+
## 错误处理
|
|
189
|
+
|
|
190
|
+
| 场景 | 处理方式 |
|
|
191
|
+
|------|---------|
|
|
192
|
+
| 用户无法确定数据源类型 | 询问数据当前存储位置(哪个系统/服务),帮助判断 |
|
|
193
|
+
| 用户需求跨多种导入方式 | 拆分为多个独立的导入任务,分别路由到对应 Skill |
|
|
194
|
+
| 推荐的 Skill 尚未创建 | 提供该导入方式的基本步骤和关键 SQL/API,引导用户参考官方文档 |
|
|
195
|
+
| 用户的云环境不支持某种连接 | 执行 `cz-cli sql "SHOW CONNECTIONS" --sync` 检查可用连接类型,推荐替代方案 |
|
|
196
|
+
| 数据量极大(TB 级) | 建议分批导入,优先使用 PIPE 或 Studio 同步任务(支持断点续传) |
|
|
197
|
+
|
|
198
|
+
## 注意事项
|
|
199
|
+
|
|
200
|
+
- 本 Skill 是路由入口,不直接执行复杂的 pipeline 搭建,而是引导到专项 Skill
|
|
201
|
+
- 对于简单场景(SQL INSERT、单次 COPY INTO),可以直接在本 Skill 中完成
|
|
202
|
+
- 推荐方案时需考虑用户的云环境(阿里云/腾讯云/AWS),不同环境支持的连接类型可能不同
|
|
203
|
+
- 执行 `cz-cli sql "SHOW VCLUSTERS" --sync` 确认可用的虚拟集群,同步任务需要 SYNC 类型的 VCluster
|
|
204
|
+
- 数据入仓是最常见的场景,数据入湖主要用于原始数据暂存或跨系统共享
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## cz-cli 替代路径
|
|
209
|
+
|
|
210
|
+
> 仅在 cz-cli 可用且 MCP 不可用时使用本节。
|
|
211
|
+
> 本 Skill 是路由入口,cz-cli 路径的核心逻辑在各专项 Skill 的"cz-cli 替代路径"章节中。
|
|
212
|
+
|
|
213
|
+
### 路由说明
|
|
214
|
+
|
|
215
|
+
当 MCP 不可用时,各专项 Skill 均已提供 cz-cli 替代路径:
|
|
216
|
+
|
|
217
|
+
| 数据源 | 推荐方式 | 对应 Skill 的 cz-cli 路径 |
|
|
218
|
+
|--------|---------|--------------------------|
|
|
219
|
+
| Kafka | PIPE 持续导入 | `clickzetta-kafka-ingest-pipeline` → cz-cli 替代路径 |
|
|
220
|
+
| 对象存储 (OSS/S3/COS) | PIPE 持续导入 | `clickzetta-oss-ingest-pipeline` → cz-cli 替代路径 |
|
|
221
|
+
| MySQL/PostgreSQL/SQL Server(实时单表) | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` → cz-cli 替代路径 |
|
|
222
|
+
| MySQL/PostgreSQL/SQL Server(实时多表/整库) | Studio 多表实时同步 | `clickzetta-cdc-sync-pipeline` → cz-cli 替代路径 |
|
|
223
|
+
| MySQL/PostgreSQL/SQL Server(离线批量) | Studio 离线同步 | `clickzetta-batch-sync-pipeline` → cz-cli 替代路径 |
|
|
224
|
+
|
|
225
|
+
### 简单场景直接执行(cz-cli 版)
|
|
226
|
+
|
|
227
|
+
对于无需专项 Skill 的简单场景,可直接用 cz-cli agent 完成:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# SQL INSERT 导入(小数据量)
|
|
231
|
+
cz-cli agent run "向表 <schema_name>.<table_name> 插入数据:<col1>=<val1>, <col2>=<val2>" \
|
|
232
|
+
--format a2a --dangerously-skip-permissions
|
|
233
|
+
|
|
234
|
+
# COPY INTO 快速导入(从 Volume)
|
|
235
|
+
cz-cli agent run "从 Volume <volume_name> 以 CSV 格式(有 header)将数据导入表 <schema_name>.<table_name>" \
|
|
236
|
+
--format a2a --dangerously-skip-permissions
|
|
237
|
+
```
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{"case_id":"001","type":"should_call","user_input":"我想把数据导入 Lakehouse,但不确定用哪种方式","expected_skill":"clickzetta-data-ingest-pipeline","expected_output_contains":["数据源","实时","批量"]}
|
|
2
|
+
{"case_id":"002","type":"should_call","user_input":"数据入仓有哪些方案?怎么选择?","expected_skill":"clickzetta-data-ingest-pipeline","expected_output_contains":["Kafka","对象存储","MySQL"]}
|
|
3
|
+
{"case_id":"003","type":"should_call","user_input":"我有 MySQL 和 Kafka 两个数据源要导入 Lakehouse,分别用什么方式?","expected_skill":"clickzetta-data-ingest-pipeline","expected_output_contains":["CDC"]}
|
|
4
|
+
{"case_id":"004","type":"should_call","user_input":"数据导入方案怎么选?实时和离线有什么区别?","expected_skill":"clickzetta-data-ingest-pipeline","expected_output_contains":["实时","离线","延迟"]}
|
|
5
|
+
{"case_id":"005","type":"should_call","user_input":"ingest data into ClickZetta Lakehouse, what options do I have?","expected_skill":"clickzetta-data-ingest-pipeline","expected_output_contains":["Kafka","OSS","SDK"]}
|