> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse の azureBlobStorage テーブル関数を使う

# ClickHouse の azureBlobStorage テーブル関数を使う

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

これは、Azure Blob Storage または Azure Data Lake Storage から ClickHouse にデータをコピーする、最も効率的でシンプルな方法の 1 つです。このテーブル関数を使うと、ClickHouse が Azure ストレージに直接接続し、必要なときにデータを読み取るようにできます。

この関数は、元データに対して直接 select、insert、filter を実行できるテーブル形式インターフェイスを提供します。この関数は高度に最適化されており、`CSV`、`JSON`、`Parquet`、`Arrow`、`TSV`、`ORC`、`Avro` など、広く使われている多くのファイルフォーマットをサポートしています。完全な一覧については、["データフォーマット"](/docs/ja/reference/formats/index) を参照してください。

このセクションでは、Azure Blob Storage から ClickHouse にデータを転送するための簡単な入門ガイドと、この関数を効果的に使うための重要な注意点を説明します。詳細および高度なオプションについては、公式ドキュメントを参照してください。
[`azureBlobStorage` テーブル関数 documentation page](/docs/ja/reference/functions/table-functions/azureBlobStorage)

<div id="acquiring-azure-blob-storage-access-keys">
  ## Azure Blob Storage のアクセスキーを取得する
</div>

ClickHouse が Azure Blob Storage にアクセスするには、アクセスキーを含む接続文字列が必要です。

1. Azure Portal で **Storage Account** に移動します。

2. 左側のメニューで、**Security +
   networking** セクションの **Access keys** を選択します。
   <Image img="https://mintcdn.com/private-7c7dfe99/k4wNHsd_gyvah7Fr/images/integrations/data-ingestion/azure-data-factory/azure-data-store-settings.webp?fit=max&auto=format&n=k4wNHsd_gyvah7Fr&q=85&s=508a9d21ffb595d9c42aceb1b8d41758" size="lg" alt="Azure Data Store Settings" border width="1910" height="956" data-path="images/integrations/data-ingestion/azure-data-factory/azure-data-store-settings.webp" />

3. **key1** または **key2** のいずれかを選択し、**Connection string** フィールドの横にある **Show** ボタンをクリックします。
   <Image img="https://mintcdn.com/private-7c7dfe99/k4wNHsd_gyvah7Fr/images/integrations/data-ingestion/azure-data-factory/azure-data-store-access-keys.webp?fit=max&auto=format&n=k4wNHsd_gyvah7Fr&q=85&s=4c6be625cdb736a731bd995ceb65ef47" size="lg" alt="Azure Data Store Access Keys" border width="1910" height="956" data-path="images/integrations/data-ingestion/azure-data-factory/azure-data-store-access-keys.webp" />

4. 接続文字列をコピーします。これは azureBlobStorage テーブル関数のパラメータとして使用します。

<div id="querying-the-data-from-azure-blob-storage">
  ## Azure Blob Storage のデータをクエリする
</div>

使用する ClickHouse のクエリコンソールを開きます。ClickHouse Cloud の
Web インターフェイス、ClickHouse CLI クライアント、またはクエリの実行に使用している
その他の任意のツールを利用できます。接続文字列と ClickHouse のクエリコンソールの両方の準備ができたら、
Azure Blob Storage から直接データをクエリできます。

次の例では、`data-container` という名前のコンテナー内にある
JSONファイルに保存されたすべてのデータをクエリします。

```sql theme={null}
SELECT * FROM azureBlobStorage(
    '<YOUR CONNECTION STRING>',
    'data-container',
    '*.json',
    'JSONEachRow');
```

そのデータをローカルのClickHouseテーブル (例: my\_table) にコピーするには、`INSERT INTO ... SELECT`ステートメントを使用できます:

```sql theme={null}
INSERT INTO my_table
SELECT * FROM azureBlobStorage(
    '<YOUR CONNECTION STRING>',
    'data-container',
    '*.json',
    'JSONEachRow');
```

これにより、中間的なETL処理を挟まずに、外部データを効率的にClickHouseに取り込めます。

<div id="simple-example-using-the-environmental-sensors-dataset">
  ## Environmental Sensors データセットを使った簡単な例
</div>

例として、Environmental Sensors
データセットから 1 つのファイルをダウンロードします。

1. [サンプルファイル](https://clickhouse-public-datasets.s3.eu-central-1.amazonaws.com/sensors/monthly/2019-06_bmp180.csv.zst)
   を [Environmental Sensors データセット](/docs/ja/get-started/sample-datasets/environmental-sensors) からダウンロードします。

2. Azure Portal で、ストレージ アカウントをまだ作成していない場合は、新しく作成します。

<Warning>
  ストレージ アカウントで **Allow storage account key access** が有効になっていることを確認してください。
  これが有効でないと、アカウント キーを使用してデータにアクセスできません。
</Warning>

3. ストレージ アカウントに新しいコンテナーを作成します。この例では、名前を sensors にします。
   既存のコンテナーを使用する場合は、この手順を省略できます。

4. 先ほどダウンロードした `2019-06_bmp180.csv.zst` ファイルを
   コンテナーにアップロードします。

5. 前述の手順に従って、Azure Blob Storage の
   接続文字列を取得します。

これで準備が整ったので、Azure Blob Storage から直接データをクエリできます。

```sql theme={null}
    SELECT *
    FROM azureBlobStorage(
        '<YOUR CONNECTION STRING>', 
        'sensors',
        '2019-06_bmp180.csv.zst', 
        'CSVWithNames')
    LIMIT 10
    SETTINGS format_csv_delimiter = ';'
```

7. データをテーブルに読み込むには、元のデータセットで使用されている
   スキーマを簡略化したものを作成します:
   ```sql theme={null}
   CREATE TABLE sensors
   (
       sensor_id UInt16,
       lat Float32,
       lon Float32,
       timestamp DateTime,
       temperature Float32
   )
   ENGINE = MergeTree
   ORDER BY (timestamp, sensor_id);
   ```

<Info>
  Azure Blob Storage のような外部ソースに対してクエリを実行する際の設定オプションやスキーマ推論の詳細については、[入力データからの自動
  スキーマ推論](/docs/ja/concepts/features/interfaces/schema-inference)
  を参照してください。
</Info>

8. 次に、Azure Blob Storage から sensors テーブルにデータを挿入します:
   ```sql theme={null}
   INSERT INTO sensors
   SELECT sensor_id, lat, lon, timestamp, temperature
   FROM azureBlobStorage(
       '<YOUR CONNECTION STRING>', 
       'sensors',
       '2019-06_bmp180.csv.zst', 
       'CSVWithNames')
   SETTINGS format_csv_delimiter = ';'
   ```

これで、sensors テーブルに Azure Blob Storage に保存されている `2019-06_bmp180.csv.zst`
ファイルのデータが取り込まれました。

<div id="additional-resources">
  ## 参考資料
</div>

ここでは、azureBlobStorage 関数の基本的な使い方のみを紹介しました。より高度なオプションや設定の詳細については、公式ドキュメントを参照してください。

* [azureBlobStorage テーブル関数](/docs/ja/reference/functions/table-functions/azureBlobStorage)
* [入力データと出力データのフォーマット](/docs/ja/reference/formats/index)
* [入力データからの自動スキーマ推論](/docs/ja/concepts/features/interfaces/schema-inference)
