SQL node
SQL ノードは、SQL ノードエディタを使用してフロー内で SQL クエリを実行するために使用します。SQL ノードにクエリを直接入力し、その結果に基づいてアクションを実行できます。これは、フローにデータドリブンな条件ロジックを導入し、Cloud Intelligence に保存された請求データに基づいて複雑な意思決定をしやすくするのに役立ちます。たとえば、aws_dci、azure_dci、gcp_dci から AWS・Azure・Google Cloud の請求データをクエリし、出力をフィルタリングして最もコストの高いサービスを特定し、ステークホルダーに通知できます。
また、SQL ノードに Google Cloud 接続を関連付けて、DoiT の請求データと並行して外部の BigQuery データセットをクエリすることもできます。たとえば、1 つのクエリ内で、コストを自社の使用状況テーブルやプロジェクトテーブルと結合できます。1 つの SQL クエリ内で、DoiT の請求データと外部の BigQuery テーブルを同時に参 照することはできません。フロー内で 2 つの SQL ノードを使用し、1 つは DoiT の請求データをクエリし、もう 1 つは Google Cloud 接続を使用して外部の BigQuery データセットをクエリする必要があります。
同じフローで 2 つの SQL ノードを使用する場合は、それらを順番につなげてください。最初の SQL ノードの出力は、フロー内の後続のノードで利用できます。たとえば、Filter ノードでフィルタリングしたり、Branch ノードで分岐したり、Notification ノードに含めたりできます。Query Output Schema を定義して、後続のノードが必要なフィールドを参照できるようにしてください。
SQL クエリ結果は 20 MB に制限されています。クエリの結果がこのリミットを超えると、ノードは失敗し、フィルターの追加、時間ウィンドウの短縮、列数の削減などでクエリを絞り込むよう促すエラーが表示されます。
Query DoiT billing data
SQL ノードを使用して、Cloud Intelligence に保存された請求データをクエリできます。
SQL query example
以下は、過去 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 |
Configure a SQL node
SQL ノードを設定するには、クエリを作成してテストし、その後、後続のノードで参照できるフィールドについて想定される出力を確認します。

-
Create query を選択してください。SQL クエリを作成およびテストできる Create a SQL query ウィンドウが表示されます。

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

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

Query external BigQuery datasets
オプションで、SQL ノードに Google Cloud 接続を関連付けて、Cloud Intelligence 外部に存在する BigQuery データセット(たとえば、自社の Google Cloud プロジェクト内のテーブル)をクエリすることができます。
Connection permissions
SQL ノードで接続を使用するには、その接続へのアクセス権(Owner、Editor、または User)が必要です。アクセス権がない場合、ノードにはエラーが表示され、利用権がある接続を選択するまで Run query ボタンは無効になります。
SQL query example
この例では、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`)。
Configure a SQL node
外部接続を設定するには、次の手順を実行してください。
-
SQL ノードの Parameters タブで、Google Cloud connection セクションまでスクロールしてください。
-
Connection ドロップダウンから、既存の GCP 接続を選択してください。あなたがアクセス権を持つ接続のみが表示されます。

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