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

Scheduled Queryの運用を楽にするBotを実装してみたお話

1820ffccbd1fde96e00ed5dab52597a0?s=47 Yuu.Kimy
December 13, 2019

Scheduled Queryの運用を楽にするBotを実装してみたお話

bq_sushi #12 忘年会@六本木でLT発表させて頂いた時の資料です。
BigQueryのScheduled Queryのジョブステータスを通知できる簡易Botを実装した内容になります。

1820ffccbd1fde96e00ed5dab52597a0?s=128

Yuu.Kimy

December 13, 2019
Tweet

Transcript

  1. - bq_sushi #12 忘年会@六本木 - 
 
 Scheduled Queryの運用を楽にするBotを実装してみたお話
 Classi株式会社

    データAI部 木宮 勇毅 
 ちょっとだけ

  2. • 自己紹介
 
 • Classiについて
 • BigQueryのScheduled Queryについて
 • Botのレシピ


    • まとめ
 目次

  3. • 名前: 木宮 勇毅(@yuu_kimy)
 
 • 所属: Classi株式会社
 
 •

    仕事: データエンジニア
 
 • 特技: 家事全般
 
 • 趣味: 海外ドラマ鑑賞
 自己紹介

  4. Classiについて
 ◯ 高校への営業 ◯ 学習支援アプリ開発 ◯ 活用コンサルテーション ◯ プラットフォーム開発 ◯

    ネイティブアプリ開発 ◯ 学校へのICT関連サポート ベネッセとソフトバンクのジョイントベンチャー
  5. BigQueryのScheduled Queryの運用を
 「通知Bot」を作って、
 ちょっと楽にするぞーというお話です。
 (Scheduled Queryを利用している方には朗報?のはず)
 
 今日のお題


  6. • BigQueryを利用しています。
 弊社の分析環境
 サイエンティスト 
 エンジニア/ディレクター 
 分析環境


  7. • Scheduled Queryも使っています。
 
 ※現在は、ワークフローエンジンも導入していますので、主な や のテーブルは、ワークフローエンジンで制御しています。 弊社の分析環境
 サイエンティスト 


    エンジニア/ディレクター 
 Scheduled Queryの定 期ジョブ実行
 Scheduled Query の設定!
 分析環境

  8. • プラス
 • お手軽にクエリのジョブを作れる
 
 • マイナス
 • 制御は、あくまで、スケジュール設定のみ
 •

    依存関係の定義は基本不可
 
 • 通知はあくまで「メール」
 • しかも、失敗時のみ
 • 設定した本人のメールアドレスのみ..
 Scheduled Queryのプラス・マイナス点

  9. Scheduled Queryには、Cloud Pub/Subのトピックを設定できる!
 ということは、それをトリガーにすれば。。
 ※BigQueryの新WebUIのScheduled Queryの設定画面から一部を抜粋 
 解決案
 ココにある!


  10. こんな感じにシンプルな構成で実装。
 ※ 付の でも、上記のパターンは紹介されていました。  参考 バッチ処理のスケジューリングパターン Botのレシピ
 成功/失敗 (webhook)


  11. Scheduled Queryで指定したCloud Pub/Subのtopicの中身(json)は、どう 定義されている?
 (ここに公開されている!)
 REST Resource: projects.locations.transferConfigs.runs
 
 


    
 
 
 
 
 ※上記のリンクで公開されているものを抜粋させて頂きました。 
 ポイント

  12. 実際に確認してみるのも良し!(私はそうしました!)
 ポイント
 ①Pullのサブスクリプションを用意しておき、 そのトピックをScheduled Queryに設定して おく。
 
 ②Scheduled Queryを実行し、完了後に、 gcloudコマンドを使って、サブスクリプション

    からメッセージを確認する。 
 参考: https://cloud.google.com/sdk/gcloud/reference/pubsub/subscriptions/pull

  13. この構成は、他のデータ転送の通知に適用できる!
 
 BigQueryのScheduled Query以外だと、、
 • GCS → BigQuery間のデータ転送
 
 •

    BigQuery → BigQuery間のデータセットコピー
 
 • 勿論、他のデータ転送でも同様なことが可能
 
 • 例) Migration: Redshiftなど
 ※上記は、全て、 で動いているようですので、至極当然と言われそうですが ポイント

  14. ただ、BigQueryのデータセット間のコピーの場合は、取得できない項目も あるよう・・
 注意!
 “endTime”はあるが、”startTime”がない.. 


  15. 実際のSlack通知のBotのイメージです。
 ※Cloud Functionsの処理の中身(Python)は、こちらを参照してくださいm(_ _)m 
 参考: https://gist.github.com/yuuki-kimiya/512130063102238625d56c02f84d8d0d
 通知Botのイメージ
 成功 失敗

    (データ通知)
 (データ通知)

  16. GCPのサービスを組み合わせることで、簡単に通知Botが実装可能!
 少しでも運用を楽にする仕組みを作って、年末を迎えましょうー♪
 
 今年のClassi Advent Calendar 2019では、データBotの記事をアップしてい ます。よろしければ、ご覧くださいm(_ _)m
 サーバレスにお手軽なデータBotを作ってみよう〜♪

    on GCP
 まとめ

  17. Classiでは一緒に働く仲間を募集しています。
 Pythonエンジニア/データエンジニア/データサイエンティスト etc..
 興味のある方はぜひお声がけください!
 詳細は採用ページをご覧くださいm(_ _)m
 → https://hrmos.co/pages/classi We are

    Hiring !