Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. ローカル環境でダッシュボードをPDF形式でGCSバケットに出力してみた

ローカル環境でダッシュボードをPDF形式でGCSバケットに出力してみた

投稿者:杉山

こんにちは、日本情報通信の杉山です。
カフェのカップがホリデー使用になったり、歩いているとクリスマスソングが聞こえたり、
個人的に一番わくわくするシーズンがもうすぐで待ち遠しいです^^

今回は『Looker API特集』第4弾!ローカル環境でダッシュボードをPDF形式でGoogle Cloud Storage(以下、GCS)バケットに出力してみた結果についてご紹介します。

Looker API特集:過去のブログはこちら


目次

  • 前提
  • コード内容説明
  • 注意事項
  • 結果
  • まとめ

前提


  • LookerからGCSへの出力設定が有効である
  • ローカル環境でLooker APIの認証、Looker SDKのインストールが完了している
    • 認証、インストールが未完了の方は過去のブログをご参照ください

コード内容説明


今回はローカル環境で「検証」ダッシュボードをPDF化し、指定のGCSバケットに出力してみたいと思います。

※本稿ではLooker API操作のためPythonを使用します。
※前回までの投稿をご覧いただいている方は本稿の# PDF化したダッシュボードをGCSへスケジュール以降のコードをコピーしてtest.pyに追記する形で問題ありません。

import looker_sdk
import os
from looker_sdk.sdk.api40.models import models as mdls
URL = 'https://xxxxxxxx.jp.looker.com:19999'
CLIENT_ID = 'xxxxxxxx'
CLIENT_SECRET = 'xxxxxxxxxx'
def init_looker_sdk(
       url: str,
       client_id: str,
       client_secret: str) -> looker_sdk.methods40.Looker40SDK:
   os.environ['LOOKERSDK_BASE_URL'] = url
   os.environ['LOOKERSDK_CLIENT_ID'] = client_id
   os.environ['LOOKERSDK_CLIENT_SECRET'] = client_secret
   os.environ['LOOKERSDK_VERIFY_SSL'] = 'true'
   os.environ['LOOKERSDK_TIMEOUT'] = '120'
   os.environ['LOOKERSDK_API_VERSION'] = '4.0'
   return looker_sdk.init40()
sdk = init_looker_sdk(URL, CLIENT_ID, CLIENT_SECRET)
# PDF化したダッシュボードをGCSへスケジュール
response = sdk.scheduled_plan_run_once(
   body=mdls.WriteScheduledPlan(
       name="検証",
       run_as_recipient=False,
       enabled=False,
       dashboard_id="67",
       require_results=False,
       require_no_results=False,
       require_change=False,
       send_all_results=False,
       datagroup="xxx",
       scheduled_plan_destination=[
           ScheduledPlanDestination(
               format="wysiwyg_pdf",
               type="looker-integration://1::google_cloud_storage",
               parameters='{"bucket":"xxxx","filename":"xxx","overwrite":"yes"}'
           )
       ],
       run_once=False,
       include_links=False,
       pdf_landscape=False,
       embed=False,
       long_tables=False,
       inline_table_width=0
   )
)

今回検証している内容と異なる環境で試される場合、以下の設定をご参考頂き、必要に応じて定義を変更してください。

  • name
    • PDF化して出力したいダッシュボード名
  • dashboard_id
    • nameに記載したダッシュボード名のdashboard_id
      • 参照方法はこちら
  • datagroup
    • ダッシュボードに使用したmodelにあるデータグループ
      • 参照方法:管理>データベース>データグループ
  • format
    • PDFを出力する場合:wysiwyg_pdfまたはassembled_pdf
  • type
    • GCSを指定する場合:looker-integration://1::google_cloud_storage
  • parameters
    • “bucket”:”格納するGCSの指定バケット名”
    • ”filename”:”保存したいファイルの名前(任意)”
    • ”overwrite”:”yes”(※上書き可能な場合)

注意事項


  • 今回はRun Scheduled Plan Onceメソッドを使用しています。API ExplorerのSDK Callタブで作成されるコードだと定義されていない箇所や大文字・小文字の影響でエラーが発生する場合がありますのでご注意ください。

※今回は以下のように対応することでエラーを解消しました。

  • 定義されていない箇所:show_custom_url=”false”
    • 上記一文をコメントアウト
  • 大文字・小文字
    • falseと記載がある部分を全てFalseに訂正

結果


上記のコードを実行した結果、GCSバケットに以下のように「検証」ダッシュボードが作成されました。

形式も指定した通りPDFで出力されています!

まとめ


今回はローカル環境でダッシュボードをPDF形式でGCSバケットに出力してみた結果についてご紹介しました。
API Explorer上で行う場合、[Request]タブのbodyにある項目を記入することで今回ご紹介した内容と同等の操作が可能です。API Explorer上でのscheduled_plan_destinationの書き方に苦労したので以下ご参考までに…

“scheduled_plan_destination”:[{“format”:”wysiwyg_pdf”,”type”:”looker-integration://1::google_cloud_storage”,”parameters”:”{¥”bucket¥”:¥”格納するGCSの指定バケット名¥”,¥”filename¥”:¥”保存したいファイルの名前(任意)¥”,¥”overwrite¥”:¥”yes¥”}”}],

次回


本稿をご覧頂き、ありがとうございました。
次回『Looker API特集』第5弾では、Lookerのユーザー属性をBQのユーザー情報をもとに変更してみた結果についてご紹介いたします。秋から始まった『Looker API特集』も最終回ということで、これまでにご紹介した内容を詰め込んだブログを予定しております!是非これまでのブログに続き次回のブログもご覧ください^^

ページのトップへ