Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSのサービスを活用してSlackのやりとりを分析してみよう

TomoyaIwata
November 07, 2019

 AWSのサービスを活用してSlackのやりとりを分析してみよう

2019/11/07に開催されたTiny Spec Osaka: Slack developers Osaka kickoffでLTさせて頂いた際の資料です

TomoyaIwata

November 07, 2019
Tweet

More Decks by TomoyaIwata

Other Decks in Technology

Transcript

  1. 10 利⽤するAWSサービス 実質無限にスケールアップ可能なオブジェクトストレージ Amazon S3 AWS Lambda AWS上で発⽣したイベントをトリガーにユーザーが作成した関数が実⾏できるサービス いわゆるFaaS(Function As

    a Service) Amazon Athena SQLを使ってS3上のデータを分析できるサービス Amazon CloudWatch モニタリング⽤のサービス ログ、メトリクス、イベントという形式でモニタリングデータを収集できる
  2. 14 channels.historyのレスポンス { "client_msg_id": "8f1bd7ee-93e3-472b-8705-02fb09c305b2", "type": "message", "text": "10⽉初の:coffee::douzo:", "user":

    ”XXXXXXXX", "ts": "1569889373.419300", "team": ”XXXXXXXX", "reactions": [ { "name": "arigato", "users": [ "UEMTXXXXX", "UFBUXXXXX", "UB2EXXXXX", "UF73XXXXX", "UFABXXXXX" ], "count": 5 } ] } client_msg_idがいかにもキー項⽬っぽいが、 ⼊っていないこともある キーとして使⽤するならts
  3. 15 レスポンスを整形 {"client_msg_id": "1CC9C859-8A7D-4F67-BD8F-11558881907C", "type": "message", "text": "なるほどです︕... {"client_msg_id": "C547B3A0-942E-4891-8C2C-D619AC64507C",

    "type": "message", "text": "いえいえ︕... {"client_msg_id": "FB645242-E8AD-4F35-BBDC-F97DC9114322", "type": "message", "text": "@ひできさん¥... {"client_msg_id": "8f7a8f25-c3b7-4598-802a-5cedee816841", "type": "message", "text": "HIGOBASHI.AWSは... {"client_msg_id": "AABB8B75-7044-4BB7-8264-63DC83DFECF4", "type": "message", "text": "あーなるほど︕¥n... • Lambdaで1⾏1Jsonになるように整形 • 整形したらS3にアップロード
  4. 23 ⼈別に使⽤頻度の⾼いリアクションを抽出 SELECT us.real_name, agg.name, agg.rnk, agg.cnt FROM (SELECT react_user_id,

    name, RANK() OVER (PARTITION BY react_user_id ORDER BY cnt DESC) AS rnk, cnt FROM (SELECT react_user_id, react.name, COUNT(*) AS cnt FROM messages CROSS JOIN UNNEST(reactions) AS t(react) CROSS JOIN UNNEST(react.users) AS t(react_user_id) GROUP BY react_user_id, react.name ) ) agg INNER JOIN users us ON agg.react_user_id = us.id WHERE rnk <= 5 ORDER BY react_user_id, rnk
  5. Private subnet 26 Neptuneによる分析の構成 AWS Cloud VPC Public subnet ①S3からNeptuneに⼀括ロード

    ※事前に所定フォーマットの CSVに変換する必要あり ②Gremlin Consoleから クエリを発⾏
  6. 41