Skip to content
Last updated

Dropbox Export Integration

この記事では、Treasure Data からクエリ実行結果を直接 Dropbox アカウントにエクスポートする方法を説明します。

前提条件

  • toolbelt を含む Treasure Data の基礎知識
  • Dropbox アカウント
  • 認可された Treasure Data アカウントへのアクセス権

TD Console を使用して接続を作成する

新しい接続を作成する

データ接続を設定する際、インテグレーションにアクセスするための認証情報を提供します。Treasure Data では、認証を設定してからソース情報を指定します。

  1. TD Console を開きます。
  2. Integrations Hub > Catalog に移動します。
  3. Catalog 画面の右端にある検索アイコンをクリックし、Dropbox と入力します。
  4. Dropbox コネクタにカーソルを合わせ、Create Authentication を選択します。
  5. 以下のダイアログが開きます。Treasure Data Dropbox へのアクセスには OAuth2 認証が必要です。この認証では、ユーザーが自分の Treasure Data アカウントをそれぞれの Dropbox アカウントに手動で接続する必要があります。

認証するには、Click here を選択して新しいアカウントに接続します。

  1. ポップアップウィンドウで Dropbox アカウントにログインし、Treasure Data アプリへのアクセスを許可します(これは初回のみ必要です)。

  1. TD Console にリダイレクトされます。最初のステップ(新しい接続を作成する)を繰り返し、新しい OAuth 接続を選択します。

  1. 新しい Dropbox 接続に名前を付けます。Done を選択します。

データ接続への出力結果を設定する

このステップでは、クエリを作成または再利用します。クエリ内でデータ接続を設定します。

  1. Data Workbench > Queries に移動します。
  2. データのエクスポートに使用する予定のクエリを選択するか、必要に応じて新しいクエリを作成します。
  3. Export Results を選択して、結果のエクスポート先を指定します。

結果のエクスポート先を指定する

  1. Export Results を選択すると、以下のダイアログが開きます。
  2. 検索ボックスに接続名を入力してフィルタリングし、Dropbox 接続を選択します。

  1. すべての情報を編集します。

