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 à l'aide de 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-la 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 à la consommation. Les autres objets dans SAP Datasphere ne sont pas accessibles à la requête fédérée via EXTERNAL_QUERY.
  • La latence de la requête fédérée peut être nettement supérieure à celle d'une même requête si elle a été exécutée directement dans SAP Datasphere.
  • L'exécution de la première requête qui utilise la connexion SAP Datasphere dans un projet donné peut prendre plus d'une minute.
  • Aucun autre pushdown SQL n'est compatible avec SAP Datasphere.
  • La requête SQL SAP Datasphere doit spécifier des alias pour les colonnes contenant des résultats de fonction.
  • Lorsque l'utilisation de l'API Compute Engine dans le projet de requête est limitée par VPC Service Controls, la requête fédérée échoue.

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 page Gérer l'accès aux projets, aux dossiers et aux organisations.

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

Tarifs

Le coût d'exécution d'une requête fédérée dépend de trois facteurs :

  • Le coût de calcul lié à 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