LOAD LABEL example_db.label1(DATA INFILE("bos://bucket/input/file")INTO TABLE `my_table`(k1, k2, tmpk3)PRECEDING FILTER k1 = 1SET (k3 = tmpk3 + 1)WHERE k1 > k2)WITH BROKER bos(...);
curl--location-trusted-u user:passwd-H "columns: k1, k2, tmpk3, k3 = tmpk3 + 1"-H "where: k1 > k2"-T file.txthttp://host:port/api/testDb/testTbl/_stream_load
CREATE ROUTINE LOAD example_db.label1 ON my_tableCOLUMNS(k1, k2, tmpk3, k3 = tmpk3 + 1),PRECEDING FILTER k1 = 1,WHERE k1 > k2...
PRECEDING FILTER k1 = 1
(k1, k2, tmpk3)
k3 = tmpk3 + 1
WHERE k1 > k2
列1 | 列2 | 列3 | 列4 |
1 | 100 | beijing | 1.1 |
2 | 200 | shanghai | 1.2 |
3 | 300 | guangzhou | 1.3 |
4 | \\N | chongqing | 1.4 |
\\N
在源文件中表示 null。k1,k2,k3,k4
4列。我们希望的导入映射关系如下:列1 -> k1列2 -> k3列3 -> k2列4 -> k4
(k1, k3, k2, k4)
k1,k2,k3
3列。我们希望的导入映射关系如下:列1 -> k1列2 -> k3列3 -> k2
(k1, k3, k2, tmpk4)
tmpk4
为一个自定义的、表中不存在的列名。Doris 会忽略这个不存在的列名。k1,k2,k3,k4,k5
5列。我们希望的导入映射关系如下:列1 -> k1列2 -> k3列3 -> k2
k4,k5
两列希望使用默认值填充。
则列映射的书写顺序应如下:(k1, k3, k2)
k4,k5
列有默认值,则会填充默认值。否则如果是 nullable
的列,则会填充 null
值。否则,导入作业会报错。列1 | 列2 | 列3 | 列4 |
1 | 100 | beijing | 1.1 |
2 | 200 | shanghai | 1.2 |
3 | 300 | guangzhou | 1.3 |
4 | 400 | chongqing | 1.4 |
k1,k2,k3,k4
4列。我们希望的导入映射和转换关系如下:列1 -> k1列2 * 100 -> k3列3 -> k2列4 -> k4
(k1, tmpk3, k2, k4, k3 = tmpk3 * 100)
tmpk3
,同时指定表中 k3
列的值为 tmpk3 * 100
。最终表中的数据如下:k1 | k2 | k3 | k4 |
1 | beijing | 10000 | 1.1 |
2 | shanghai | 20000 | 1.2 |
3 | guangzhou | 30000 | 1.3 |
null | chongqing | 40000 | 1.4 |
k1,k2,k3,k4
4列。我们希望对于源数据中的 beijing, shanghai, guangzhou, chongqing
分别转换为对应的地区id后导入:列1 -> k1列2 -> k2列3 进行地区id转换后 -> k3列4 -> k4
(k1, k2, tmpk3, k4, k3 = case tmpk3 when "beijing" then 1 when "shanghai" then 2 when "guangzhou" then 3 when "chongqing" then 4 else null end)
k1 | k2 | k3 | k4 |
1 | 100 | 1 | 1.1 |
2 | 200 | 2 | 1.2 |
3 | 300 | 3 | 1.3 |
null | 400 | 4 | 1.4 |
k1,k2,k3,k4
4列。在对地区id转换的同时,我们也希望对于源数据中 k1 列的 null 值转换成 0 导入:列1 如果为null 则转换成0 -> k1列2 -> k2列3 -> k3列4 -> k4
(tmpk1, k2, tmpk3, k4, k1 = ifnull(tmpk1, 0), k3 = case tmpk3 when "beijing" then 1 when "shanghai" then 2 when "guangzhou" then 3 when "chongqing" then 4 else null end)
k1 | k2 | k3 | k4 |
1 | 100 | 1 | 1.1 |
2 | 200 | 2 | 1.2 |
3 | 300 | 3 | 1.3 |
0 | 400 | 4 | 1.4 |
列1 | 列2 | 列3 | 列4 |
1 | 100 | beijing | 1.1 |
2 | 200 | shanghai | 1.2 |
3 | 300 | guangzhou | 1.3 |
4 | 400 | chongqing | 1.4 |
k1,k2,k3,k4
4列。我们可以在缺省列映射和转换的情况下,直接定义过滤条件。如我们希望只导入源文件中第4列为大于 1.2 的数据行,则过滤条件如下:where k4 > 1.2
k1 | k2 | k3 | k4 |
3 | 300 | guangzhou | 1.3 |
null | 400 | chongqing | 1.4 |
k4
列。k1,k2,k3,k4
4列。在 列转换 示例中,我们将省份名称转换成了id。这里我们想过滤掉 id 为 3 的数据。则转换、过滤条件如下:(k1, k2, tmpk3, k4, k3 = case tmpk3 when "beijing" then 1 when "shanghai" then 2 when "guangzhou" then 3 when "chongqing" then 4 else null end)where k3 != 3
k1 | k2 | k3 | k4 |
1 | 100 | 1 | 1.1 |
2 | 200 | 2 | 1.2 |
null | 400 | 4 | 1.4 |
k1,k2,k3,k4
4列。我们想过滤掉 k1
列为 null
的数据,同时过滤掉 k4
列小于 1.2 的数据,则过滤条件如下:where k1 is null and k4 < 1.2
k1 | k2 | k3 | k4 |
2 | 200 | 2 | 1.2 |
3 | 300 | 3 | 1.3 |
preceding filter
或 where
列过滤条件而被过滤掉的数据行。max_filter_ratio
)。如果导入的数据的错误率低于阈值,则这些错误行将被忽略,其他正确的数据将被导入。
错误率的计算方式为:#Filtered Rows / (#Filtered Rows + #Loaded Rows)
Unselected Rows
不会参与错误率的计算。
本页内容是否解决了您的问题?