Skip to content
Last updated

Microsoft Azure Blob Storage Import Integration

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から送信できます。

新しいMicrosoft Azure Blob Storageコネクタの作成

まず、以下のパラメータを設定してコネクタを登録する必要があります。

  • Storage Account name:Microsoft Azure Blob Storageアカウントの名前。
  • Primary access key: Microsoft Azure Blob Storageアカウントへのアクセスに使用するアクセスキー。

プロキシ設定が有効な場合

Microsoft Azure Storageからデータを転送する

次に、My Connectionsページで「New Transfer」を作成します。アドホックDataConnectorジョブまたはスケジュールDataConnectorジョブを準備できます。以下の手順を実行してください。

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$(必須ではありません)

Preview

設定したデータのプレビューを表示できます。プレビューが表示されない場合、またはプレビューの表示に問題がある場合は、サポートにお問い合わせください。

プレビューコマンドは、指定されたバケットから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フィルタの追加と併せて使用されます。

When

このフェーズでは、ジョブのアドホックまたはスケジュール設定を行うことができます。

  • When

    • Once now: 転送を1回だけ実行します。

    • Repeat…

      • Schedule: 次の3つのオプションを受け付けます: @hourly@daily@monthly、およびカスタムcron
      • Delay Transfer: 実行時間に遅延を追加します。
    • Data Storage Timezone: データが保存されるタイムゾーン。データはこのタイムゾーンでも表示されます。「Asia/Tokyo」などの拡張タイムゾーン形式をサポートしています。

頻度を選択した後、Start Transferを選択して転送を開始します。エラーがなければ、Treasure Dataへの転送が完了し、データが利用可能になります。転送が実行されると、ジョブが起動されます。JobsセクションまたはMy Input Transfersセクションを使用して、データ転送の進行状況を監視できます。

データインポートのトラブルシューティング

ジョブログを確認してください。警告とエラーは、インポートの成功に関する情報を提供します。たとえば、インポートエラーに関連するソースファイル名を特定することができます。

CLIを使用したコネクタの設定

コマンドラインインターフェイスからMicrosoft Azure Blob Storageデータコネクタを使用することもできます。以下の手順は、CLIを使用してデータをインポートする方法を示しています。

'td'コマンド v0.11.9以降をインストールする

最新のTreasure Data Toolbeltをインストールしてください。

$ td --version
0.11.10

シード設定ファイル (seed.yml) の作成

まず、以下の例のように、アカウント情報を含む seed.yml を準備します(Azure ストレージアカウントについてを確認してください)。また、コンテナ名とターゲットファイル名(または複数ファイルのプレフィックス)も指定する必要があります。

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 を開くと、ファイル形式、エンコーディング、カラム名、型を含む推測されたファイル形式定義が表示されます。

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 のストレージは時間によってパーティション化されているため(データパーティショニングを参照)、--time-column オプションを指定することをお勧めします。オプションが指定されていない場合、Data Connector は最初の long または timestamp カラムをパーティショニング時間として選択します。--time-column で指定されるカラムの型は、long および timestamp 型のいずれかである必要があります。

データに時間カラムがない場合は、add_time フィルターオプションを使用して時間カラムを追加できます。詳細については、add_time フィルタープラグインを参照してください。

$ 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 コマンドは失敗するため、手動でデータベースとテーブルを作成するか、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 のストレージは時間によってパーティション化されているため(データパーティショニングを参照)、--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