local
Name
SinceVersion dev
local
Description
Local表函数(table-valued-function,tvf),可以让用户像访问关系表格式数据一样,读取并访问 be 上的文件内容。目前支持csv/csv_with_names/csv_with_names_and_types/json/parquet/orc
文件格式。
该函数需要 ADMIN 权限。
syntax
local(
"file_path" = "path/to/file.txt",
"backend_id" = "be_id",
"format" = "csv",
"keyn" = "valuen"
...
);
参数说明
访问local文件的相关参数:
file_path
(必填)待读取文件的路径,该路径是一个相对于
user_files_secure_path
目录的相对路径, 其中user_files_secure_path
参数是 be的一个配置项 。路径中不能包含
..
,可以使用 glob 语法进行模糊匹配,如:logs/*.log
backend_id
:(必填)文件所在的 be id。
backend_id
可以通过show backends
命令得到。
文件格式相关参数
format
:(必填) 目前支持csv/csv_with_names/csv_with_names_and_types/json/parquet/orc
column_separator
:(选填) 列分割符, 默认为,
。line_delimiter
:(选填) 行分割符,默认为\n
。compress_type
: (选填) 目前支持UNKNOWN/PLAIN/GZ/LZO/BZ2/LZ4FRAME/DEFLATE
。 默认值为UNKNOWN
, 将会根据uri
的后缀自动推断类型。下面6个参数是用于json格式的导入,具体使用方法可以参照:Json Load
read_json_by_line
: (选填) 默认为"true"
strip_outer_array
: (选填) 默认为"false"
json_root
: (选填) 默认为空json_paths
: (选填) 默认为空num_as_string
: (选填) 默认为false
fuzzy_parse
: (选填) 默认为false
SinceVersion dev下面2个参数是用于csv格式的导入
trim_double_quotes
: 布尔类型,选填,默认值为false
,为true
时表示裁剪掉 csv 文件每个字段最外层的双引号skip_lines
: 整数类型,选填,默认值为0,含义为跳过csv文件的前几行。当设置format设置为csv_with_names
或csv_with_names_and_types
时,该参数会失效
Examples
分析指定 BE 上的日志文件:
mysql> select * from local(
"file_path" = "log/be.out",
"backend_id" = "10006",
"format" = "csv")
where c1 like "%start_time%" limit 10;
+--------------------------------------------------------+
| c1 |
+--------------------------------------------------------+
| start time: 2023年 08月 07日 星期一 23:20:32 CST |
| start time: 2023年 08月 07日 星期一 23:32:10 CST |
| start time: 2023年 08月 08日 星期二 00:20:50 CST |
| start time: 2023年 08月 08日 星期二 00:29:15 CST |
+--------------------------------------------------------+
读取和访问位于路径${DORIS_HOME}/student.csv
的 csv格式文件:
mysql> select * from local(
"file_path" = "student.csv",
"backend_id" = "10003",
"format" = "csv");
+------+---------+--------+
| c1 | c2 | c3 |
+------+---------+--------+
| 1 | alice | 18 |
| 2 | bob | 20 |
| 3 | jack | 24 |
| 4 | jackson | 19 |
| 5 | liming | d18 |
+------+---------+--------+
可以配合desc function
使用
mysql> desc function local(
"file_path" = "student.csv",
"backend_id" = "10003",
"format" = "csv");
+-------+------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-------+---------+-------+
| c1 | TEXT | Yes | false | NULL | NONE |
| c2 | TEXT | Yes | false | NULL | NONE |
| c3 | TEXT | Yes | false | NULL | NONE |
+-------+------+------+-------+---------+-------+
Keywords
local, table-valued-function, tvf
Best Practice
关于local tvf的更详细使用方法可以参照 S3 tvf, 唯一不同的是访问存储系统的方式不一样。