Treasure Dataでは、Jiraからデータをインポートすることができます。
- Treasure Dataの基本的な知識
Atlassian CorporationはJiraの変更を発表しました。2018年12月以降、パスワードとCookieベースの認証を使用してAPIにアクセスする基本認証方式は廃止されました。できるだけ早く既存の認証を更新してください。認証を作成する際は、メールアドレスと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サーバーの認証に使用します。

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

Email、API Key、JIRA 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をインストールします。
$ td --version
0.11.10以下の例に示すように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: replaceJiraのData Connectorは、指定されたJQLに一致するすべてのチケットをインポートします。
利用可能なoutモードの詳細については、付録を参照してください。
connector:guessを使用します。このコマンドは、ターゲットデータを自動的に読み取り、データ形式をインテリジェントに推測します。
$ td connector:guess seed.yml -o load.ymlload.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.ymlcronパラメータは、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_importtd 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 settd connector:deleteは、スケジュールを削除します。
$ td connector:delete daily_jira_importseed.ymlのoutセクションでファイルインポートモードを指定できます。
これはデフォルトのモードで、レコードはターゲットテーブルに追加されます。
in:
...
out:
mode: appendこのモードは、ターゲットテーブル内のデータを置き換えます。ターゲットテーブルに加えられた手動のスキーマ変更は、このモードでは保持されます。
in:
...
out:
mode: replace