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

SQL ノード

SQL ノードは、SQL ノードエディタを使用してフロー内で SQL クエリを実行するために使用します。SQL ノード内に直接クエリを入力し、結果に基づいてアクションを実行できます。これは、DoiT Cloud Intelligence に保存されている請求データに基づいて、データドリブンな条件ロジックをフローに導入し、複雑な意思決定を容易にするのに役立ちます。例えば、aws_dciazure_dcigcp_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_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 には、クエリから想定される出力が表示されます。これらは後続ノードで参照できるフィールドです(例えば、+ ボタン経由で参照できます)。Node parameters を参照してください。

    SQL node query output schema

外部 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_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 ノードを設定する

外部 connection をセットアップするには、次の手順に従ってください。

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

  2. Connection ドロップダウンから既存の GCP connection を選択します。ここには、アクセス権のある connection のみが表示されます。

    SQL node with GCP connection dropdown

  3. 適切な connection が存在しない場合は、Create new を選択して新しい GCP connection をセットアップします。

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

  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 を選択してください。