グラフを作成してクエリを実行する
このドキュメントでは、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 テーブルはエッジテーブルであり、ノードテーブル間の関係を表します。