data-ops-cli 0.3.5__tar.gz → 0.4.0__tar.gz
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.
- data_ops_cli-0.4.0/PKG-INFO +104 -0
- data_ops_cli-0.4.0/README.md +91 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/pyproject.toml +2 -1
- data_ops_cli-0.4.0/src/data_ops_cli.egg-info/PKG-INFO +104 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/data_ops_cli.egg-info/SOURCES.txt +1 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/data_ops_cli.egg-info/requires.txt +1 -1
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/__init__.py +1 -1
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/data_table.py +83 -28
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/dataset.py +66 -52
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/hazard.py +1 -1
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/skill.py +12 -10
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/table.py +178 -124
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/utils.py +81 -4
- data_ops_cli-0.4.0/src/dataops_cli/cli/widget.py +789 -0
- data_ops_cli-0.3.5/PKG-INFO +0 -11
- data_ops_cli-0.3.5/src/data_ops_cli.egg-info/PKG-INFO +0 -11
- data_ops_cli-0.3.5/src/dataops_cli/cli/widget.py +0 -558
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/setup.cfg +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/data_ops_cli.egg-info/dependency_links.txt +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/data_ops_cli.egg-info/entry_points.txt +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/data_ops_cli.egg-info/top_level.txt +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/_compat.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/__init__.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/alarm.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/api.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/auth.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/datasource.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/dict_.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/factory.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/metrics.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/ref.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/report.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/cli/workflow.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/exceptions.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/runner.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/schems.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/sdk.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/session.py +0 -0
- {data_ops_cli-0.3.5 → data_ops_cli-0.4.0}/src/dataops_cli/utils.py +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: data-ops-cli
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Command-line wrapper around dataops_sdk for the DataOps platform.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: dataops-sdk[runner]>=0.4.0
|
|
8
|
+
Requires-Dist: typer
|
|
9
|
+
Requires-Dist: rich
|
|
10
|
+
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: pytest; extra == "dev"
|
|
12
|
+
Requires-Dist: ruff; extra == "dev"
|
|
13
|
+
|
|
14
|
+
# data-ops-cli
|
|
15
|
+
|
|
16
|
+
DataOps platform command-line tool, powered by `dataops_sdk`.
|
|
17
|
+
|
|
18
|
+
## 安装
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 在线安装
|
|
22
|
+
pip install data-ops-cli
|
|
23
|
+
|
|
24
|
+
# 本地开发
|
|
25
|
+
uv sync --all-extras
|
|
26
|
+
pip install -e packages/dataops_cli
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 认证配置
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 环境变量方式
|
|
33
|
+
export DATA_OPS_BASE_URL="https://your-platform.com"
|
|
34
|
+
export DATA_OPS_API_KEY="your-api-key"
|
|
35
|
+
|
|
36
|
+
# 或首次使用时 CLI 会引导输入
|
|
37
|
+
data-ops-cli auth login
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 命令
|
|
41
|
+
|
|
42
|
+
完整命令树见 [skills/data-ops-cli-usage/SKILL.md](../skills/data-ops-cli-usage/SKILL.md)。
|
|
43
|
+
|
|
44
|
+
### 认证
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
data-ops-cli auth login
|
|
48
|
+
data-ops-cli auth status
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 数据源
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
data-ops-cli datasource list
|
|
55
|
+
data-ops-cli datasource detail <id>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 数据集
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
data-ops-cli dataset list
|
|
62
|
+
data-ops-cli dataset detail <id>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 数据表
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
data-ops-cli data_table list
|
|
69
|
+
data-ops-cli data_table detail <id>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 指标
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
data-ops-cli metrics list
|
|
76
|
+
data-ops-cli metrics detail <id>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 报表
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
data-ops-cli report list
|
|
83
|
+
data-ops-cli report detail <id>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 工作流
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
data-ops-cli workflow list
|
|
90
|
+
data-ops-cli workflow detail <id>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### AMIS 组件
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
data-ops-cli widget list
|
|
97
|
+
data-ops-cli widget detail <id>
|
|
98
|
+
data-ops-cli widget print <id>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 依赖
|
|
102
|
+
|
|
103
|
+
- Python >= 3.11
|
|
104
|
+
- data-ops-cli 内部依赖 `dataops_sdk[runner]`
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# data-ops-cli
|
|
2
|
+
|
|
3
|
+
DataOps platform command-line tool, powered by `dataops_sdk`.
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 在线安装
|
|
9
|
+
pip install data-ops-cli
|
|
10
|
+
|
|
11
|
+
# 本地开发
|
|
12
|
+
uv sync --all-extras
|
|
13
|
+
pip install -e packages/dataops_cli
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 认证配置
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# 环境变量方式
|
|
20
|
+
export DATA_OPS_BASE_URL="https://your-platform.com"
|
|
21
|
+
export DATA_OPS_API_KEY="your-api-key"
|
|
22
|
+
|
|
23
|
+
# 或首次使用时 CLI 会引导输入
|
|
24
|
+
data-ops-cli auth login
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 命令
|
|
28
|
+
|
|
29
|
+
完整命令树见 [skills/data-ops-cli-usage/SKILL.md](../skills/data-ops-cli-usage/SKILL.md)。
|
|
30
|
+
|
|
31
|
+
### 认证
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
data-ops-cli auth login
|
|
35
|
+
data-ops-cli auth status
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 数据源
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
data-ops-cli datasource list
|
|
42
|
+
data-ops-cli datasource detail <id>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 数据集
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
data-ops-cli dataset list
|
|
49
|
+
data-ops-cli dataset detail <id>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 数据表
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
data-ops-cli data_table list
|
|
56
|
+
data-ops-cli data_table detail <id>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 指标
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
data-ops-cli metrics list
|
|
63
|
+
data-ops-cli metrics detail <id>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 报表
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
data-ops-cli report list
|
|
70
|
+
data-ops-cli report detail <id>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 工作流
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
data-ops-cli workflow list
|
|
77
|
+
data-ops-cli workflow detail <id>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### AMIS 组件
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
data-ops-cli widget list
|
|
84
|
+
data-ops-cli widget detail <id>
|
|
85
|
+
data-ops-cli widget print <id>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 依赖
|
|
89
|
+
|
|
90
|
+
- Python >= 3.11
|
|
91
|
+
- data-ops-cli 内部依赖 `dataops_sdk[runner]`
|
|
@@ -7,8 +7,9 @@ name = "data-ops-cli"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "Command-line wrapper around dataops_sdk for the DataOps platform."
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
|
+
readme = "README.md"
|
|
10
11
|
dependencies = [
|
|
11
|
-
"dataops-sdk[runner]>=0.
|
|
12
|
+
"dataops-sdk[runner]>=0.4.0",
|
|
12
13
|
"typer",
|
|
13
14
|
"rich",
|
|
14
15
|
]
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: data-ops-cli
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Command-line wrapper around dataops_sdk for the DataOps platform.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: dataops-sdk[runner]>=0.4.0
|
|
8
|
+
Requires-Dist: typer
|
|
9
|
+
Requires-Dist: rich
|
|
10
|
+
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: pytest; extra == "dev"
|
|
12
|
+
Requires-Dist: ruff; extra == "dev"
|
|
13
|
+
|
|
14
|
+
# data-ops-cli
|
|
15
|
+
|
|
16
|
+
DataOps platform command-line tool, powered by `dataops_sdk`.
|
|
17
|
+
|
|
18
|
+
## 安装
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 在线安装
|
|
22
|
+
pip install data-ops-cli
|
|
23
|
+
|
|
24
|
+
# 本地开发
|
|
25
|
+
uv sync --all-extras
|
|
26
|
+
pip install -e packages/dataops_cli
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 认证配置
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 环境变量方式
|
|
33
|
+
export DATA_OPS_BASE_URL="https://your-platform.com"
|
|
34
|
+
export DATA_OPS_API_KEY="your-api-key"
|
|
35
|
+
|
|
36
|
+
# 或首次使用时 CLI 会引导输入
|
|
37
|
+
data-ops-cli auth login
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 命令
|
|
41
|
+
|
|
42
|
+
完整命令树见 [skills/data-ops-cli-usage/SKILL.md](../skills/data-ops-cli-usage/SKILL.md)。
|
|
43
|
+
|
|
44
|
+
### 认证
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
data-ops-cli auth login
|
|
48
|
+
data-ops-cli auth status
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 数据源
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
data-ops-cli datasource list
|
|
55
|
+
data-ops-cli datasource detail <id>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 数据集
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
data-ops-cli dataset list
|
|
62
|
+
data-ops-cli dataset detail <id>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 数据表
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
data-ops-cli data_table list
|
|
69
|
+
data-ops-cli data_table detail <id>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 指标
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
data-ops-cli metrics list
|
|
76
|
+
data-ops-cli metrics detail <id>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 报表
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
data-ops-cli report list
|
|
83
|
+
data-ops-cli report detail <id>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 工作流
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
data-ops-cli workflow list
|
|
90
|
+
data-ops-cli workflow detail <id>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### AMIS 组件
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
data-ops-cli widget list
|
|
97
|
+
data-ops-cli widget detail <id>
|
|
98
|
+
data-ops-cli widget print <id>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 依赖
|
|
102
|
+
|
|
103
|
+
- Python >= 3.11
|
|
104
|
+
- data-ops-cli 内部依赖 `dataops_sdk[runner]`
|
|
@@ -9,17 +9,16 @@ from typing import Annotated
|
|
|
9
9
|
|
|
10
10
|
import typer
|
|
11
11
|
from dataops_sdk.exceptions import DataOpsError
|
|
12
|
-
from dataops_sdk.schemas import MetaType, PageParam, SqlQueryParam
|
|
12
|
+
from dataops_sdk.schemas import MetaType, PageParam, SqlFilter, SqlQueryParam
|
|
13
13
|
from dataops_sdk.services import (
|
|
14
14
|
service_get_data_table_by_code,
|
|
15
15
|
service_get_data_table_by_name,
|
|
16
16
|
service_get_data_table_data_by_code,
|
|
17
17
|
service_get_data_table_data_by_name,
|
|
18
|
+
service_get_data_table_total,
|
|
18
19
|
)
|
|
19
20
|
from dataops_sdk.services.meta import release_list_list
|
|
20
21
|
from dataops_sdk.utils import filter_nodes_by_pattern
|
|
21
|
-
from rich.console import Console
|
|
22
|
-
from rich.table import Table
|
|
23
22
|
|
|
24
23
|
from dataops_cli.cli.utils import print_list
|
|
25
24
|
|
|
@@ -68,8 +67,8 @@ def list_datatable(
|
|
|
68
67
|
group_nodes = filter_nodes_by_pattern(group_nodes, query, include_digest=True)
|
|
69
68
|
|
|
70
69
|
print_list(
|
|
71
|
-
["code", "title", "remark"],
|
|
72
|
-
[[column.code, column.title, column.remark] for column in group_nodes],
|
|
70
|
+
["code", "name", "title", "remark"],
|
|
71
|
+
[[column.code, column.name, column.title, column.remark or ""] for column in group_nodes],
|
|
73
72
|
)
|
|
74
73
|
|
|
75
74
|
|
|
@@ -106,23 +105,22 @@ def get_datatable_detail(
|
|
|
106
105
|
typer.echo("错误: 未找到多维表格")
|
|
107
106
|
raise typer.Exit(code=1) from None
|
|
108
107
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
108
|
+
print("ref-datasource ref-type ref-code ref-table-name")
|
|
109
|
+
print(
|
|
110
|
+
meta.data.model.datasource,
|
|
111
|
+
meta.data.model.ref_type,
|
|
112
|
+
meta.data.model.ref_code,
|
|
113
|
+
meta.data.model.table_name,
|
|
114
|
+
)
|
|
115
|
+
print()
|
|
117
116
|
|
|
118
117
|
print_list(
|
|
119
|
-
["column(visable)", "type", "title"
|
|
118
|
+
["column(visable)", "type", "title"],
|
|
120
119
|
[
|
|
121
120
|
[
|
|
122
121
|
field.name + f"({'√' if field.visible else 'x'})",
|
|
123
122
|
field.type,
|
|
124
123
|
field.title,
|
|
125
|
-
field.visible,
|
|
126
124
|
]
|
|
127
125
|
for field in meta.data.fields
|
|
128
126
|
],
|
|
@@ -243,27 +241,47 @@ def get_datatable_data(
|
|
|
243
241
|
name: Annotated[str | None, typer.Argument(help="表名")] = None,
|
|
244
242
|
page_num: Annotated[int, typer.Option("-n", "--page-num", help="页码")] = 0,
|
|
245
243
|
page_size: Annotated[int, typer.Option("-s", "--page-size", help="每页大小")] = 20,
|
|
246
|
-
|
|
247
|
-
|
|
244
|
+
filters: Annotated[
|
|
245
|
+
list[SqlFilter] | None,
|
|
246
|
+
typer.Option(
|
|
247
|
+
"--condition",
|
|
248
|
+
"-c",
|
|
249
|
+
parser=SqlFilter.from_str,
|
|
250
|
+
help='查询条件(可多次传入),JSON 格式 {"name":"字段名","value":值[,"expression":"eq"]},expression 缺省 eq',
|
|
251
|
+
),
|
|
248
252
|
] = None,
|
|
249
253
|
) -> None:
|
|
250
254
|
"""获取多维表格数据。
|
|
251
255
|
|
|
252
|
-
按编码或 (数据源, 表名)
|
|
253
|
-
形式的条件过滤。
|
|
256
|
+
按编码或 (数据源, 表名) 组合查询多维表格数据;支持分页与查询条件过滤。
|
|
254
257
|
|
|
255
258
|
Args:
|
|
256
259
|
arg1: 多维表格编码;当同时提供 ``name`` 时为数据源名称。
|
|
257
260
|
name: 可选表名。
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+
page_num: 页码,默认 0。
|
|
262
|
+
page_size: 每页大小,默认 20。
|
|
263
|
+
filters: 查询条件,JSON 格式 ``{"name": 字段名, "value": 值[, "expression": 表达式]}``。
|
|
264
|
+
可多次传入,多个条件按 AND 组合;``expression`` 缺省为 ``eq``,可选
|
|
265
|
+
``eq/ne/gt/ge/lt/le/in/notin/like/notlike/between/notbetween/isnull/isnotnull``。
|
|
261
266
|
|
|
262
267
|
Examples:
|
|
263
|
-
|
|
268
|
+
通过多维表格编码查询数据
|
|
269
|
+
>>> data-ops-cli data_table data <code>
|
|
270
|
+
通过数据源和表名查询数据
|
|
271
|
+
>>> data-ops-cli data_table data <datasource> <name>
|
|
272
|
+
带查询条件过滤(status 等于 1)
|
|
273
|
+
>>> data-ops-cli data_table data <code> -c '{"name": "status", "value": 1}'
|
|
264
274
|
"""
|
|
275
|
+
if not name and not arg1.replace("_", "").replace("-", "").isnumeric():
|
|
276
|
+
print(
|
|
277
|
+
"输入参数错误 using `data_table data <code>` or `data_table data <datasource> <name>`"
|
|
278
|
+
)
|
|
279
|
+
raise typer.Exit(code=1) from None
|
|
280
|
+
|
|
265
281
|
pp = PageParam(start=page_num * page_size, limit=page_size)
|
|
266
|
-
qp = SqlQueryParam
|
|
282
|
+
qp = SqlQueryParam()
|
|
283
|
+
if filters:
|
|
284
|
+
qp.add(*(filter_item.to_condition() for filter_item in filters))
|
|
267
285
|
|
|
268
286
|
try:
|
|
269
287
|
datas = (
|
|
@@ -272,16 +290,53 @@ def get_datatable_data(
|
|
|
272
290
|
else service_get_data_table_data_by_code(arg1, pp, qp)
|
|
273
291
|
)
|
|
274
292
|
except DataOpsError as e:
|
|
275
|
-
typer.echo(f"错误: {e.message}")
|
|
293
|
+
typer.echo(f"错误: {e.message}", err=True)
|
|
276
294
|
raise typer.Exit(code=1) from None
|
|
277
295
|
if not datas:
|
|
278
296
|
print("未查询到数据")
|
|
279
297
|
return
|
|
280
298
|
|
|
281
299
|
# 取第一行构建列
|
|
282
|
-
keys =
|
|
300
|
+
keys = (x.lower() for x in datas[0])
|
|
283
301
|
print_list(keys, (tuple(row.values()) for row in datas))
|
|
284
302
|
|
|
285
303
|
|
|
286
|
-
|
|
287
|
-
|
|
304
|
+
@data_table_typer.command("count", no_args_is_help=True)
|
|
305
|
+
def count_datatable(
|
|
306
|
+
code: Annotated[str, typer.Argument(help="多维表格编码")],
|
|
307
|
+
filters: Annotated[
|
|
308
|
+
list[SqlFilter] | None,
|
|
309
|
+
typer.Option(
|
|
310
|
+
"--condition",
|
|
311
|
+
"-c",
|
|
312
|
+
parser=SqlFilter.from_str,
|
|
313
|
+
help='查询条件(可多次传入),JSON 格式 {"name":"字段名","value":值[,"expression":"eq"]},expression 缺省 eq',
|
|
314
|
+
),
|
|
315
|
+
] = None,
|
|
316
|
+
) -> None:
|
|
317
|
+
"""统计多维表格数据总数。
|
|
318
|
+
|
|
319
|
+
支持通过 ``--condition/-c`` 参数(可多次传入)添加查询条件过滤。
|
|
320
|
+
|
|
321
|
+
Args:
|
|
322
|
+
code: 多维表格编码。
|
|
323
|
+
filters: 查询条件,JSON 格式 ``{"name": 字段名, "value": 值[, "expression": 表达式]}``。
|
|
324
|
+
可多次传入,多个条件按 AND 组合;``expression`` 缺省为 ``eq``,可选
|
|
325
|
+
``eq/ne/gt/ge/lt/le/in/notin/like/notlike/between/notbetween/isnull/isnotnull``。
|
|
326
|
+
|
|
327
|
+
Examples:
|
|
328
|
+
统计多维表格数据总数
|
|
329
|
+
>>> data-ops-cli data_table count dt_code_001
|
|
330
|
+
|
|
331
|
+
带查询条件统计(status 等于 1)
|
|
332
|
+
>>> data-ops-cli data_table count dt_code_001 -c '{"name": "status", "value": 1}'
|
|
333
|
+
"""
|
|
334
|
+
qp = SqlQueryParam()
|
|
335
|
+
if filters:
|
|
336
|
+
qp.add(*(filter_item.to_condition() for filter_item in filters))
|
|
337
|
+
try:
|
|
338
|
+
total = service_get_data_table_total(code, qp)
|
|
339
|
+
except DataOpsError as e:
|
|
340
|
+
typer.echo(f"错误: {e.message}", err=True)
|
|
341
|
+
raise typer.Exit(code=1) from e
|
|
342
|
+
print(total)
|