Requêtes fédérées SAP Datasphere

En tant qu'analyste de données, vous pouvez interroger des données relationnelles dans SAP Datasphere à partir de BigQuery en utilisant des requêtes fédérées.

La fédération de BigQuery et SAP Datasphere permet à BigQuery d'interroger les données qui résident dans SAP Datasphere en temps réel, sans avoir à les copier ni à les déplacer.

Pour exécuter une requête SQL dans SAP Datasphere, spécifiez cette requête SQL dans BigQuery dans une fonction EXTERNAL_QUERY. Les résultats sont ensuite transférés de SAP Datasphere vers BigQuery.

Limites

  • Vous ne pouvez interroger que les vues relationnelles exposées pour la consommation. Les autres objets dans SAP Datasphere ne sont pas accessibles à la requête fédérée via EXTERNAL_QUERY.
  • La connexion à SAP Datasphere peut être établie à partir de n'importe quelle adresse IP externe appartenant à Google Cloud. Cette adresse IP peut changer au fil du temps. Par conséquent, vous devez ajouter toutes les adresses IP externes Google Cloud à la liste d'autorisation dans SAP Datasphere.
  • La latence des requêtes fédérées peut être nettement supérieure à celle d'une même requête si elle a été exécutée directement dans SAP Datasphere.
  • Aucun pushdown SQL supplémentaire n'est compatible avec SAP Datasphere.
  • La requête SQL SAP Datasphere doit spécifier des alias pour les colonnes contenant les résultats de la fonction.

Avant de commencer

Assurez-vous que votre administrateur BigQuery a créé une connexion SAP Datasphere et l'a partagée avec vous.

Rôles requis

Pour obtenir les autorisations nécessaires pour interroger SAP Datasphere, demandez à votre administrateur de vous accorder le rôle IAM Utilisateur de connexion BigQuery (roles/bigquery.connectionUser) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Interroger les données

Pour envoyer une requête fédérée à SAP Datasphere à partir d'une requête GoogleSQL, utilisez la fonction EXTERNAL_QUERY.

L'exemple suivant est une requête fédérée qui joint une table dans SAP Datasphere nommée ORDERS et une table dans BigQuery nommée 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;

Afficher un schéma de table SAP Datasphere

Les exemples suivants utilisent la fonction EXTERNAL_QUERY pour récupérer les métadonnées de base de données à partir du schéma SYS dans SAP Datasphere.

-- 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''');

Tarification

Le coût d'exécution d'une requête fédérée est basé sur trois facteurs:

  • Coût de calcul de l'exécution de la requête dans SAP Datasphere.
  • Le coût de la bande passante pour le transfert des résultats de la requête de SAP Datasphere vers BigQuery.
  • Le coût de calcul lié à l'exécution de la requête dans BigQuery.

Les coûts liés à SAP Datasphere dépendent du type de service SAP que vous utilisez. Pour limiter les coûts en termes de bande passante, nous vous recommandons d'écrire la requête dans EXTERNAL_QUERY afin d'exclure toutes les colonnes et les lignes qui ne sont pas nécessaires au calcul du résultat final.

L'exécution de requêtes fédérées dans BigQuery n'entraîne aucun coût supplémentaire. Pour en savoir plus sur les tarifs de BigQuery, consultez la section Tarifs.

Étapes suivantes