azureBlobStorage テーブル関数
Azure Blob Storage 内のファイルに対して SELECT および INSERT を行うための、テーブルのようなインターフェイスを提供します。このテーブル関数は、s3 関数 と類似しています。
構文
- Connection string
- Storage account URL
- Named collection
認証情報は connection string に埋め込まれているため、別途 account_name/account_key を指定する必要はありません。
account_name と account_key を個別の引数として指定する必要があります。
サポートされているキーの一覧については、後述の Named Collections を参照してください。
Arguments
| Argument | Description |
|---|---|
connection_string | 組み込み認証情報(アカウント名 + アカウントキー または SAS トークン)を含む接続文字列。この形式を使用する場合、account_name と account_key を別々に指定してはいけません。詳しくは、Configure a connection string を参照してください。 |
storage_account_url | ストレージアカウントのエンドポイント URL。例: https://myaccount.blob.core.windows.net/。この形式を使用する場合は、account_name と account_key も必ず指定する必要があります。 |
container_name | コンテナー名。 |
blobpath | ファイルパス。読み取り専用モードで次のワイルドカードをサポートします: *, **, ?, {abc,def}, {N..M}。ここで N, M は数値、'abc', 'def' は文字列です。 |
account_name | ストレージアカウント名。SAS なしで storage_account_url を使用する場合は必須です。connection_string を使用する場合は指定してはいけません。 |
account_key | ストレージアカウントキー。SAS なしで storage_account_url を使用する場合は必須です。connection_string を使用する場合は指定してはいけません。 |
format | ファイルのフォーマット。 |
compression | サポートされる値: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst。デフォルトでは、ファイル拡張子から圧縮形式を自動検出します(auto を指定した場合と同じ動作)。 |
structure | テーブルの構造。形式: 'column1_name column1_type, column2_name column2_type, ...'。 |
partition_strategy | オプション。サポートされる値は WILDCARD または HIVE。WILDCARD ではパス内に {_partition_id} が必要で、これはパーティションキーで置き換えられます。HIVE ではワイルドカードは使用できず、パスがテーブルのルートであるとみなし、Snowflake ID をファイル名、ファイル形式を拡張子とする Hive 形式のパーティションディレクトリを生成します。デフォルトは WILDCARD です。 |
partition_columns_in_data_file | オプション。HIVE パーティション戦略でのみ使用されます。ClickHouse がパーティションカラムがデータファイル内に書き込まれていることを前提とすべきかどうかを指定します。デフォルトは false です。 |
extra_credentials | client_id と tenant_id を使用して認証します。extra_credentials が指定されている場合、それらが account_name および account_key よりも優先されます。 |
名前付きコレクション
引数は named collections を使って渡すこともできます。この場合、次のキーがサポートされています。
| Key | Required | Description |
|---|---|---|
container | Yes | コンテナ名。位置引数 container_name に対応します。 |
blob_path | Yes | ファイルパス(ワイルドカード指定も可能)。位置引数 blobpath に対応します。 |
connection_string | No* | 認証情報を埋め込んだ接続文字列。*connection_string または storage_account_url のいずれかを指定する必要があります。 |
storage_account_url | No* | ストレージアカウントのエンドポイントURL。*connection_string または storage_account_url のいずれかを指定する必要があります。 |
account_name | No | storage_account_url を使用する場合に必須です。 |
account_key | No | storage_account_url を使用する場合に必須です。 |
format | No | ファイルフォーマット。 |
compression | No | 圧縮形式。 |
structure | No | テーブル構造。 |
client_id | No | 認証用の Client ID。 |
tenant_id | No | 認証用の Tenant ID。 |
名前付きコレクションのキー名は位置引数の名前と異なります。container(container_name ではない)および blob_path(blobpath ではない)です。
例:
クエリ実行時に名前付きコレクションの値を上書きすることもできます。
返される値
指定されたファイル内のデータを読み取り/書き込みするための、指定された構造を持つテーブル。
例
storage_account_url 形式での読み取り
connection_string 形式での読み込み
パーティションを用いた書き込み
次に、特定のパーティションを読み出します:
仮想カラム
_path— ファイルへのパス。型:LowCardinality(String)。_file— ファイル名。型:LowCardinality(String)。_size— ファイルサイズ(バイト単位)。型:Nullable(UInt64)。ファイルサイズが不明な場合、値はNULLです。_time— ファイルの最終更新時刻。型:Nullable(DateTime)。時刻が不明な場合、値はNULLです。
パーティション分割での書き込み
パーティション戦略
INSERT クエリでのみサポートされます。
WILDCARD(デフォルト):ファイルパス内の {_partition_id} ワイルドカードを実際のパーティションキーで置き換えます。
HIVE は、読み取りおよび書き込みに対して Hive スタイルのパーティション分割を実装します。次の形式でファイルを生成します:<prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>。
HIVE パーティション戦略の例
use_hive_partitioning 設定
これは、読み取り時に ClickHouse が Hive スタイルのパーティション分割ファイルを解析するためのヒントとなる設定です。書き込み時には影響しません。読み取りと書き込みの動作を対称にしたい場合は、partition_strategy 引数を使用してください。
use_hive_partitioning 設定を 1 にすると、ClickHouse はパス内の Hive スタイルのパーティション分割 (/name=value/) を検出し、クエリ内でパーティション列を仮想カラムとして使用できるようにします。これらの仮想カラムは、パーティション分割されたパス内の名前と同じ名前を持ちます。
Example
Hive スタイルのパーティション分割で作成された仮想カラムを使用する。
共有アクセス署名 (SAS) の使用
共有アクセス署名 (SAS) は、Azure Storage のコンテナまたはファイルへの制限されたアクセス権を付与する URI です。これを使用すると、ストレージ アカウント キーを共有せずに、ストレージ アカウント リソースへの有効期限付きアクセスを提供できます。詳細はこちらを参照してください。
azureBlobStorage 関数は共有アクセス署名 (SAS) をサポートしています。
Blob SAS トークンには、対象の BLOB、アクセス許可、有効期間など、リクエストの認証に必要なすべての情報が含まれます。BLOB の URL を構成するには、BLOB サービス エンドポイントに SAS トークンを付加します。たとえば、エンドポイントが https://clickhousedocstest.blob.core.windows.net/ の場合、リクエストは次のようになります。
または、生成された Blob SAS URL を使用することもできます。