LOCAL
説明
ローカルテーブル値関数(tvf)は、ユーザーがbeノード上のローカルファイルの内容を読み取りアクセスすることを可能にし、リレーショナルテーブルにアクセスするのと同様に使用できます。現在、csv/csv_with_names/csv_with_names_and_types/json/parquet/orcファイル形式をサポートしています。
syntax
LOCAL(
"file_path" = "<file_path>",
"backend_id" = "<backend_id>",
"format" = "<format>"
[, "<optional_property_key>" = "<optional_property_value>" [, ...] ]
);
必須パラメータ
| パラメータ | 説明 | 備考 |
|---|---|---|
file_path | 読み取り対象ファイルのパス。user_files_secure_pathディレクトリからの相対パスです。user_files_secure_pathパラメータはBE設定項目です。パスに ..を含めることはできません。パターンマッチングにはlogs/*.logのようなglobシンタックスが使用できます。 | |
backend_id | ファイルが配置されているBEノードのID。show backendsコマンドで取得できます。 | バージョン2.1.1以前では、DorisはBEノードを指定してそのノード上のローカルデータファイルを読み取ることのみサポートしています。 |
format | ファイル形式(必須)。サポートされている形式はcsv/csv_with_names/csv_with_names_and_types/json/parquet/orcです。 |
オプションパラメータ
| パラメータ | 説明 | 備考 |
|---|---|---|
shared_storage | デフォルトはfalse。trueの場合、指定されたファイルは共有ストレージ(NASなど)に配置されます。共有ストレージはPOSIXファイルインターフェースをサポートし、すべてのBEノードにマウントされている必要があります。shared_storageがtrueの場合、backend_idは省略できます。DorisはすべてのBEノードを利用してデータにアクセスする場合があります。backend_idが設定されている場合、指定されたBEノードでのみデータにアクセスします。 | バージョン2.1.2以降サポート |
column_separator | カラム区切り文字(オプション)。デフォルトは\tです。 | |
line_delimiter | 行区切り文字(オプション)。デフォルトは\nです。 | |
compress_type | 圧縮タイプ(オプション)。サポートされるタイプはUNKNOWN/PLAIN/GZ/LZO/BZ2/LZ4FRAME/DEFLATE/SNAPPYBLOCKです。デフォルトはUNKNOWNで、uriサフィックスからタイプが自動的に推測されます。 | |
read_json_by_line | JSON形式インポート用(オプション)。デフォルトはtrueです。 | 参照: Json Load |
strip_outer_array | JSON形式インポート用(オプション)。デフォルトはfalseです。 | 参照: Json Load |
json_root | JSON形式インポート用(オプション)。デフォルトは空です。 | 参照: Json Load |
json_paths | JSON形式インポート用(オプション)。デフォルトは空です。 | 参照: Json Load |
num_as_string | JSON形式インポート用(オプション)。デフォルトはfalseです。 | 参照: Json Load |
fuzzy_parse | JSON形式インポート用(オプション)。デフォルトはfalseです。 | 参照: Json Load |
trim_double_quotes | CSV形式インポート用(オプション)。デフォルトはfalseです。trueの場合、CSVファイルの各フィールドを囲む最外側のダブルクォートを削除します。 | CSV形式用 |
skip_lines | CSV形式インポート用(オプション)。デフォルトは0で、CSVファイルの最初の数行をスキップします。形式がcsv_with_namesまたはcsv_with_names_and_typesの場合、このパラメータは無視されます。 | CSV形式用 |
path_partition_keys | オプション。ファイルパスに含まれるパーティションカラム名を指定します。例:/path/to/city=beijing/date="2023-07-09"の場合、path_partition_keys="city,date"と記入します。これにより、パスから対応するカラム名と値が自動的に読み取られ、インポートに使用されます。 | |
enable_mapping_varbinary | デフォルトはfalse。PARQUET/ORC読み取り時にBYTE_ARRAY型をSTRINGにマッピングします。有効にすると、VARBINARY型にマッピングします。 | 4.0.3以降サポート |
enable_mapping_timestamp_tz | デフォルトはfalse。PARQUET(isAdjustedToUTC付きのTIMESTAMP)またはORC(TIMESTAMP_INSTANT)読み取り時に、型はDATETIMEにマッピングされます。有効にすると、TIMESTAMPTZ型にマッピングされます。 | バージョン4.0.3以降サポート |
アクセス制御要件
| 権限 | オブジェクト | 備考 |
|---|---|---|
| ADMIN_PRIV | global |
使用上の注意
-
local tvfのより詳細な使用方法については、S3 tvfを参照してください。両者の唯一の違いは、ストレージシステムへのアクセス方法です。
-
local tvfを通じたNAS上のデータアクセス
NAS共有ストレージは、複数のノードに同時にマウントできます。各ノードは、ローカルファイルと同様に共有ストレージ内のファイルにアクセスできます。したがって、NASはローカルファイルシステムと考えることができ、local tvfを通じてアクセスできます。
"shared_storage" = "true"を設定した場合、Dorisは指定されたファイルが任意のBEノードからアクセス可能であると認識します。ワイルドカードを使用してファイルセットが指定されている場合、Dorisはファイルアクセス要求を複数のBEノードに分散し、複数のノードを使用して分散ファイルスキャンを実行し、クエリパフォーマンスを向上させます。
例
指定されたBE上のログファイルを分析する:
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形式のファイルを読み取りアクセスします:
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 |
+------+---------+--------+
```--+---------+--------+
Query files on NAS:
select * from local(
"file_path" = "/mnt/doris/prefix_*.txt",
"format" = "csv",
"column_separator" =",",
"shared_storage" = "true");
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
+------+------+------+
Can be used with desc function :
desc function local(
"file_path" = "student.csv",
"backend_id" = "10003",
"format" = "csv");
+-------+------+------+-------+---------+-------+
| フィールド | タイプ | Null | キー | デフォルト | その他 |
+-------+------+------+-------+---------+-------+
| c1 | TEXT | Yes | false | NULL | NONE |
| c2 | TEXT | Yes | false | NULL | NONE |
| c3 | TEXT | Yes | false | NULL | NONE |
+-------+------+------+-------+---------+-------+