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

SQL ノード

SQL ノードは、フロー内で SQL ノードエディタを使用して SQL クエリを実行するために使用します。SQL ノードに直接クエリを入力し、その結果に基づいてアクションを実行できます。これは、フローにデータドリブンな条件ロジックを導入し、DoiT Cloud Intelligence に保存された 請求データ に基づいて複雑な意思決定を容易にするのに役立ちます。例えば、AWS の請求データをクエリする SQL クエリを作成できます。その後、出力をフィルターして最もコストの高いサービスを特定し、ステークホルダーに通知できます。

また、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 を定義して、後続ノードが必要なフィールドを参照できるようにしてください。

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_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

SQL ノードを設定する

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

SQL node

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

    Create a SQL query

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

    ヒント

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

    注意

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

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

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

    SQL query output columns

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

    SQL node query output schema

外部 BigQuery データセットをクエリする

オプションとして、SQL ノードに Google Cloud 接続を関連付けることで、DoiT Cloud Intelligence の外部に存在する BigQuery データセット、例えば自社の Google Cloud プロジェクト内のテーブルをクエリできます。

接続の権限

SQL ノードで接続を使用するには、その接続に対するアクセス権(Owner・Editor・User)が必要です。アクセス権がない場合、ノードにはエラーが表示され、使用を許可された接続を選択するまで 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_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`)。

SQL ノードを設定する

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

  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`)を使用してクエリを作成およびテストします。記述中、DoiT Cloud Intelligence が SQL クエリを検証し、構文エラーやその他の潜在的な問題を即座にハイライトします。

    ヒント

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

    注意

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

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

テスト

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