AlteryxでAmazon S3にあるJSONL形式のファイルからデータを取得してSlackに投稿する

2020.05.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、スズです。

先日、Amazon AppFlowを使ってS3にZendeskのチケット情報の出力を試してみました。

今回は、S3に出力したチケット情報をSlackに出力したい!ということで、Alteryx Designerを使ってS3からデータの取得とSlackへの投稿を試してみました。

環境

本エントリの執筆には以下の環境を使用しています。

  • Windows 10 Pro
  • Alteryx Designer Admin版 2020.1.2.24185 日本語

SlackのIncoming Webhookを準備

まずはSlackのIncoming Webhookを用意します。Slackのヘルプセンターや、当ブログのエントリを参考にして準備しました。

準備したIncoming Webhookがこちら。

S3のファイルからデータを取得してSlackに投稿

今回取得するファイルには、以下のデータが用意されています。

{"subject":"テスト","description":"チケットテスト","status":"open","created_at":"2020-04-27T08:02:03Z"}
{"subject":"テスト2","description":"チケットテストセカンド","status":"open","created_at":"2020-04-27T08:22:35Z"}
{"subject":"SUN","description":"チケットテストサード","status":"open","created_at":"2020-04-27T08:23:10Z"}
{"subject":"よっつめ","description":"チケットテストフォース","status":"open","created_at":"2020-04-27T08:24:42Z"}
{"subject":"5","description":"チケットテスト5","status":"open","created_at":"2020-04-27T08:25:08Z"}

このJSONL形式のファイルをAmazon S3ダウンロードツールを使ってデータを取得します。ツールの設定には、AWSアクセスキーやAWSシークレットキーといった各項目を設定します。この時、ファイル形式にJSONを指定すると、取得するデータが最初の1行のみになってしまいます。

全てのデータを取得するため、ファイル形式はCSVを指定しました。また区切り文字はダブルクォーテーションを指定していますが、この後に整えやすい形でデータを取得できる区切り文字を指定するといいかと思います。

Slackにテキストを投稿するためには、{"text":"<テキスト>"}というJSON形式に整える必要があります。今回作成したワークフローの以下の赤枠部分でデータを整えています。

このワークフローの処理の概要はこちら。

  1. レコードIDツールでIDを付与
  2. 転置ツールで縦持ちに変換
  3. フィルターツールで波括弧を削除
  4. クロスタブツールで同じIDのレコードを連結
  5. 転置ツールで縦持ちに変換
  6. フォーミュラツールでデータを整形

以下のようにデータを整えました。各レコードに分けて{"text":"<テキスト>"}を用意しています。

SlackのIncoming Webhookは、テキスト入力ツールに入力して用意します。

フィールド付加ツールを使って、Incoming Webhookのフィールドと、Slackに投稿するテキストのフィールドを結合します。これで、Slackに投稿するテキストと投稿先のURLのフィールドを持つデータを作成できました。

Slackへの投稿はダウンロードツールを使用します。Slackに投稿する際のダウンロードツールの設定については、以前執筆したエントリを参照しました。

ダウンロードツールの設定の概要はこちら。

  • 基本設定タブ
    • URL: Incoming WebhookのURLがあるフィールドを指定
    • URLテキストをエンコードするを選択
    • 出力: Blob
  • ヘッダータブ
    • 名前: Content-Type
    • 値: application/json
  • ペイロードタブ
    • HTTPアクション: POST
    • フィールドからクエリ文字列/本文を取得する: Slackに投稿するテキストのフィールドを指定

ワークフローを実行します。ダウンロードツールの結果を見ると、DownloadHeadersフィールドにHTTP/1.1 200 OKと出力されているので、成功しているようです。

Slackで投稿先のチャンネルを確認すると、しっかり出力されていました。

なお、今回のワークフローでは5つのレコードを用意しているため、Slackにも5つのコメントが投稿されています。もし1つのコメントとしてまとめたい場合は、1つのレコードの{"text":"<テキスト>"}の中に全てのテキストをまとめる必要があります。

最後に

Alteryx Designerを使って、Amazon S3にあるJSONL形式のファイルからデータを取得してSlackに投稿してみました。
今回はS3からSlackへの投稿のテストのため、元のデータにあるsubjectなどをそのままにしています。この辺りは分かりやすいテキストに変更して投稿すると、どんなチケットが来たか見やすくなりそうですね。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400