SQL ノード
SQL ノードは、SQL ノードエディタを使用してフロー内で SQL クエリを実行するために使用します。SQL ノード内に直接クエリを入力し、結果に基づいてアクションを実行できます。これは、DoiT Cloud Intelligence に保存されている請求データに基づいて、データドリブンな条件ロジックをフローに導入し、複雑な意思決定を容易にするのに役立ちます。例えば、aws_dci、azure_dci、gcp_dci から AWS・Azure・Google Cloud の請求データをクエリし、その出力をフィルタリングして最もコストの高いサービスを特定し、ステークホルダーに通知できます。
また、SQL ノードに Google Cloud connection をアタッチすると、DoiT の請求データと並行して外部 BigQuery データセットをクエリできます。例えば、1 つのクエリでコストと自社の使用状況テーブルやプロジェクトテーブルを結合できます。1 つの SQL クエリ内で DoiT の請求データと外部 BigQuery テーブルを同時に参照することはできません。フロー内で 2 つの SQL ノードを使用し、1 つは DoiT の請求データをクエリし、もう 1 つは Google Cloud connection を使用して外部 BigQuery データセットをクエリする必要があります。
同じフローで 2 つの SQL ノードを使用する場合は、順番に接続してください。最初の SQL ノードの出力は、フロー内の後続ノードで利用できます。例えば、それをFilter ノードでフィルタリングしたり、Branch ノードで分岐条件に使用したり、Notification ノードで通知に含めたりできます。Query Output Schema を定義し、下流ノードが必要なフィールドを参照できるようにしてください。
DoiT の請求データをクエリする
SQL ノードを使用して、DoiT Cloud Intelligence に保存されてい る請求データをクエリできます。
SQL クエリの例
以下は、過去 7 日間でコストアロケーションタグが設定されていない、最もコストの高い AWS リソース上位 20 件を特定することで、コスト最適化とガバナンスを支援する SQL クエリの例です。
WITH recent AS (
SELECT
resource_id,
service_description,
SUM(cost) AS untagged_cost_7d
FROM `aws_dci`
WHERE usage_start_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND (labels IS NULL OR ARRAY_LENGTH(labels) = 0)
GROUP BY resource_id, service_description
)
SELECT
resource_id,
service_description,
ROUND(untagged_cost_7d, 2) AS untagged_cost_7d
FROM recent
WHERE untagged_cost_7d > 5
ORDER BY untagged_cost_7d DESC
LIMIT 20;
以下は、その結果として得られるテーブルの例で、直ちに対応が必要な AWS リソースを優先度付きリストとして示しています。
| resource_id | service_description | untagged_cost_7d |
|---|---|---|
| i-0f23ab91c5d4ef123 | Amazon Elastic Compute Cloud | 142.37 |
| vol-03bc1198a7e9d7812 | Amazon Elastic Block Store | 58.12 |
| arn:aws:lambda:...func1 | AWS Lambda | 27.44 |
| bucket-analytics-prod | Amazon S3 | 12.91 |
SQL ノードを設定する
SQL ノードを設定するには、クエリを作成してテストし、その後、後続ノードで参照できるフィールドの想定される出力を確認します。

-
Create query を選択します。Create a SQL query ウィンドウが表示され、ここで SQL クエリの作成とテストを行います。

-
Query タブで SQL クエリを記述します。SQL ノードは GoogleSQL を使用します。記述中、DoiT Cloud Intelligence が SQL クエリを検証し、構文エラーやその他の潜在的な問題を即座にハイライト表示します。
ヒントFormat を使用して SQL を自動的にインデントおよび改行し、読みやすく編集しやすい状態にしてください。
注意SQL クエリエディタは、入力中のクエリを自動的にドラフトとして保存し、画面遷移時のデータ消失を防ぎます。ドラフトは 24 時間保存され、デバイス間では同期されません。Save を選択すると、フローへの変更が確定され、ローカルドラフトはクリアされます。ドラフトが期限切れになると、CloudFlow は最後に保存されたバージョンに戻ります。
-
Run query を選択してクエリをテストします。SQL ノードエディタでは、作成前にクエリが正常に実行されることが必須であり、検証済みのクエリのみが作成されます。
-
Run を選択すると、結果が Results タブに表示され、クエリロジック、効率性、データ出力を検証できます。出力スキーマは DoiT 請求データスキーマに準拠します。

-
Query Output Schema には、クエリから想定される出力が表示されます。これらは後続ノードで参照できるフィールドです(例えば、+ ボタン経由で参照できます)。Node parameters を参照してください。

外部 BigQuery データセットをクエリする
任意で、SQL ノードに Google Cloud connection をアタッチし、DoiT Cloud Intelligence の外部に存在する BigQuery データセット(例えば、自社の Google Cloud プロジェクト内のテーブル)をクエリできます。
Connection の権限
SQL ノードで connection を使用するには、その connection へのアクセス(Owner、Editor、または User)が必要です。アクセス権がない場合、ノードにはエラーが表示され、使用を許可された connection を選択するまで Run query ボタンは無効になります。
SQL クエリの例
この例では、2 つの外部テーブルを結合して、プロジェクト単位の利用状況を分析します。
SELECT
u.user_email,
p.project_name,
SUM(u.compute_hours) as total_hours
FROM `my-project.usage_data.daily_usage` AS u
JOIN `my-project.inventory.projects` AS p
ON u.project_id = p.id
WHERE u.usage_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY 1, 2
ORDER BY total_hours DESC;
以下は、その結果として得られるテーブルの例で、過去 30 日間のユーザーおよびプロジェクトごとの合計コンピュート時間を示しています。
| user_email | project_name | total_hours |
|---|---|---|
| [email protected] | production-web | 124.5 |
| [email protected] | analytics-prod | 89.2 |
| [email protected] | staging | 42.0 |
| [email protected] | production-web | 31.8 |
ハイフンを含むテーブル名(例えば外部データセット)には、` を使用してください(例: `bigquery-public-data.bbc_news.fulltext`)。
SQL ノードを設定する
外部 connection をセットアップするには、次の手順に従ってください。
-
SQL ノードの Parameters タブで、Google Cloud connection セクションまでスクロールします。
-
Connection ドロップダウンから既存の GCP connection を選択します。ここには、アクセス権のある connection のみが表示されます。

-
適切な connection が存在しない場合は、Create new を選択して新しい GCP connection をセットアップします。
connection を選択すると、SQL ノードでは接続された Google Cloud プロジェクト内のテーブルが、DoiT の請求データエイリアスと並んで使用できるようになります。
-
Create query を選択します。Create a SQL query ウィンドウの Query タブで、外部データセットに対して完全修飾テーブル名(例:
`my-project.my_dataset.my_table`)を使用してクエリを記述およびテストします。記述中、DoiT Cloud Intelligence が SQL クエリを検証し、構文エラーやその他の潜在的な問題を即座にハイライト表示します。ヒントFormat を使用して SQL を自動的にインデントおよび改行し、読みやすく編集しやすい状態にしてください。
注意SQL クエリエディタは、入力中のクエリを自動的にドラフトとして保存し、画面遷移時のデータ消失を防ぎます。ドラフトは 24 時間保存され、デバイス間では同期されません 。Save を選択すると、フローへの変更が確定され、ローカルドラフトはクリアされます。ドラフトが期限切れになると、CloudFlow は最後に保存されたバージョンに戻ります。
-
Run query を選択してクエリをテストします。SQL ノードエディタでは、作成前にクエリが正常に実行されることが必須であり、検証済みのクエリのみが作成されます。
テスト
ノードをテストするには Test を選択してください。