パラメータ説明
Path Root Modesパスルートヘッダーモード。利用可能なオプション: home、root、namespace、path-root-header-modes を参照
Namespace Idnamespace パスルートモードを選択した場合に表示され、必須となります
Folder PathDropbox 内のフォルダのディレクトリ
File Name拡張子を除いた宛先ファイル名
Formatファイル拡張子
Encoders- None - エンコーダは適用されません(デフォルト)- GZ - ファイルはアップロード前に gzip を使用して圧縮されます - BZIP2 - ファイルはアップロード前に bzip2 を使用して圧縮されます - PGP Encryption - ファイルはアップロード前に公開鍵を使用して暗号化されます
Public Key Encoder が PGP encryption の場合は必須- ファイルをアップロード前に暗号化するために使用される公開鍵
Key Identifier Encoder が PGP encryption の場合は必須- ファイルを保護するために使用される暗号化サブキーの Key ID を指定します。マスターキーは暗号化プロセスから除外されます。
Amor オプション- ASCII armor を使用するかどうか
Compression Type オプション- ファイルの圧縮に使用される圧縮アルゴリズムを定義します。ファイルは SFTP サーバーにアップロードするために暗号化する前に圧縮されます。- 注意: ファイルを暗号化してアップロードする前に必ず圧縮してください。復号化すると、ファイルは .gz や .bz2 などの圧縮形式に戻ります。
Header lineエクスポートされたデータにヘッダー行として列名がある場合に選択します。
Null StringNULL 値を表すために使用する値。利用可能なオプション: - Default: ファイル形式が CSV の場合は空文字列('')が NULL 値を表すために使用され、TSV 形式の場合は \N が使用されます。 - Empty string - \N NULL - null
End-of-line character行末の文字。利用可能なオプションは CRLF、LF、CR です
Quote Policy利用可能なオプション: - ALL: すべての値が二重引用符("")で囲まれる場合に選択します。 - MINIMAL: 埋め込まれた引用符(")を含む値が連続する引用符のペア("")で表示される場合に選択します。MINIMAL クォートポリシーは CSV に適用されます。 - NONE: 埋め込まれた引用符に対するエスケープが適用されない場合に選択します。デフォルトでは、NONE が TSV ファイル形式に適用されます。
Max RetriesDropbox サーバーエラーまたはネットワークエラーによりエラーが発生した場合、アップロードを中止する前に試行される再試行回数。

クエリを実行する

  1. Save を選択してクエリに名前を付けて保存して実行するか、Run を選択してクエリを実行します。

2. クエリが正常に実行されると、クエリ結果は指定されたコンテナの宛先に自動的にインポートされます。

クエリの例

SELECT email, first_name, last_name, region, age, gender, website FROM (
 VALUES ('kate1@gmail.com', 'Kate', 'Tiny', 'Asia', '41 and above', 'female', 'google.com'),
 ('ronan@gmail.com', 'R', 'P', 'Americas', '21-30', 'male', 'google.com'),
 ('michelle@gmail.com', 'M', 'C', 'EMEA', '31-40', 'male', 'facebook.com')
) tbl (email, first_name, last_name, region, age, gender, website);

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

TD Console を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

  1. Audience Studio に移動します。
  2. parent segment を選択します。
  3. ターゲット segment を開き、右クリックして、Create Activation を選択します。
  4. Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
  5. Output Mapping パネルで activation 出力をカスタマイズします。

  • Attribute Columns
    • Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
    • + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
  • String Builder
    • + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
      • String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
      • Timestamp: エクスポートの日時。
      • Segment Id: segment ID 番号。
      • Segment Name: segment 名。
      • Audience Id: parent segment 番号。
  1. Schedule を設定します。

  • スケジュールを定義する値を選択し、オプションでメール通知を含めます。
  1. Create を選択します。

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

オプション: Workflow でエクスポート結果を設定する

Treasure Workflow 内で、このデータコネクタを使用してデータを出力するように指定できます。

timezone: UTC

_export:
  td:
 database: sample_datasets

+td-result:
  td>: queries/sample.sql
  result_connection: your_connection_name
  result_settings:
   access_token: ###
   path_root_mode: namespace | home | root (default: home)
   namespace_id: 1234567
   file_name: file01
   folder_path: /abc
   replace_existing: false
   format: csv
   compression: gz
   header_line: true
   null_string: default
   newline: CRLF
   quote_policy: null
   retry_count: 5
   retry_initial_wait_millis: 1000
   max_retry_wait_millis: 30000

Workflow でデータコネクタを使用してデータをエクスポートする方法の詳細については、こちらを選択してください。

CLI を使用して接続を作成する

'td' コマンドをインストールする

Treasure Data Toolbelt をインストールします。

オンデマンドジョブの場合

td query コマンドの r/ -result オプションを使用して、Dropbox 結果出力先を追加します。

td query -d sample_datasets -w 'SELECT host, path FROM www_access' --type presto -r '{"type":"dropbox", "access_token":"your_token","folder_path":"/abc","file_name":"test_file","replace_existing":null,"format":"csv","compression":"gz","header_line":true,"null_string":"default","newline":"CRLF","quote_policy":null,"retry_count":"5","retry_initial_wait_millis":"1000","max_retry_wait_millis":"300000"}'

スケジュールジョブの場合

td sched:create コマンドの r/ -result オプションを使用して、Dropbox 結果出力先を追加します。

td sched:create every_6_mins "*/6 * * * *" -d test_db -w 'SELECT id, via FROM table1' --type presto -r '{"type":"dropbox", "access_token":"your_token","folder_path":"/abc","file_name":"test_file","replace_existing":null,"format":"csv","compression":"gz","header_line":true,"null_string":"default","newline":"CRLF","quote_policy":null,"retry_count":"5","retry_initial_wait_millis":"1000","max_retry_wait_millis":"300000"}'

付録

Dropbox へのエクスポートに関する FAQ

Q: Dropbox のファイルサイズ制限は?

  • Dropbox にアップロードされるすべてのファイルは、ストレージ容量よりも小さい必要があります。たとえば、アカウントのストレージクォータが 2 GB の場合、1 つの 2 GB ファイルまたは合計 2 GB になる多数のファイルをアップロードできます。ストレージクォータを超えている場合、Dropbox は同期を停止します。
  • アップロードされるファイルは 350GB 以下である必要があります。

Q: Root と Home の Namespace を識別する方法

  • ユーザーの namespace 上のファイルにアクセスするには、まず API から namespace ID を取得する必要があります。これは、エンドポイント /users/get_current_account で行われます。