グラフを作成してクエリを実行する

このドキュメントでは、BigQuery Graph を使用して財務情報を含むグラフを作成し、Graph Query Language(GQL)を使用してグラフクエリを実行する方法について説明します。

必要なロール

グラフの操作に必要な権限を取得するには、ノードテーブル、エッジテーブル、グラフを作成するデータセットに対する BigQuery データ編集者 roles/bigquery.dataEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、グラフの操作に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

グラフを操作するには、次の権限が必要です。

  • グラフを作成する: bigquery.propertyGraphs.create
  • グラフとそのメタデータを一覧表示します。 bigquery.propertyGraphs.list
  • グラフのメタデータと定義を取得します。 bigquery.propertyGraphs.get
  • グラフのメタデータと定義を更新します。 bigquery.propertyGraphs.update
  • グラフを削除する: bigquery.propertyGraphs.delete

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ノードテーブルとエッジテーブルを作成する

グラフは既存の BigQuery テーブルから作成され、データセットに保存されます。次の例で作成するテーブルとグラフを保存するには、データセットを作成します。次のクエリは、graph_db というデータセットを作成します。

CREATE SCHEMA IF NOT EXISTS graph_db;

次の表には、ユーザーとアカウントに関する情報と、これらの各エンティティ間の関係が記載されています。

  • Person: 人物に関する情報。
  • Account: 銀行口座に関する情報。
  • PersonOwnAccount: どのアカウントを誰が所有しているかに関する情報。
  • AccountTransferAccount: アカウント間の転送に関する情報。

これらのテーブルを作成するには、次の CREATE TABLE ステートメントを実行します。

CREATE OR REPLACE TABLE graph_db.Person (
  id               INT64,
  name             STRING,
  birthday         TIMESTAMP,
  country          STRING,
  city             STRING,
  PRIMARY KEY (id) NOT ENFORCED
);

CREATE OR REPLACE TABLE graph_db.Account (
  id               INT64,
  create_time      TIMESTAMP,
  is_blocked       BOOL,
  nick_name        STRING,
  PRIMARY KEY (id) NOT ENFORCED
);

CREATE OR REPLACE TABLE graph_db.PersonOwnAccount (
  id               INT64 NOT NULL,
  account_id       INT64 NOT NULL,
  create_time      TIMESTAMP,
  PRIMARY KEY (id, account_id) NOT ENFORCED,
  FOREIGN KEY (id) REFERENCES graph_db.Person(id) NOT ENFORCED,
  FOREIGN KEY (account_id) REFERENCES graph_db.Account(id) NOT ENFORCED
);

CREATE OR REPLACE TABLE graph_db.AccountTransferAccount (
  id               INT64 NOT NULL,
  to_id            INT64 NOT NULL,
  amount           FLOAT64,
  create_time      TIMESTAMP NOT NULL,
  order_number     STRING,
  PRIMARY KEY (id, to_id, create_time) NOT ENFORCED,
  FOREIGN KEY (id) REFERENCES graph_db.Account(id) NOT ENFORCED,
  FOREIGN KEY (to_id) REFERENCES graph_db.Account(id) NOT ENFORCED
);

グラフを作成する

グラフを作成するには、CREATE PROPERTY GRAPH ステートメントまたはビジュアル グラフ モデラーを使用します。次の例では、CREATE PROPERTY GRAPH ステートメントを使用して、graph_db データセットに FinGraph というグラフを作成します。Account テーブルと Person テーブルはノードテーブルです。AccountTransferAccount テーブルと PersonOwnAccount テーブルはエッジテーブルであり、ノードテーブル間の関係を表します。