Skip to content
Last updated

Jira Import Integration

Treasure Dataでは、Jiraからデータをインポートすることができます。

前提条件

  • Treasure Dataの基本的な知識

Jiraからの廃止予定のお知らせ

Atlassian CorporationはJiraの変更を発表しました。2018年12月以降、パスワードとCookieベースの認証を使用してAPIにアクセスする基本認証方式は廃止されました。できるだけ早く既存の認証を更新してください。認証を作成する際は、メールアドレスとAPIキーの方式を使用してください。

JiraウェブアプリケーションからJira APIキーを取得する方法

Jiraウェブアプリケーションサーバーにログインします。次の例ではJira cloud (https://id.atlassian.com)を使用しています。

https://id.atlassian.com/manage-profile/email にアクセスして、メールアドレスを確認してください。基本認証を使用しているユーザーは、ユーザー名の値をメールアドレスに置き換える必要があります

Securityを選択してからCreate or manage API tokensを選択します(または直接リンク(https://id.atlassian.com/manage/api-tokens)にアクセスすることもできます)。

次に、Create API tokenを選択します。

表示されるペインで、APIトークンの名前を入力してCreateを選択します。

次のペインで、Viewを選択して新しいAPIキーを確認します。

これでAPIキーが表示されます。これをコピーして、TD ConsoleとJiraサーバーの認証に使用します。

TD Consoleを使用してJiraデータをTreasure Dataに転送する方法

Integration Hub -> Catalogに移動して、JIRAタイルを選択します。

EmailAPI KeyJIRA API endpointを入力します。

Continueを選択して、新しい接続の名前を入力します。

Doneを選択します。

Integrations Hub > Authenticationsに戻り、作成した認証を選択してNew Sourceを選択します。

New Sourceポップアップで有効なJQLを入力してNextを選択します。

プレビューが表示されたら、プラグインが取り込もうとするカラムを削除、追加、または変更したい場合はAdvanced Settingsを選択できます。Nextを選択します。

Transfer toタブで、データを挿入するデータベース名とテーブル名を入力します。

新しいデータベースを作成する場合は、Create new databaseを選択してデータベース名を入力します。Create new tableについても同じ手順を実行します。

既存のテーブルにレコードをappendするか、既存のテーブルをreplaceするかを選択します。

デフォルトキーではなく異なるpartition key seedを設定する場合は、ポップアップメニューを使用して指定できます。

Scheduleタブでは、1回限りの転送を指定するか、自動的に繰り返される転送をスケジュールすることができます。

Nextを選択します。オプションで、ソースの名前を変更できます。Doneを選択すると、ジョブがスケジュールされます。完了したときに通知されます。

TD Toolbeltを使用してJiraデータをTreasure Dataに転送する方法

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

最新のTD Toolbeltをインストールします。

$ td --version
0.11.10

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

以下の例に示すようにseed.ymlを準備します。JIRAのAPIキー付きメールアドレス、JIRA URI、そしてデフォルトでは空のjqlクエリを設定します。(認証にはユーザー名とパスワードはサポートされなくなりました)。「replace」モードを使用します:

in:
  type: jira
  username: user@example.com
  password: APIkeysXXXXXX
  uri: https://your-domain.atlassian.net
  jql: summary ~ fix and project = 'PLT'  # example query. be sure to use singlequotes
out:
  mode: replace

JiraのData Connectorは、指定されたJQLに一致するすべてのチケットをインポートします。

利用可能なoutモードの詳細については、付録を参照してください。

フィールドを推測(load.ymlを生成)

connector:guessを使用します。このコマンドは、ターゲットデータを自動的に読み取り、データ形式をインテリジェントに推測します。

$ td connector:guess seed.yml -o load.yml

load.ymlを開くと、ファイル形式、エンコーディング、カラム名、タイプなど、推測されたファイル形式の定義が表示されます。

in:
  type: jira
  username: user@example.com  password: APIkeysXXXXXX
  uri: https://your-domain.atlassian.net
  jql: ''
  columns:
  - name: id
    type: long
  - name: key
    type: string
  - name: issuetype.name
    type: string
  ...
out:
  mode: replace

次に、previewコマンドを使用して、システムがファイルをどのように解析するかをプレビューできます。

$ td connector:preview load.yml

システムがカラム名やタイプを予期しない形で検出した場合は、load.ymlを直接修正して再度プレビューしてください。

現在、Data Connectorは「boolean」、「long」、「double」、「string」、「timestamp」タイプの解析をサポートしています。

ロードジョブを実行

ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データを保存するデータベースとテーブルを指定する必要があります。

$ td connector:issue load.yml --database td_sample_db --table td_sample_table

上記のコマンドは、*database(td_sample_db)table(td_sample_table)*がすでに作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しないため、データベースとテーブルを作成するか、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

「--time-column」オプションを使用して、Time Formatカラムを「パーティショニングキー」に割り当てることができます。

スケジュール実行

定期的なJIRAインポートのために、定期的なData Connectorの実行をスケジュールすることができます。当社は高可用性を確保するためにスケジューラーを慎重に管理しています。この機能を使用することで、ローカルデータセンターにcronデーモンを配置する必要がなくなります。

スケジュール済みインポートの場合、Data Connector for JIRAは指定されたJQLに一致するすべてのファイルをインポートします。

スケジュールを作成する

新しいスケジュールは、td connector:createコマンドを使用して作成できます。スケジュールの名前、cron形式のスケジュール、データが格納されるデータベースとテーブル、およびData Connectorの設定ファイルが必要です。

$ td connector:create     daily_jira_import     "10 0 * * *"     td_sample_db     td_sample_table     load.yml

cronパラメータは、3つの特別なオプション(@hourly@daily@monthly)も受け付けます。デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'や'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PSTやCSTなどのタイムゾーンの略語はサポートされて*いない*ため、予期しないスケジュールになる可能性があります。

スケジュールを一覧表示する

現在スケジュールされているエントリのリストは、td connector:listで確認できます。

$ td connector:list
+-------------------+--------------+----------+-------+--------------+-----------------+------------------------+
| Name              | Cron         | Timezone | Delay | Database     | Table           | Config                 |
+-------------------+--------------+----------+-------+--------------+-----------------+------------------------+
| daily_jira_import | 10 0 * * *   | UTC      | 0     | td_sample_db | td_sample_table | {"type"=>"jira", ... } |
+-------------------+--------------+----------+-------+--------------+-----------------+------------------------+

スケジュールの設定と履歴を表示する

td connector:showは、スケジュールエントリの実行設定を表示します。

$ td connector:show daily_jira_import

td connector:historyは、スケジュールエントリの実行履歴を表示します。個々の実行結果を調査するには、td job jobidを使用します。

% td connector:history daily_jira_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_jira_import

付録

outプラグインのモード

seed.ymlのoutセクションでファイルインポートモードを指定できます。

append(デフォルト)

これはデフォルトのモードで、レコードはターゲットテーブルに追加されます。

in:
  ...
out:
  mode: append

replace(td 0.11.10以降)

このモードは、ターゲットテーブル内のデータを置き換えます。ターゲットテーブルに加えられた手動のスキーマ変更は、このモードでは保持されます。

in:
  ...
out:
  mode: replace