基本
ジョブ起動
概要
このブロックは、指定したフローを実行します。フローの指定において、このブロックを含む自身のフローは指定できません(実行できません)。
このブロックから起動されたフローは、起動元のフローから以下の情報を継承します。
- フローの実行予定日時
- 以下のフロー実行内変数
_group_id
:フローのグループID(フローごとに自動採番されたグループ番号)_execute_user_id
:フローを実行したユーザーのID_execute_user_name
:フローを実行したユーザーの名前
- 指定された変数
フローの実行予定日時は、定期実行・手動実行・外部実行で異なります。
- 定期実行されるフロー:[フローの開始]ブロックの[
開始時間
]プロパティの時間です。 - 手動実行されるフロー:フローの手動実行をMAGELLAN BLOCKSが受け付けた時間です。
- 外部実行されるフロー:パラメーター
target_time
に指定された時間です。
注意
上図のようにあるフロー(フローA)のジョブ起動ブロックから別のフロー(フローB)を指定し、フローBからジョブ起動ブロックを使ってフローAを指定すると、フローの実行が無限に繰り返されてしまいます(無限ループ)。この例では、単純な 2つのフローで解説しましたが、3つ以上のフローでもジョブ起動ブロックの使い方次第では同様のケースに陥ってしまいます。
ジョブ起動ブロックの使用にあたっては、無限ループに陥らないよう十分注意してください。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
ブロックの名前を指定します。ブロックに表示されます。 |
ID |
実行するフローのIDを指定します。 このブロックを含む自身のフローのIDは指定できません(実行できません)。 ヒント |
スキップ |
フロー実行時に、このブロックをスキップするかしないかを指定します。
|
ブロックメモ |
ブロックに対するコメントを指定します。 |
起動するジョブに委譲する変数名 |
起動されたジョブで参照させたい変数を指定します。複数の変数が指定できます。 変数名にドット(
|
使用例
ここでは、Googleスプレッドシートの日次売上データを使って、月次・店舗別の売上集計と商品カテゴリ別の売上ランキングを算出し、結果をスプレッドシートに出力する例を紹介します。
入力となるGoogleスプレッドシートのサンプルデータは以下の通りです。
項目 | 説明 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ファイル名 |
日次売上データ
|
||||||||||||||||||||||||||||||||||||
ワークシート名 |
売上明細
|
||||||||||||||||||||||||||||||||||||
データ |
|
フローA:日次売上データの集計と分析
「スプレッドシートからテーブルへロード」ブロックで日次売上データを取得し、BigQueryにロードします。
プロパティ名 | 値 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ブロック名 |
売上明細をテーブルへロード
|
||||||||||||
ファイルURL | 日次売上データのGoogleスプレッドシートのURL | ||||||||||||
ワークシート名 |
売上明細 (日次売上データのワークシート名)
|
||||||||||||
読み飛ばし行数 |
1
|
||||||||||||
投入先のデータセット |
example
|
||||||||||||
投入先のテーブル |
daily_sales
|
||||||||||||
スキーマ設定 |
|
「クエリーの実行」ブロックで月次・店舗別の売上を集計し、結果をmonthly_sales_by_store
変数に格納します。
プロパティ名 | 値 |
---|---|
ブロック名 |
月次・店舗別の売上集計
|
クエリー |
SELECT FORMAT_DATE('%Y-%m', date) AS month, store_name, SUM(sales_amount) AS total_sales FROM example.daily_sales GROUP BY month, store_name ORDER BY month, store_name |
結果を格納する変数 |
monthly_sales_by_store
|
「クエリーの実行」ブロックで商品カテゴリ別の売上ランキングを算出し、結果をsales_ranking_by_category
変数に格納します。
プロパティ名 | 値 |
---|---|
ブロック名 |
商品カテゴリ別の売上ランキング
|
クエリー |
SELECT category, SUM(sales_amount) AS total_sales, RANK() OVER (ORDER BY SUM(sales_amount) DESC) AS rank FROM example.daily_sales GROUP BY category ORDER BY total_sales DESC; |
結果を格納する変数 |
sales_ranking_by_category
|
「ジョブ起動」ブロックでフローBを呼び出し、集計結果の変数を渡します。
プロパティ名 | 値 |
---|---|
ID |
SARS_Flow
|
起動するジョブに委譲する変数名 |
|
フローB:売上集計結果の保存とレポート作成
「フローの開始」ブロックで「ジョブ起動」ブロックから呼び出せるようにIDを設定します。
プロパティ名 | 値 |
---|---|
ID |
SARS_Flow
|
ブロック名 |
売上集計結果の保存とレポート作成
|
「スプレッドシートを更新」ブロックで月次・店舗別の売上集計結果をスプレッドシートに出力します。
プロパティ名 | 値 |
---|---|
ブロック名 |
月次・店舗別の売上集計をスプレッドシートに反映
|
ファイル名 | 日次売上データのGoogleスプレッドシートのURL |
ワークシート名 |
月次・店舗別の売上集計
|
開始セルを基点に全てのセルをクリアする | |
出力データの変数 |
monthly_sales_by_store
|
「スプレッドシートを更新」ブロックで商品カテゴリ別の売上ランキングをスプレッドシートに出力します。
プロパティ名 | 値 |
---|---|
ブロック名 |
商品カテゴリ別の売上ランキングをスプレッドシートに反映
|
ファイル名 | 日次売上データのGoogleスプレッドシートのURL |
ワークシート名 |
商品カテゴリ別の売上ランキング
|
開始セルを基点に全てのセルをクリアする | |
出力データの変数 |
sales_ranking_by_category
|
以上で、Googleスプレッドシートの日次売上データを集計・分析し、結果をスプレッドシートに出力するフローの完成です。
このように、「ジョブ起動」ブロックを使ってフロー間で変数の値を受け渡すことで、フローを分割して処理を委譲できます。
ポイントは以下の通りです。
- 複雑な処理は適切に分割し、「ジョブ起動」ブロックで別フローに委譲する
- 必要な情報は変数として渡し、呼び出し先のフローで活用する
- 呼び出し元と呼び出し先のフローが密結合にならないよう、必要最小限の変数のみ委譲する
上手く活用することで、フローの見通しが良くなり、再利用性や保守性を高められます。ただし、無限ループに陥らないよう、フローの呼び出し関係には十分注意が必要です。