Skip to content

Commit 188be8f

Browse files
💬Generate LLM translations (#2187)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent c29f4e9 commit 188be8f

File tree

4 files changed

+188
-217
lines changed

4 files changed

+188
-217
lines changed

docs/cn/guides/40-load-data/04-transform/03-querying-orc.md

Lines changed: 14 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
---
2-
title: 查询 Stage 中的 ORC 文件
3-
sidebar_label: 查询 ORC 文件
2+
title: 查询 Stage 中的 Staged ORC 文件
3+
sidebar_label: ORC
44
---
5-
65
import StepsWrap from '@site/src/components/StepsWrap';
76
import StepContent from '@site/src/components/Steps/step-content';
87

98
## 语法
109

1110
```sql
12-
SELECT [<alias>.]<column> [, <column> ...] | [<alias>.]$<col_position> [, $<col_position> ...]
13-
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
14-
[(
11+
SELECT [<alias>.]<column> [, <column> ...] | [<alias>.]$<col_position> [, $<col_position> ...]
12+
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
13+
[(
1514
[<connection_parameters>],
1615
[ PATTERN => '<regex_pattern>'],
1716
[ FILE_FORMAT => 'ORC | <custom_format_name>'],
@@ -21,7 +20,7 @@ FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
2120

2221
## 教程
2322

24-
在本教程中,我们将引导您完成下载 Iris 数据集(以 ORC 格式)、将其上传到 Amazon S3 存储桶创建外部 Stage,并直接从 ORC 文件查询数据的过程
23+
在本教程中,我们将引导您完成以下过程:下载 ORC 格式的 Iris 数据集,将其上传到 Amazon S3 存储桶创建外部 Stage,以及直接从 ORC 文件查询数据
2524

2625
<StepsWrap>
2726
<StepContent number="1">
@@ -30,7 +29,7 @@ FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
3029

3130
https://github.com/tensorflow/io/raw/master/tests/test_orc/iris.orc 下载 iris 数据集,然后将其上传到您的 Amazon S3 存储桶。
3231

33-
iris 数据集包含 3 个类别的 50 个实例,每个类别指的是一种鸢尾植物。它有 4 个属性:(1)萼片长度,(2)萼片宽度,(3)花瓣长度,(4)花瓣宽度,最后一列包含类别标签。
32+
iris 数据集包含 3 个类别,每个类别包含 50 个实例,其中每个类别都指的是一种鸢尾植物。它有 4 个属性:(1)萼片长度,(2)萼片宽度,(3)花瓣长度,(4)花瓣宽度,最后一列包含类别标签。
3433

3534
</StepContent>
3635
<StepContent number="2">
@@ -40,7 +39,7 @@ iris 数据集包含 3 个类别的 50 个实例,每个类别指的是一种
4039
使用存储 iris 数据集文件的 Amazon S3 存储桶创建一个外部 Stage。
4140

4241
```sql
43-
CREATE STAGE orc_query_stage
42+
CREATE STAGE orc_query_stage
4443
URL = 's3://databend-doc'
4544
CONNECTION = (
4645
AWS_KEY_ID = '<your-key-id>',
@@ -60,65 +59,17 @@ FROM @orc_query_stage
6059
FILE_FORMAT => 'orc',
6160
PATTERN => '.*[.]orc'
6261
);
63-
```
6462

6563
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
66-
│ sepal_length sepal_width petal_length petal_width species │
64+
sepal_length sepal_width petal_length petal_width species
6765
├───────────────────┼───────────────────┼───────────────────┼───────────────────┼──────────────────┤
68-
│ 5.1 │ 3.5 │ 1.4 │ 0.2 │ setosa │
69-
│ 4.9 │ 3 │ 1.4 │ 0.2 │ setosa │
70-
│ 4.7 │ 3.2 │ 1.3 │ 0.2 │ setosa │
71-
│ 4.6 │ 3.1 │ 1.5 │ 0.2 │ setosa │
72-
│ 5 │ 3.6 │ 1.4 │ 0.2 │ setosa │
73-
│ 5.4 │ 3.9 │ 1.7 │ 0.4 │ setosa │
74-
│ 4.6 │ 3.4 │ 1.4 │ 0.3 │ setosa │
75-
│ 5 │ 3.4 │ 1.5 │ 0.2 │ setosa │
76-
│ 4.4 │ 2.9 │ 1.4 │ 0.2 │ setosa │
77-
│ 4.9 │ 3.1 │ 1.5 │ 0.1 │ setosa │
78-
│ 5.4 │ 3.7 │ 1.5 │ 0.2 │ setosa │
79-
│ 4.8 │ 3.4 │ 1.6 │ 0.2 │ setosa │
80-
│ 4.8 │ 3 │ 1.4 │ 0.1 │ setosa │
81-
│ 4.3 │ 3 │ 1.1 │ 0.1 │ setosa │
82-
│ 5.8 │ 4 │ 1.2 │ 0.2 │ setosa │
83-
│ 5.7 │ 4.4 │ 1.5 │ 0.4 │ setosa │
84-
│ 5.4 │ 3.9 │ 1.3 │ 0.4 │ setosa │
85-
│ 5.1 │ 3.5 │ 1.4 │ 0.3 │ setosa │
86-
│ 5.7 │ 3.8 │ 1.7 │ 0.3 │ setosa │
87-
│ 5.1 │ 3.8 │ 1.5 │ 0.3 │ setosa │
88-
│ · │ · │ · │ · │ · │
89-
│ · │ · │ · │ · │ · │
90-
│ · │ · │ · │ · │ · │
91-
│ 7.4 │ 2.8 │ 6.1 │ 1.9 │ virginica │
92-
│ 7.9 │ 3.8 │ 6.4 │ 2 │ virginica │
93-
│ 6.4 │ 2.8 │ 5.6 │ 2.2 │ virginica │
94-
│ 6.3 │ 2.8 │ 5.1 │ 1.5 │ virginica │
95-
│ 6.1 │ 2.6 │ 5.6 │ 1.4 │ virginica │
96-
│ 7.7 │ 3 │ 6.1 │ 2.3 │ virginica │
97-
│ 6.3 │ 3.4 │ 5.6 │ 2.4 │ virginica │
98-
│ 6.4 │ 3.1 │ 5.5 │ 1.8 │ virginica │
99-
│ 6 │ 3 │ 4.8 │ 1.8 │ virginica │
100-
│ 6.9 │ 3.1 │ 5.4 │ 2.1 │ virginica │
101-
│ 6.7 │ 3.1 │ 5.6 │ 2.4 │ virginica │
102-
│ 6.9 │ 3.1 │ 5.1 │ 2.3 │ virginica │
103-
│ 5.8 │ 2.7 │ 5.1 │ 1.9 │ virginica │
104-
│ 6.8 │ 3.2 │ 5.9 │ 2.3 │ virginica │
105-
│ 6.7 │ 3.3 │ 5.7 │ 2.5 │ virginica │
106-
│ 6.7 │ 3 │ 5.2 │ 2.3 │ virginica │
107-
│ 6.3 │ 2.5 │ 5 │ 1.9 │ virginica │
108-
│ 6.5 │ 3 │ 5.2 │ 2 │ virginica │
109-
│ 6.2 │ 3.4 │ 5.4 │ 2.3 │ virginica │
110-
│ 5.9 │ 3 │ 5.1 │ 1.8 │ virginica │
111-
│ 150 rows │ │ │ │ │
112-
│ (40 shown) │ │ │ │ │
66+
5.13.51.40.2 │ setosa │
67+
│ · │ · │ · │ · │ · │
68+
5.935.11.8 │ virginica │
11369
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
70+
```
11471

115-
````
116-
117-
您还可以直接查询远程的 ORC 文件:
118-
119-
```sql
120-
SELECT * FROM 'https://datasets.databend.rs/iris.orc';
121-
````
72+
您也可以直接查询远程 ORC 文件:
12273

12374
```sql
12475
SELECT
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
---
2+
title: 查询 Stage 中的 Avro 文件
3+
sidebar_label: Avro
4+
---
5+
6+
## 查询 Stage 中的 Avro 文件
7+
8+
语法:
9+
```sql
10+
SELECT [<alias>.]$1:<column> [, $1:<column> ...]
11+
FROM {@<stage_name>[/<path>] [<table_alias>] | '<uri>' [<table_alias>]}
12+
[(
13+
[<connection_parameters>],
14+
[ PATTERN => '<regex_pattern>'],
15+
[ FILE_FORMAT => 'AVRO'],
16+
[ FILES => ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
17+
)]
18+
```
19+
20+
:::info Tips
21+
可以使用 `$1:<column>` 直接将 Avro 文件作为 variant 查询。
22+
:::
23+
24+
## Avro 查询功能概述
25+
26+
Databend 提供对直接从 stage 查询 Avro 文件的全面支持。这允许灵活的数据探索和转换,而无需先将数据加载到表中。
27+
28+
* **Variant 表示**: Avro 文件中的每一行都被视为一个 variant,由 `$1` 引用。这允许灵活访问 Avro 数据中的嵌套结构。
29+
* **类型映射**: 每个 Avro 类型都映射到 Databend 中相应的 variant 类型。
30+
* **元数据访问**: 您可以访问元数据列,如 `metadata$filename``metadata$file_row_number`,以获取有关源文件和行的更多上下文。
31+
32+
## 教程
33+
34+
本教程演示如何查询存储在 stage 中的 Avro 文件。
35+
36+
### 步骤 1. 准备 Avro 文件
37+
38+
考虑一个具有以下名为 `user` 的 schema 的 Avro 文件:
39+
40+
```json
41+
{
42+
"type": "record",
43+
"name": "user",
44+
"fields": [
45+
{
46+
"name": "id",
47+
"type": "long"
48+
},
49+
{
50+
"name": "name",
51+
"type": "string"
52+
}
53+
]
54+
}
55+
```
56+
57+
### 步骤 2. 创建外部 Stage
58+
59+
使用您自己的 S3 bucket 和存储 Avro 文件的凭据创建一个外部 stage。
60+
61+
```sql
62+
CREATE STAGE avro_query_stage
63+
URL = 's3://load/avro/'
64+
CONNECTION = (
65+
ACCESS_KEY_ID = '<your-access-key-id>'
66+
SECRET_ACCESS_KEY = '<your-secret-access-key>'
67+
);
68+
```
69+
70+
### 步骤 3. 查询 Avro 文件
71+
72+
#### 基本查询
73+
74+
直接从 stage 查询 Avro 文件:
75+
76+
```sql
77+
SELECT
78+
CAST($1:id AS INT) AS id,
79+
$1:name AS name
80+
FROM @avro_query_stage
81+
(
82+
FILE_FORMAT => 'AVRO',
83+
PATTERN => '.*[.]avro'
84+
);
85+
```
86+
87+
#### 使用元数据查询
88+
89+
直接从 stage 查询 Avro 文件,包括元数据列,如 `metadata$filename``metadata$file_row_number`
90+
91+
```sql
92+
SELECT
93+
metadata$filename AS file,
94+
metadata$file_row_number AS row,
95+
CAST($1:id AS INT) AS id,
96+
$1:name AS name
97+
FROM @avro_query_stage
98+
(
99+
FILE_FORMAT => 'AVRO',
100+
PATTERN => '.*[.]avro'
101+
);
102+
```
103+
104+
## 类型映射到 Variant
105+
106+
Databend 中的 Variants 存储为 JSONB。虽然大多数 Avro 类型都可以直接映射,但需要考虑一些特殊情况:
107+
108+
* **时间类型**: `TimeMillis``TimeMicros` 映射到 `INT64`,因为 JSONB 没有原生 Time 类型。用户在处理这些值时应注意原始类型。
109+
* **Decimal 类型**: Decimals 加载为 `DECIMAL128``DECIMAL256`。如果精度超过支持的限制,可能会发生错误。
110+
* **Enum 类型**: Avro `ENUM` 类型映射到 Databend 中的 `STRING` 值。

docs/cn/guides/40-load-data/04-transform/04-querying-metadata.md

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,48 @@ title: 使用文件和列元数据
33
sidebar_label: 元数据
44
---
55

6-
本指南解释了如何从已暂存的文件中查询元数据。元数据包括文件级别的元数据(例如文件名和行号)和列级别的元数据(例如列名、类型和可空性)。
6+
本指南介绍如何从已暂存的文件中查询元数据。下表总结了支持元数据查询的文件格式:
77

8-
## 访问文件级别元数据
8+
| 元数据类型 | 支持的文件格式 |
9+
|---------------------|------------------------------------------------------|
10+
| 文件级别元数据 | CSV, TSV, Parquet, NDJSON, Avro |
11+
| 列级别元数据 (INFER_SCHEMA) | Parquet |
912

10-
当读取 CSV、TSV、Parquet 和 NDJSON 格式的已暂存文件时,Databend 支持访问以下文件级别的元数据字段
13+
以下文件级别元数据字段适用于支持的文件格式
1114

12-
| 文件元数据 | 类型 | 描述 |
13-
|----------------------------|---------|---------------------------------------------------|
14-
| `metadata$filename` | VARCHAR | 读取行的文件名 |
15-
| `metadata$file_row_number` | INT | 文件中的行号(从 0 开始) |
15+
| 文件元数据 | 类型 | 描述 |
16+
|----------------------------|---------|--------------------------------------------------|
17+
| `metadata$filename` | VARCHAR | 读取行的文件名 |
18+
| `metadata$file_row_number` | INT | 文件中的行号(从 0 开始) |
1619

1720
这些元数据字段在以下位置可用:
1821

19-
- 基于 Stage 的 SELECT 查询(例如,`SELECT FROM @stage`
22+
- Stage 的 SELECT 查询(例如,`SELECT FROM @stage`
2023
- `COPY INTO <table>` 语句
2124

2225
### 示例
2326

2427
1. 查询元数据字段
2528

26-
从 Stage 读取时,您可以直接选择元数据字段
29+
从 Stage 读取时,可以直接选择元数据字段
2730

2831
```sql
2932
SELECT
3033
metadata$filename,
31-
metadata$file_row_number,
32-
*
33-
FROM @my_internal_stage/iris.parquet
34-
LIMIT 5;
34+
metadata$file_row_number
35+
FROM @my_internal_stage
36+
LIMIT 1;
3537
```
3638

3739
```sql
38-
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
39-
│ metadata$filename │ metadata$file_row_number │ id │ sepal_length │ sepal_width │ petal_length │ petal_width │ species │ metadata$filename │ metadata$file_row_number │
40-
├───────────────────┼──────────────────────────┼─────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼──────────────────┼───────────────────┼──────────────────────────┤
41-
iris.parquet015.13.51.40.2 │ setosa │ iris.parquet0
42-
iris.parquet124.931.40.2 │ setosa │ iris.parquet1
43-
iris.parquet234.73.21.30.2 │ setosa │ iris.parquet2
44-
iris.parquet344.63.11.50.2 │ setosa │ iris.parquet3
45-
iris.parquet4553.61.40.2 │ setosa │ iris.parquet4
46-
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
40+
│ metadata$filename │ metadata$file_row_number │
41+
├───────────────────┼───────────────────────────┤
42+
iris.parquet10
4743
```
4844

4945
2. 在 COPY INTO 中使用元数据
5046

51-
您可以使用 COPY INTO 将元数据字段传递到目标表列中:
47+
可以使用 COPY INTO 将元数据字段传递到目标表列中:
5248

5349
```sql
5450
COPY INTO iris_with_meta
@@ -58,18 +54,18 @@ FILE_FORMAT=(TYPE=parquet);
5854

5955
## 从文件推断列元数据
6056

61-
Databend 允许您使用 [INFER_SCHEMA](/sql/sql-functions/table-functions/infer-schema) 函数从 Parquet 格式的已暂存文件中检索以下列级别的元数据:
57+
Databend 允许您使用 [INFER_SCHEMA](/sql/sql-functions/table-functions/infer-schema) 函数从已暂存的文件中检索列级别元数据。目前 **Parquet** 文件支持此功能。
6258

63-
| 列元数据 | 类型 | 描述 |
64-
|-----------------|---------|---------------------------------------------------|
65-
| `column_name` | String | 指示列的名称。 |
59+
| 列元数据 | 类型 | 描述 |
60+
|-----------------|---------|--------------------------------------------------|
61+
| `column_name` | String | 指示列的名称。 |
6662
| `type` | String | 指示列的数据类型。 |
6763
| `nullable` | Boolean | 指示列是否允许空值。 |
6864
| `order_id` | UInt64 | 表示列在表中的位置。 |
6965

7066
### 示例
7167

72-
以下示例从 `@my_internal_stage` 中暂存的 Parquet 文件中检索列元数据
68+
以下示例从 `@my_internal_stage` 中暂存的 Parquet 文件检索列元数据
7369

7470
```sql
7571
SELECT * FROM INFER_SCHEMA(location => '@my_internal_stage/iris.parquet');

0 commit comments

Comments
 (0)