メインコンテンツへスキップ

SQL node

SQL ノードは、SQL ノードエディタを使用してフロー内で SQL クエリを実行するために使用します。SQL ノードにクエリを直接入力し、その結果に基づいてアクションを実行できます。これは、フローにデータドリブンな条件ロジックを導入し、Cloud Intelligence に保存された請求データに基づいて複雑な意思決定をしやすくするのに役立ちます。たとえば、aws_dciazure_dcigcp_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_idservice_descriptionuntagged_cost_7d
i-0f23ab91c5d4ef123Amazon Elastic Compute Cloud142.37
vol-03bc1198a7e9d7812Amazon Elastic Block Store58.12
arn:aws:lambda:...func1AWS Lambda27.44
bucket-analytics-prodAmazon S312.91

Configure a SQL node

SQL ノードを設定するには、クエリを作成してテストし、その後、後続のノードで参照できるフィールドについて想定される出力を確認します。

SQL node

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

    Create a SQL query

  2. Query タブで SQL クエリを記述してください。SQL ノードは GoogleSQL を使用します。記述中、Cloud Intelligence が SQL クエリを検証し、構文エラーやその他の潜在的な問題を即座にハイライトします。

    ヒント

    Format を使用して SQL を自動的にインデントおよび改行し、読みやすく編集しやすくしてください。

    注意

    SQL クエリエディタは、入力中のクエリを自動的に下書きとして保存し、画面遷移時のデータ損失を防ぎます。下書きは 24 時間保存され、デバイス間で同期されません。Save を選択すると、フローへの変更が確定され、ローカルの下書きがクリアされます。下書きが期限切れになると、CloudFlow は最後に保存されたバージョンに戻ります。

  3. Run query を選択してクエリをテストしてください。SQL ノードエディタでは、検証済みのクエリのみが作成されるよう、クエリが正常に実行されることが必須です。

  4. Run を選択すると、結果が Results タブに表示され、クエリのロジック、効率性、データ出力を検証できます。出力スキーマは DoiT billing data schema に準拠します。

    SQL query output columns

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

    SQL node query output schema

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_emailproject_nametotal_hours
[email protected]production-web124.5
[email protected]analytics-prod89.2
[email protected]staging42.0
[email protected]production-web31.8
ヒント

外部データセットなど、ハイフンを含むテーブル名にはバッククォート(`)を使用してください(例: `bigquery-public-data.bbc_news.fulltext`)。

Configure a SQL node

外部接続を設定するには、次の手順を実行してください。

  1. SQL ノードの Parameters タブで、Google Cloud connection セクションまでスクロールしてください。

  2. Connection ドロップダウンから、既存の GCP 接続を選択してください。あなたがアクセス権を持つ接続のみが表示されます。

    SQL node with GCP connection dropdown

  3. 適切な接続が存在しない場合は、Create new を選択して新しい GCP 接続を設定してください。

    接続を選択すると、SQL ノードには、DoiT の請求データのエイリアスと並んで、接続された Google Cloud プロジェクトのテーブルが含まれるようになります。

  4. Create query を選択してください。Create a SQL query ウィンドウの Query タブで、外部データセットに対して完全修飾テーブル名(例: `my-project.my_dataset.my_table`)を使用してクエリを作成およびテストします。記述中、Cloud Intelligence が SQL クエリを検証し、構文エラーやその他の潜在的な問題を即座にハイライトします。

    ヒント

    Format を使用して SQL を自動的にインデントおよび改行し、読みやすく編集しやすくしてください。

    注意

    SQL クエリエディタは、入力中のクエリを自動的に下書きとして保存し、画面遷移時のデータ損失を防ぎます。下書きは 24 時間保存され、デバイス間で同期されません。Save を選択すると、フローへの変更が確定され、ローカルの下書きがクリアされます。下書きが期限切れになると、CloudFlow は最後に保存されたバージョンに戻ります。

  5. Run query を選択してクエリをテストしてください。SQL ノードエディタでは、検証済みのクエリのみが作成されるよう、クエリが正常に実行されることが必須です。

Test

ノードをテストするには、Test を選択してください。