# Microsoft Azure Blob Storage Import Integration [Microsoft Azure Blob Storage Export Integrationの詳細はこちら](/ja/int/microsoft-azure-blob-storage-export-integration)をご覧ください。 Microsoft Azure Blob Storage用のオープンデータコネクタは、Azure Blob Storageコンテナに保存されている*.tsvおよび*.csvファイルの内容をインポートできます。 # 制限事項 **コネクタUIの制限事項**。コネクタUIでの編集には多くの制限があります。編集にはCLIの使用を推奨します。 階層型名前空間が有効になっている場合、増分フローは正常に動作しません。 ## 前提条件 - Treasure Dataの基本知識 - Microsoft Azure Platformアカウント ## 接続の設定 Microsoft Azure Blob Storage用のDataConnectorは、[Connector UI](https://console.treasuredata.com/app/connections)から送信できます。 ![](/assets/image-20191015-154021.a5cc6ed2d6c8814d389e469db0eee27e0144a91e90a2a1bb2f1573c020746a54.743883bd.png) ## 新しいMicrosoft Azure Blob Storageコネクタの作成 まず、以下のパラメータを設定してコネクタを登録する必要があります。 - **Storage Account name**:Microsoft Azure Blob Storageアカウントの名前。 - **Primary access key:** Microsoft Azure Blob Storageアカウントへのアクセスに使用するアクセスキー。 ![](/assets/image-20191015-154039.ffdcfb7e9cd7929c00d3c2a69133a08267aff7678c0aa1977b9cacd943b16850.743883bd.png) プロキシ設定が有効な場合 ![](/assets/image2021-9-20_13-54-47.a9d4f91ae596b2cc09993d4d6af92ac72d25a04bbb1af94e1f623422c181929a.743883bd.png) ## Microsoft Azure Storageからデータを転送する 次に、My Connectionsページで「New Transfer」を作成します。アドホックDataConnectorジョブまたはスケジュールDataConnectorジョブを準備できます。以下の手順を実行してください。 ![](/assets/image-20191015-154058.379b76779f527bd1c574756b4a413be14a62c4ed61182febca7b2ff6f9ad01f4.743883bd.png) ### Fetch from 取り込みたい情報を登録します。 - **Container**: Azureクラウドストレージのコンテナ名(例: *your_cont*) - **Path Prefix**: ターゲットキーのプレフィックス。(例: *logs/data_*) - **Path Regex**: ファイルパスにマッチする正規表現。ファイルパスがこのパターンにマッチしない場合、そのファイルはスキップされます。(例: *.csv$* # この場合、パスがこのパターンにマッチしない場合、ファイルはスキップされます) ##### 例: CloudFront Amazon CloudFrontは、静的および動的なWebコンテンツの配信を高速化するWebサービスです。CloudFrontを設定して、CloudFrontが受信するすべてのユーザーリクエストに関する詳細情報を含むログファイルを作成できます。ロギングを有効にすると、次のようなCloudFrontログファイルを保存できます。 ``` [your_bucket] - [logging] - [E231A697YXWD39.2017-04-23-15.a103fd5a.gz] [your_bucket] - [logging] - [E231A697YXWD39.2017-04-23-15.b2aede4a.gz] [your_bucket] - [logging] - [E231A697YXWD39.2017-04-23-16.594fa8e6.gz] [your_bucket] - [logging] - [E231A697YXWD39.2017-04-23-16.d12f42f9.gz] ``` この場合、「Fetch from」の設定は以下のようになります。 - **Container**: your_container - **Path Prefix**: logging/ - **Path Regex**: *.gz$*(必須ではありません) ![](/assets/image-20191015-154114.8752d03745b3b93f6ef2fe555ee753273ac81b6cfccaaca9db12362215dd7591.743883bd.png) ### Preview 設定したデータのプレビューを表示できます。プレビューが表示されない場合、またはプレビューの表示に問題がある場合は、[サポート](mailto:support@treasuredata.com)にお問い合わせください。 ![](/assets/image-20191209-211644.78d7eda5add6ed363b9050c68fcb1b7e6fcf1a3e0ed6f3f666e792ad54a83013.743883bd.png) プレビューコマンドは、指定されたバケットから1つのファイルをダウンロードし、そのファイルから結果を表示します。これにより、プレビューとissueコマンドの結果に違いが生じる可能性があります。 特定のカラム名を設定したい場合は、**Advanced Settings**を選択してください。 #### Advanced Settings Advanced Settingsでは、推測されたプロパティを編集できます。必要に応じて以下のセクションを編集してください。 - **Default timezone**: 値自体にタイムゾーンが含まれていない場合、タイムスタンプカラムのタイムゾーンを変更します。 - **Columns**: - **Name**: カラム名を変更します。カラム名に使用できる文字は、小文字のアルファベット、数字、「_」(アンダースコア)のみです。 - **Type**: 値を指定されたタイプとして解析し、そのタイプをTreasure Dataスキーマの一部として保存します。 - **boolean** - **long** - **timestamp**: Treasure DataではString型としてインポートされます(例: 2017-04-01 00:00:00.000) - **double** - **string** - **json** - **Total file count limit**: 読み込むファイルの最大数。(オプション) ### Transfer to このフェーズでは、インポート先のターゲットdatabaseとtableを選択します。`Create new database`または`Create new table`のチェックボックスを使用して、新しいdatabaseまたはtableを作成できます。 - **Mode**: Append – 既存のtableにレコードを追加できます。 - **Mode**: Replace – tableの既存データを、インポートされるデータで置き換えます。 - **Partition key Seed**: パーティショニング時間カラムとして使用したいlongまたはtimestampカラムを選択します。時間カラムを指定しない場合、転送のアップロード時間がadd_timeフィルタの追加と併せて使用されます。 ![](/assets/image-20191015-154201.3b19c127a567d44468ddb9d0ec5b68c35be196f47ea4a1c4c330d9e7eacb0f54.743883bd.png) ### When このフェーズでは、ジョブのアドホックまたはスケジュール設定を行うことができます。 - When - **Once now**: 転送を1回だけ実行します。 - **Repeat…** - **Schedule**: 次の3つのオプションを受け付けます: `@hourly`、`@daily`、`@monthly`、およびカスタム`cron`。 - **Delay Transfer**: 実行時間に遅延を追加します。 - **Data Storage Timezone**: データが保存されるタイムゾーン。データはこのタイムゾーンでも表示されます。「Asia/Tokyo」などの拡張タイムゾーン形式をサポートしています。 ![](/assets/image-20191015-154222.2e3ccc0223d646f83485d513f7eb860b0e0d9c7338cb1df4fdd8cf50f85fb185.743883bd.png) 頻度を選択した後、**Start Transfer**を選択して転送を開始します。エラーがなければ、Treasure Dataへの転送が完了し、データが利用可能になります。転送が実行されると、ジョブが起動されます。JobsセクションまたはMy Input Transfersセクションを使用して、データ転送の進行状況を監視できます。 # データインポートのトラブルシューティング ジョブログを確認してください。警告とエラーは、インポートの成功に関する情報を提供します。たとえば、[インポートエラーに関連するソースファイル名を特定する](https://docs.treasuredata.com/smart/project-product-documentation/data-import-error-troubleshooting)ことができます。 # CLIを使用したコネクタの設定 コマンドラインインターフェイスからMicrosoft Azure Blob Storageデータコネクタを使用することもできます。以下の手順は、CLIを使用してデータをインポートする方法を示しています。 ## 'td'コマンド v0.11.9以降をインストールする 最新の[Treasure Data Toolbelt](https://toolbelt.treasuredata.com/)をインストールしてください。 ``` $ td --version 0.11.10 ``` ## シード設定ファイル (seed.yml) の作成 まず、以下の例のように、アカウント情報を含む *seed.yml* を準備します([Azure ストレージアカウントについて](https://azure.microsoft.com/en-us/documentation/articles/storage-create-storage-account/)を確認してください)。また、コンテナ名とターゲットファイル名(または複数ファイルのプレフィックス)も指定する必要があります。 ``` in: type: azure_blob_storage account_name: myaccount account_key: myaccount_key container: my-container path_prefix: logs/csv- out: mode: append ``` Data Connector for Microsoft Azure Blob Storage は、指定されたプレフィックスに一致するすべてのファイルをインポートします。(例: path_prefix: `path/to/sample_` –> `path/to/sample_201501.csv.gz`, `path/to/sample_201502.csv.gz`, …, `path/to/sample_201505.csv.gz`) 利用可能な *out* モードの詳細については、以下の付録を参照してください。 ## 4.3. フィールドの推測 (load.yml の生成) 次に、*connector:guess* を使用します。このコマンドは、ソースファイルを自動的に読み取り、ファイル形式を評価(ロジックを使用して推測)します。 ``` $ td connector:guess seed.yml -o load.yml ``` *load.yml* を開くと、ファイル形式、エンコーディング、カラム名、型を含む推測されたファイル形式定義が表示されます。 ```yaml in: type: azure_blob_storage account_name: myaccount account_key: myaccount_key container: my-container path_prefix: logs/csv- decoders: - {type: gzip} parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' header_line: true columns: - {name: id, type: long} - {name: account, type: long} - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'} - {name: purchase, type: timestamp, format: '%Y%m%d'} - {name: comment, type: string} out: mode: append ``` 次に、*preview* コマンドを使用して、システムがファイルをどのように解析するかをプレビューできます。 ``` $ td connector:preview load.yml +-------+---------+----------+---------------------+ | id | company | customer | created_at | +-------+---------+----------+---------------------+ | 11200 | AA Inc. | David | 2015-03-31 06:12:37 | | 20313 | BB Imc. | Tom | 2015-04-01 01:00:07 | | 32132 | CC Inc. | Fernando | 2015-04-01 10:33:41 | | 40133 | DD Inc. | Cesar | 2015-04-02 05:12:32 | | 93133 | EE Inc. | Jake | 2015-04-02 14:11:13 | +-------+---------+----------+---------------------+ ``` | | | --- | | guess コマンドは、ソースデータからサンプル行を使用してカラム定義を推測するため、ソースデータファイルに3行以上と2カラム以上が必要です。 | システムがカラム名またはカラム型を予期せず検出した場合は、*load.yml* を直接修正して、再度プレビューしてください。 現在、Data Connector は "boolean"、"long"、"double"、"string"、および "timestamp" 型の解析をサポートしています。 データロードジョブを実行する前に、ローカルデータベースとテーブルを作成する必要があります。以下の手順に従ってください。 ``` $ td database:create td_sample_db $ td table:create td_sample_db td_sample_table ``` ## 4.4. ロードジョブの実行 最後に、ロードジョブを送信します。データのサイズによっては、数時間かかる場合があります。データが格納される Treasure Data データベースとテーブルを指定してください。 Treasure Data のストレージは時間によってパーティション化されているため([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照)、*--time-column* オプションを指定することをお勧めします。オプションが指定されていない場合、Data Connector は最初の *long* または *timestamp* カラムをパーティショニング時間として選択します。*--time-column* で指定されるカラムの型は、*long* および *timestamp* 型のいずれかである必要があります。 データに時間カラムがない場合は、*add_time* フィルターオプションを使用して時間カラムを追加できます。詳細については、[add_time フィルタープラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table \ --time-column created_at ``` connector:issue コマンドは、*database(td_sample_db)* と *table(td_sample_table)* が既に作成されていることを前提としています。データベースまたはテーブルが TD に存在しない場合、connector:issue コマンドは失敗するため、[手動で](https://docs.treasuredata.com/smart/project-product-documentation/data-management)データベースとテーブルを作成するか、*td connector:issue* コマンドで *--auto-create-table* オプションを使用してデータベースとテーブルを自動作成してください。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-table ``` | | | --- | | 現在、Data Connector はサーバー側でレコードをソートしません。時間ベースのパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。 | *time* というフィールドがある場合は、*--time-column* オプションを指定する必要はありません。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table ``` # スケジュール実行 増分的な Microsoft Azure Blob Storage ファイルインポートのために、定期的な Data Connector の実行をスケジュールできます。高可用性を確保するために、スケジューラーを慎重に設定しています。この機能を使用することで、ローカルデータセンターに *cron* デーモンが不要になります。 スケジュールされたインポートでは、Data Connector for Microsoft Azure Blob Storage は、指定されたプレフィックスに一致するすべてのファイル(例: path_prefix: `path/to/sample_` –> `path/to/sample_201501.csv.gz`, `path/to/sample_201502.csv.gz`, …, `path/to/sample_201505.csv.gz`)を最初にインポートし、次の実行のために最後のパス(`path/to/sample_201505.csv.gz`)を記憶します。 2回目以降の実行では、コネクターはアルファベット順(辞書順)で最後のパスの後に来るファイルのみをインポートします(`path/to/sample_201506.csv.gz`, …)。 ## スケジュールの作成 新しいスケジュールは、*td connector:create* コマンドを使用して作成できます。以下が必要です: スケジュールの名前、cron スタイルのスケジュール、データが格納されるデータベースとテーブル、および Data Connector 設定ファイル。 ``` $ td connector:create \ daily_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml ``` Treasure Data のストレージは時間によってパーティション化されているため([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照)、*--time-column* オプションを指定することをお勧めします。 ``` $ td connector:create \ daily_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml \ --time-column created_at ``` | | | --- | | `cron`パラメータは、`@hourly`、`@daily`、`@monthly`の3つの特別なオプションも受け付けます。 | | --- | ## スケジュールの一覧表示 *td connector:list*コマンドを実行することで、現在スケジュールされているエントリの一覧を確認できます。 ``` $ td connector:list +--------------+------------+----------+-------+--------------+-----------------+-------------------------------------------+ | Name | Cron | Timezone | Delay | Database | Table | Config | +--------------+------------+----------+-------+--------------+-----------------+-------------------------------------------+ | daily_import | 10 0 * * * | UTC | 0 | td_sample_db | td_sample_table | {"in"=>{"type"=>"azure_blob_storage", ... | +--------------+------------+----------+-------+--------------+-----------------+-------------------------------------------+ ``` ## 設定とスケジュール履歴の表示 *td connector:show*は、スケジュールエントリの実行設定を表示します。 ``` % td connector:show daily_import Name : daily_import Cron : 10 0 * * * Timezone : UTC Delay : 0 Database : td_sample_db Table : td_sample_table ``` *td connector:history*は、スケジュールエントリの実行履歴を表示します。各実行の結果を調査するには、*td job jobid*を使用します。 ``` % td connector:history daily_import +--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+ | JobID | Status | Records | Database | Table | Priority | Started | Duration | +--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+ | 578066 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-18 00:10:05 +0000 | 160 | | 577968 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-17 00:10:07 +0000 | 161 | | 577914 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-16 00:10:03 +0000 | 152 | | 577872 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-15 00:10:04 +0000 | 163 | | 577810 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-14 00:10:04 +0000 | 164 | | 577766 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-13 00:10:04 +0000 | 155 | | 577710 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-12 00:10:05 +0000 | 156 | | 577610 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-11 00:10:04 +0000 | 157 | +--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+ 8 rows in set ``` ## スケジュールの削除 *td connector:delete*は、スケジュールを削除します。 ``` $ td connector:delete daily_import ``` # 付録 ## A) outプラグインのモード seed.ymlの*out*セクションでファイルインポートモードを指定できます。 ### append(デフォルト) これはデフォルトのモードで、レコードはターゲットテーブルに追加されます。 ``` in: ... out: mode: append ``` ### replace(td 0.11.10以降) このモードは、ターゲットテーブルのデータを置き換えます。このモードでは、ターゲットテーブルに対して手動で行ったスキーマ変更はそのまま保持されることに注意してください。 ``` in: ... out: mode: replace ``` ## B) プロキシ設定 ``` in: type: azure_blob_storage account_name: myaccount account_key: myaccount_key container: my-container path_prefix: logs/csv- proxy: type: http host: 201.202.203.10 port: 8080 user: test password: test ``` ## B) 最終パスによる増分ロード ``` in: type: azure_blob_storage account_name: myaccount account_key: myaccount_key container: my-container path_prefix: logs/csv- incremental: true use_modified_time: false last_path: logs/csv-123.csv ``` ## C) 最終更新時刻による増分ロード ``` in: type: azure_blob_storage account_name: myaccount account_key: myaccount_key container: my-container path_prefix: logs/csv- incremental: true use_modified_time: true last_modified_time: 2025-04-09T00:00:00.000Z ```