AzureBlobStorage テーブルエンジン
このエンジンは Azure Blob Storage エコシステムとの統合を提供します。
テーブルの作成
エンジンパラメータ
endpoint— AzureBlobStorage エンドポイント URL とコンテナおよびプレフィックス。必要に応じて、認証方法に必要な account_name を含むことがあります。(http://azurite1:{port}/[account_name]{container_name}/{data_prefix}) または、これらのパラメータを storage_account_url、account_name、container を使用して別々に提供できます。プレフィックスを指定するには、エンドポイントを使用する必要があります。endpoint_contains_account_name- このフラグは、特定の認証方法にのみ必要なため、エンドポイントが account_name を含むかどうかを指定するために使用されます。(デフォルト : true)connection_string|storage_account_url— connection_string にはアカウント名とキーが含まれます (接続文字列の作成) または、ここでストレージアカウントのURLを提供し、アカウント名とアカウントキーを別々のパラメータとして指定することもできます (パラメータ account_name および account_key を参照)container_name- コンテナ名blobpath- ファイルパス。読み取り専用モードで以下のワイルドカードをサポートします:*,**,?,{abc,def}および{N..M}ただし、NとMは数値、'abc'および'def'は文字列です。account_name- storage_account_url が使用されている場合、ここでアカウント名を指定できます。account_key- storage_account_url が使用されている場合、ここでアカウントキーを指定できます。format— ファイルの フォーマット。compression— サポートされている値:none,gzip/gz,brotli/br,xz/LZMA,zstd/zst。デフォルトでは、ファイルの拡張子によって圧縮を自動検出します。(autoに設定するのと同じです)。partition_strategy– オプション:WILDCARDまたはHIVE。WILDCARDは、パス内の{_partition_id}を実際のパーティションキーに置き換えます。HIVEはワイルドカードを許可せず、パスはテーブルのルートであると仮定し、Hiveスタイルのパーティションディレクトリを生成し、Snowflake ID をファイル名として、ファイル形式を拡張子として使用します。デフォルトはWILDCARDpartition_columns_in_data_file-HIVEパーティション戦略でのみ使用されます。ClickHouse にデータファイルにパーティションカラムが書き込まれることを期待するかどうかを示します。デフォルトはfalse。extra_credentials- 認証のためにclient_idおよびtenant_idを使用します。extra_credentials が提供されると、それらはaccount_nameとaccount_keyよりも優先されます。
例
ユーザーは、ローカル Azure Storage 開発のために Azurite エミュレーターを使用できます。さらなる詳細は こちら をご覧ください。ローカルの Azurite インスタンスを使用している場合、ユーザーは以下のコマンドで http://azurite1:10000 を http://localhost:10000 に置き換える必要があります。ここでは Azurite がホスト azurite1 で利用可能であると仮定しています。
仮想カラム
_path— ファイルへのパス。タイプ:LowCardinality(String)。_file— ファイルの名前。タイプ:LowCardinality(String)。_size— ファイルのサイズ(バイト単位)。タイプ:Nullable(UInt64)。サイズが不明な場合、値はNULLです。_time— ファイルの最終更新時間。タイプ:Nullable(DateTime)。時間が不明な場合、値はNULLです。
認証
現在、認証を行う方法は 3 つあります:
Managed Identity-endpoint、connection_stringまたはstorage_account_urlを提供することで使用できます。SAS Token-endpoint、connection_stringまたはstorage_account_urlを提供することで使用できます。URL に '?' があることで識別されます。例については azureBlobStorage を参照してください。Workload Identity-endpointまたはstorage_account_urlを提供することで使用できます。config でuse_workload_identityパラメータが設定されている場合、認証のために (workload identity) が使用されます。
データキャッシュ
Azure テーブルエンジンは、ローカルディスクでのデータキャッシングをサポートしています。
ファイルシステムキャッシュの設定オプションと使用法については、この セクション を参照してください。
キャッシングはストレージオブジェクトのパスと ETag に依存するため、ClickHouse は古いキャッシュバージョンを読み込むことはありません。
キャッシングを有効にするには、設定 filesystem_cache_name = '<name>' および enable_filesystem_cache = 1 を使用します。
- ClickHouse 設定ファイルに次のセクションを追加します:
- ClickHouse の
storage_configurationセクションからキャッシュ設定(したがってキャッシュストレージ)を再利用します。これは こちら で説明されています。
パーティションによる
PARTITION BY — オプションです。ほとんどの場合、パーティションキーは不要ですが、必要な場合、通常は月単位でそれ以上の細かなパーティションキーは必要ありません。パーティショニングはクエリを高速化しません(ORDER BY 式とは対照的)。あまりに細かなパーティショニングを行うべきではありません。クライアントの識別子や名前でデータをパーティショニングしないでください(その代わり、クライアント識別子や名前を ORDER BY 式の最初のカラムにしてください)。
月単位でのパーティショニングには、toYYYYMM(date_column) 式を使用します。ここで、date_column は Date 型のカラムです。パーティション名はここで "YYYYMM" 形式になります。
パーティション戦略
WILDCARD(デフォルト):ファイルパス内の {_partition_id} ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。
HIVE は、読み取りおよび書き込みのための Hive スタイルのパーティショニングを実装します。読み取りは再帰的なグロブパターンを使用して実装されます。書き込みは次の形式のファイルを生成します: <prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>。
注意: HIVE パーティション戦略を使用する場合、use_hive_partitioning 設定は影響しません。
HIVE パーティション戦略の例: