SAP Datasphere 連携クエリ

データ アナリストは、連携クエリを使用して、BigQuery から SAP Datasphere のリレーショナル データをクエリできます。

BigQuery SAP Datasphere 連携を使用すると、データのコピーや移動を行わずに、BigQuery で SAP Datasphere に存在するデータをリアルタイムでクエリできます。

SAP Datasphere で SQL クエリを実行するには、BigQuery 内の SQL クエリを EXTERNAL_QUERY 関数で指定します。結果は SAP Datasphere から BigQuery に転送されます。

制限事項

  • クエリできるのは、使用のために公開されているリレーショナル ビューのみです。SAP Datasphere 内の他のオブジェクトには、EXTERNAL_QUERY を介して連携されたクエリからアクセスできません。
  • 連携クエリのレイテンシは、SAP Datasphere で直接実行された場合の同じクエリよりも大幅に長くなる可能性があります。
  • 特定のプロジェクトで SAP Datasphere 接続を使用する最初のクエリの実行には、1 分以上かかる場合があります。
  • SAP Datasphere では、追加の SQL プッシュダウンはサポートされていません。
  • SAP Datasphere SQL クエリでは、関数の結果を含む列のエイリアスを指定する必要があります。
  • クエリ プロジェクトでの Compute Engine API の使用が VPC Service Controls によって制限されている場合、連携クエリは失敗します。

始める前に

BigQuery 管理者が SAP Datasphere 接続を作成して、共有していることを確認します。

必要なロール

SAP Datasphere をクエリするのに必要な権限を取得するには、プロジェクトに対する BigQuery 接続ユーザーroles/bigquery.connectionUser)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

データのクエリ

GoogleSQL クエリから SAP Datasphere に連携クエリを送信するには、EXTERNAL_QUERY 関数を使用します。

次の例は、SAP Datasphere の ORDERS という名前のテーブルと BigQuery の mydataset.customers という名前のテーブルを結合する連携クエリです。

SELECT c.customer_id, c.name, rq.first_order_date
FROM mydataset.customers AS c
LEFT OUTER JOIN EXTERNAL_QUERY(
  'connection_id',
  '''SELECT CUSTOMER_ID, MIN(ORDER_DATE) AS first_order_date
     FROM ORDERS
     GROUP BY CUSTOMER_ID''') AS rq
  ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;

SAP Datasphere テーブル スキーマを表示する

次の例では、EXTERNAL_QUERY 関数を使用して、SAP Datasphere の SYS スキーマからデータベース メタデータを取得します。

-- List all views in a schema.
SELECT * FROM EXTERNAL_QUERY(
  'connection_id',
  '''SELECT VIEW_NAME FROM SYS.VIEWS
     WHERE SCHEMA_NAME = 'MY_SCHEMA'''');
-- List all columns in a view.
SELECT * FROM EXTERNAL_QUERY(
  'connection_id',
  '''SELECT COLUMN_NAME, DATA_TYPE_NAME
     FROM SYS.VIEW_COLUMNS
     WHERE SCHEMA_NAME = 'MY_SCHEMA' AND
           VIEW_NAME = 'my_view'
     ORDER BY POSITION''');

料金

連携クエリの実行にかかる費用は、次の 3 つの要因に基づきます。

  • SAP Datasphere でクエリを実行する際のコンピューティング費用。
  • SAP Datasphere から BigQuery にクエリ結果を転送する際の帯域幅費用。
  • BigQuery でクエリを実行するコンピューティング費用。

SAP Datasphere に関連する費用は、使用する SAP サービスの種類によって異なります。帯域幅コストを抑えるため、クエリは、最終結果の計算に不要な列と行をすべて除外するように、EXTERNAL_QUERY に記述することをおすすめします。

BigQuery で連携クエリを実行しても追加料金は発生しません。BigQuery の料金の詳細については、料金をご覧ください。

次のステップ