基本
ジョブ起動
概要
このブロックは、指定したフローを実行します。フローの指定において、このブロックを含む自身のフローは指定できません(実行できません)。
このブロックから起動されたフローは、起動元のフローから以下の情報を継承します。
- フローの実行予定日時
- 以下のフロー実行内変数
_group_id:フローのグループID(フローごとに自動採番されたグループ番号)_job_name:フローのジョブ名(ただし、「起動するジョブにつけるジョブ名」プロパティが指定された場合は、その値で上書き)_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スプレッドシートの日次売上データを集計・分析し、結果をスプレッドシートに出力するフローの完成です。
このように、「ジョブ起動」ブロックを使ってフロー間で変数の値を受け渡すことで、フローを分割して処理を委譲できます。
ポイントは以下の通りです。
- 複雑な処理は適切に分割し、「ジョブ起動」ブロックで別フローに委譲する
- 必要な情報は変数として渡し、呼び出し先のフローで活用する
- 呼び出し元と呼び出し先のフローが密結合にならないよう、必要最小限の変数のみ委譲する
上手く活用することで、フローの見通しが良くなり、再利用性や保守性を高められます。ただし、無限ループに陥らないよう、フローの呼び出し関係には十分注意が必要です。