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
- En savoir plus sur les requêtes fédérées.
- Obtenez plus d'informations sur les types de données non compatibles.