Aller au contenu principal

Interroger des bases de données externes à l'aide de la fonction remote_query

info

Aperçu

Cette fonctionnalité est en aperçu public.

La fonction à valeur de table (TVF) remote_query vous permet d'exécuter des query SQL directement sur des bases de données externes et des data warehouses depuis Databricks, en utilisant la syntaxe SQL native du système distant. Cette fonction offre une alternative flexible à la fédération de query, vous permettant d'exécuter des query écrites dans le dialecte de la base de données distante sans avoir besoin de les traduire en Databricks SQL.

remote_query comparé à la fédération de query

Le tableau suivant résume les principales différences entre la fonction remote_query et la fédération de query :

Attribut

remote_query fonction

Query federation

Syntaxe de query

Rédigez des requêtes en utilisant le dialecte SQL natif de la base de données distante (par exemple, Oracle PL/SQL, BigQuery SQL).

Écrivez des requêtes en utilisant la syntaxe Databricks SQL. Databricks traduit et répercute les opérations compatibles vers la base de données distante.

Cas d'usage

  • Vous avez des queries SQL existantes écrites dans le dialecte de la base de données distante que vous souhaitez exécuter sans modification.
  • Vous devez utiliser des fonctions ou une syntaxe spécifiques à la base de données qui pourraient ne pas être disponibles dans Databricks SQL.
  • Vous souhaitez un accès ad hoc aux données distantes sans créer de catalogues étrangers.
  • Vous souhaitez query des données externes à l'aide de la syntaxe Databricks SQL.
  • Vous avez besoin d’un modèle d’accès aux données à long terme avec un accès gouverné par l’intermédiaire de catalogues externes Unity Catalog.
  • Vous souhaitez combiner des données provenant de plusieurs sources dans une seule query en utilisant une syntaxe cohérente.
  • Vous souhaitez utiliser l'assistant Genie pour écrire des requêtes.

Contrôle d'accès

Les utilisateurs ont besoin du privilège USE CONNECTION sur la connexion. L'autorisation peut être déléguée par l'intermédiaire de vues.

Les utilisateurs ont besoin de privilèges au niveau de la table sur les objets de catalogue étranger. Contrôle granulaire.

Attribut

remote_query fonction

Query federation

Syntaxe de query

Rédigez des requêtes en utilisant le dialecte SQL natif de la base de données distante (par exemple, Oracle PL/SQL, BigQuery SQL).

Écrivez des requêtes en utilisant la syntaxe Databricks SQL. Databricks traduit et répercute les opérations compatibles vers la base de données distante.

Cas d'usage

  • Vous avez des queries SQL existantes écrites dans le dialecte de la base de données distante que vous souhaitez exécuter sans modification.
  • Vous devez utiliser des fonctions ou une syntaxe spécifiques à la base de données qui pourraient ne pas être disponibles dans Databricks SQL.
  • Vous souhaitez un accès ad hoc aux données distantes sans créer de catalogues étrangers.
  • Vous souhaitez query des données externes à l'aide de la syntaxe Databricks SQL.
  • Vous avez besoin d’un modèle d’accès aux données à long terme avec un accès gouverné par l’intermédiaire de catalogues externes Unity Catalog.
  • Vous souhaitez combiner des données provenant de plusieurs sources dans une seule query en utilisant une syntaxe cohérente.
  • Vous souhaitez utiliser l'assistant Genie pour écrire des requêtes.

Contrôle d'accès

Les utilisateurs ont besoin du privilège USE CONNECTION sur la connexion. L'autorisation peut être déléguée par l'intermédiaire de vues.

Les utilisateurs ont besoin de privilèges au niveau de la table sur les objets de catalogue étranger. Contrôle granulaire.

Avant de commencer

Exigences du Workspace :

  • Workspace activé pour Unity Catalog.

Compute requis :

  • Connectivité réseau de votre cluster Databricks Runtime ou de votre SQL Warehouse aux systèmes de base de données cibles. Consultez les recommandations de mise en réseau pour Lakehouse Federation.
  • Les clusters Databricks doivent utiliser Databricks Runtime 17.3 ou une version ultérieure.
  • Les SQL warehouses doivent être Pro ou Serverless et utiliser la version 2025.35 ou ultérieure.

Autorisations requises :

  • Pour créer une connexion, vous devez avoir le privilège CREATE CONNECTION sur le métastore Unity Catalog.
  • Pour utiliser la fonction remote_query, vous devez disposer du privilège USE CONNECTION sur la connexion ou du privilège SELECT sur une vue qui encapsule la fonction. Les clusters à utilisateur unique nécessitent également l'autorisation MANAGE sur la connexion.

Créer une connexion

Pour utiliser la fonction remote_query, vous devez d’abord créer une connexion Unity Catalog à votre base de données externe. Si vous disposez déjà d'une connexion créée pour la fédération de query, vous pouvez la réutiliser.

La fonction remote_query prend en charge les connexions aux types de connexion suivants :

Pour des informations sur la gestion des connexions existantes, consultez Gérer les connexions pour Lakehouse Federation.

Accorder l'accès à la connexion

Pour utiliser la fonction remote_query, vous devez disposer du privilège USE CONNECTION sur la connexion (ou du privilège MANAGE sur les clusters à utilisateur unique).

SQL
GRANT USE CONNECTION ON CONNECTION <connection-name> TO <user-or-group>;

Utilisez la fonction remote_query

La fonction remote_query exécute une requête sur la base de données distante et renvoie les résultats sous forme de table que vous pouvez utiliser dans les requêtes Databricks SQL.

Syntaxe

SQL
SELECT * FROM remote_query(
'<connection-name>',
<option-key> => '<option-value>'
[, <option-key> => '<option-value>' ...]
)

Paramètres requis

  • connection-name: Le nom de la connexion Unity Catalog à utiliser.

Tous les autres paramètres requis varient selon le type de connexion. Consultez les options spécifiques au connecteur pour plus de détails.

Options spécifiques au connecteur

Les options disponibles varient selon le type de connexion. Les tableaux suivants décrivent les options de chaque connecteur.

MySQL, PostgreSQL, SQL Server, Redshift et Teradata

parameter

Obligatoire

Description

database

Oui

Le nom de la base de données sur le système distant.

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

fetchsize

Non

Le nombre de lignes à récupérer par aller-retour. Des valeurs plus importantes peuvent améliorer les performances, mais elles utilisent plus de mémoire. Par default : 0 (utiliser la valeur par default du driver).

partitionColumn

Non

Une colonne avec des valeurs uniformément réparties à utiliser pour la récupération parallèle des données. Doit être utilisé avec lowerBound, upperBound et numPartitions. Impossible d’utiliser avec l’option query.

lowerBound

Non

La valeur minimale de la colonne de partition. Doit être utilisé avec partitionColumn, upperBound et numPartitions.

upperBound

Non

La valeur maximale de la colonne de partition. Doit être utilisé avec partitionColumn, lowerBound et numPartitions.

numPartitions

Non

Le nombre de connexions parallèles à utiliser pour la récupération des données. Ne définissez pas cette valeur trop haut (des centaines). Doit être utilisé avec partitionColumn, lowerBound et upperBound.

parameter

Obligatoire

Description

database

Oui

Le nom de la base de données sur le système distant.

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

fetchsize

Non

Le nombre de lignes à récupérer par aller-retour. Des valeurs plus importantes peuvent améliorer les performances, mais elles utilisent plus de mémoire. Par default : 0 (utiliser la valeur par default du driver).

partitionColumn

Non

Une colonne avec des valeurs uniformément réparties à utiliser pour la récupération parallèle des données. Doit être utilisé avec lowerBound, upperBound et numPartitions. Impossible d’utiliser avec l’option query.

lowerBound

Non

La valeur minimale de la colonne de partition. Doit être utilisé avec partitionColumn, upperBound et numPartitions.

upperBound

Non

La valeur maximale de la colonne de partition. Doit être utilisé avec partitionColumn, lowerBound et numPartitions.

numPartitions

Non

Le nombre de connexions parallèles à utiliser pour la récupération des données. Ne définissez pas cette valeur trop haut (des centaines). Doit être utilisé avec partitionColumn, lowerBound et upperBound.

remarque

Lorsque vous utilisez des paramètres de partition, les quatre paramètres (partitionColumn, lowerBound, upperBound, numPartitions) doivent être spécifiés ensemble, et vous devez utiliser l'option dbtable au lieu de query.

Oracle

parameter

Obligatoire

Description

service_name

Oui

Le nom du service Oracle (utilisé à la place de database).

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

fetchsize

Non

Le nombre de lignes à récupérer par aller-retour. Des valeurs plus importantes peuvent améliorer les performances, mais elles utilisent plus de mémoire. Par default : 0 (utiliser la valeur par default du driver).

partitionColumn

Non

Une colonne avec des valeurs uniformément réparties à utiliser pour la récupération parallèle des données. Doit être utilisé avec lowerBound, upperBound et numPartitions. Impossible d’utiliser avec l’option query.

lowerBound

Non

La valeur minimale de la colonne de partition. Doit être utilisé avec partitionColumn, upperBound et numPartitions.

upperBound

Non

La valeur maximale de la colonne de partition. Doit être utilisé avec partitionColumn, lowerBound et numPartitions.

numPartitions

Non

Le nombre de connexions parallèles à utiliser pour la récupération des données. Ne définissez pas cette valeur trop haut (des centaines). Doit être utilisé avec partitionColumn, lowerBound et upperBound.

parameter

Obligatoire

Description

service_name

Oui

Le nom du service Oracle (utilisé à la place de database).

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

fetchsize

Non

Le nombre de lignes à récupérer par aller-retour. Des valeurs plus importantes peuvent améliorer les performances, mais elles utilisent plus de mémoire. Par default : 0 (utiliser la valeur par default du driver).

partitionColumn

Non

Une colonne avec des valeurs uniformément réparties à utiliser pour la récupération parallèle des données. Doit être utilisé avec lowerBound, upperBound et numPartitions. Impossible d’utiliser avec l’option query.

lowerBound

Non

La valeur minimale de la colonne de partition. Doit être utilisé avec partitionColumn, upperBound et numPartitions.

upperBound

Non

La valeur maximale de la colonne de partition. Doit être utilisé avec partitionColumn, lowerBound et numPartitions.

numPartitions

Non

Le nombre de connexions parallèles à utiliser pour la récupération des données. Ne définissez pas cette valeur trop haut (des centaines). Doit être utilisé avec partitionColumn, lowerBound et upperBound.

remarque

Lorsque vous utilisez des paramètres de partition, les quatre paramètres (partitionColumn, lowerBound, upperBound, numPartitions) doivent être spécifiés ensemble, et vous devez utiliser l'option dbtable au lieu de query.

Snowflake

parameter

Obligatoire

Description

database

Oui

Le nom de la base de données dans Snowflake.

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à query (nom en une partie ou en plusieurs parties). Ne peut pas être utilisé avec query.

schema

Non

Le nom du schéma dans Snowflake. Default : public.

query_timeout

Non

Le délai d'expiration de la query en secondes. Default: 0 (aucun délai d'expiration).

partition_size_in_mb

Non

La taille de partition attendue en mégaoctets pour la récupération parallèle des données. default: 100 Mo.

parameter

Obligatoire

Description

database

Oui

Le nom de la base de données dans Snowflake.

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à query (nom en une partie ou en plusieurs parties). Ne peut pas être utilisé avec query.

schema

Non

Le nom du schéma dans Snowflake. Default : public.

query_timeout

Non

Le délai d'expiration de la query en secondes. Default: 0 (aucun délai d'expiration).

partition_size_in_mb

Non

La taille de partition attendue en mégaoctets pour la récupération parallèle des données. default: 100 Mo.

BigQuery

parameter

Obligatoire

Description

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

materializationDataset

Oui, si la matérialisation des résultats est nécessaire. La matérialisation est nécessaire si query est spécifié et si dbtable pointe vers une vue.

Le nom du dataset BigQuery où les tables temporaires sont matérialisées. La durée de vie (TTL) default des tables temporaires est de 24 heures.

materializationProject

Non

L'ID du projet BigQuery pour la matérialisation. Default to the project specified in the connection.

materializationEnabled

Non

Faut-il activer la matérialisation pour les query. Définissez sur true pour les query de vues. default: false si dbtable est spécifié, true si query est spécifié.

parentProject

Non

L'ID du projet parent à des fins de facturation.

parameter

Obligatoire

Description

query

Oui (ou dbtable)

Une chaîne de query SQL à exécuter sur la base de données distante. Ne peut pas être utilisé avec dbtable.

dbtable

Oui (ou query)

Le nom de la table à interroger. Ne peut pas être utilisé avec query.

materializationDataset

Oui, si la matérialisation des résultats est nécessaire. La matérialisation est nécessaire si query est spécifié et si dbtable pointe vers une vue.

Le nom du dataset BigQuery où les tables temporaires sont matérialisées. La durée de vie (TTL) default des tables temporaires est de 24 heures.

materializationProject

Non

L'ID du projet BigQuery pour la matérialisation. Default to the project specified in the connection.

materializationEnabled

Non

Faut-il activer la matérialisation pour les query. Définissez sur true pour les query de vues. default: false si dbtable est spécifié, true si query est spécifié.

parentProject

Non

L'ID du projet parent à des fins de facturation.

important

Tous les paramètres BigQuery sont sensibles à la casse.

JDBC

Les connexions JDBC sont génériques et peuvent se connecter à n'importe quelle base de données avec un Driver JDBC. Databricks recommande d'utiliser une connexion JDBC uniquement si votre base de données n'est pas prise en charge par l'un des autres types de connexion intégrés, car les types de connexion intégrés offrent de meilleures performances. Contrairement aux autres types de connexion intégrés, le type de connexion JDBC n'a pas d'ensemble intégré d'options de temps de query autorisées. Pour permettre qu'une option soit définie au moment de la requête, le propriétaire de la connexion doit l'ajouter au parameter externalOptionsAllowList sur la connexion. Si externalOptionsAllowList n'est pas défini, aucune option ne peut être transmise au moment de la query.

remarque

Les options définies sur la connexion ne peuvent pas être outrepassées au moment de la query. Les paramètres de connexion host, port, serverName, portNumber et instanceName ne peuvent jamais être définis au moment de la query, quelle que soit externalOptionsAllowList. Voir la connexion JDBC pour plus de détails.

Options de contrôle de pushdown supplémentaires

Vous pouvez combiner la fonction remote_query avec les opérations Databricks SQL, et la plupart de ces opérations peuvent également être poussées vers le bas. Vous pouvez également contrôler quelles opérations Databricks SQL peuvent être transférées. Ces options s'appliquent à tous les types de connexion et sont insensibles à la casse.

parameter

Par défaut

Description

pushdown.limit.enabled

true

Activez ou désactivez le pushdown des clauses LIMIT vers la base de données distante.

pushdown.offset.enabled

true

Activez ou désactivez le pushdown des clauses OFFSET vers la base de données distante.

pushdown.filters.enabled

true

Activer ou désactiver l'envoi des filtres WHERE vers la base de données distante.

pushdown.aggregates.enabled

true

Activer ou désactiver le transfert des fonctions d'agrégation (COUNT, SUM, AVG, MAX, MIN) vers la base de données distante.

pushdown.sortLimit.enabled

true

Activer ou désactiver la descente des queries Top N (combinaison de ORDER BY et LIMIT) vers la base de données distante.

parameter

Par défaut

Description

pushdown.limit.enabled

true

Activez ou désactivez le pushdown des clauses LIMIT vers la base de données distante.

pushdown.offset.enabled

true

Activez ou désactivez le pushdown des clauses OFFSET vers la base de données distante.

pushdown.filters.enabled

true

Activer ou désactiver l'envoi des filtres WHERE vers la base de données distante.

pushdown.aggregates.enabled

true

Activer ou désactiver le transfert des fonctions d'agrégation (COUNT, SUM, AVG, MAX, MIN) vers la base de données distante.

pushdown.sortLimit.enabled

true

Activer ou désactiver la descente des queries Top N (combinaison de ORDER BY et LIMIT) vers la base de données distante.

Par default, toutes les opérations de pushdown sont activées. Vous pouvez désactiver des pushdowns spécifiques si nécessaire pour le dépannage ou pour contourner des problèmes de compatibilité avec des bases de données distantes spécifiques.

Déléguer l'accès via les vues

Vous pouvez déléguer l'accès aux données distantes sans accorder directement aux utilisateurs les privilèges USE CONNECTION en encapsulant la fonction remote_query dans une vue. Cette approche présente les avantages suivants :

  • **Contrôle d'accès simplifié** : accordez SELECT le privilège sur la vue au lieu de gérer USE CONNECTION les privilèges.
  • Sécurité des données : contrôlez les colonnes et les lignes auxquelles les utilisateurs peuvent accéder en définissant la query d'affichage.
  • Suivi de la lignée : Suivez l’accès aux données via la lignée de la vue plutôt qu’une utilisation directe de la connexion.

Pour déléguer l'accès via une vue :

  1. Créez une vue qui appelle la fonction remote_query :

    SQL
    CREATE VIEW sales_data_view AS
    SELECT * FROM remote_query(
    'my_connection',
    database => 'sales_db',
    query => 'SELECT region, product, revenue FROM sales'
    );
  2. Accorder le privilège SELECT sur la vue aux utilisateurs ou groupes :

    SQL
    GRANT SELECT ON VIEW sales_data_view TO <user-or-group>;
  3. Les utilisateurs peuvent désormais interroger la vue sans avoir besoin du privilège USE CONNECTION :

    SQL
    SELECT * FROM sales_data_view WHERE region = 'US';
important

Le propriétaire de la vue doit disposer du privilège USE CONNECTION sur la connexion. Lorsque les utilisateurs interrogent la vue, la vérification d'accès à la connexion est effectuée à l'aide des privilèges du propriétaire de la vue, et non des privilèges de l'utilisateur qui interroge.

Exemples

Exécution de base de la query

Exécutez une query sur une base de données PostgreSQL :

SQL
SELECT * FROM remote_query(
'my_postgres_connection',
database => 'sales_db',
query => 'SELECT * FROM orders WHERE order_date > CURRENT_DATE - INTERVAL \'30 days\''
);

query une table spécifique

Query une table MySQL directement :

SQL
SELECT * FROM remote_query(
'my_mysql_connection',
database => 'inventory',
dbtable => 'my_schema.products'
);

Oracle avec nom de service

Queryer une base de données Oracle :

SQL
SELECT * FROM remote_query(
'my_oracle_connection',
service_name => 'ORCL',
query => 'SELECT * FROM customers WHERE ROWNUM <= 1000'
);

BigQuery query

Query Google BigQuery :

SQL
SELECT * FROM remote_query(
'my_bigquery_connection',
materializationDataset => 'analytics',
query => 'SELECT * FROM `project.dataset.table` WHERE created_date > DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)'
);

Query Snowflake

Interroger Snowflake :

SQL
SELECT * FROM remote_query(
'my_snowflake_connection',
database => 'ANALYTICS_DB',
query => 'SELECT * FROM SALES WHERE SALE_DATE >= DATEADD(day, -30, CURRENT_DATE())'
);

Query JDBC

Interroger une base de données à l'aide d'une connexion JDBC :

SQL
SELECT * FROM remote_query(
'my_jdbc_connection',
query => 'SELECT * FROM customers WHERE active = 1'
);

Optimisation des performances avec le partitionnement

Récupérer les données en parallèle à partir d'une table SQL Server :

SQL
SELECT * FROM remote_query(
'my_sqlserver_connection',
database => 'sales',
dbtable => 'transactions',
partitionColumn => 'transaction_id',
lowerBound => '0',
upperBound => '1000000',
numPartitions => '10',
fetchsize => '1000'
);

Combiner avec les opérations Databricks SQL

Appliquer des filtres supplémentaires et des transformations :

SQL
SELECT customer_id, SUM(amount) as total_amount
FROM remote_query(
'my_postgres_connection',
database => 'orders_db',
query => 'SELECT customer_id, amount, order_date FROM orders'
)
WHERE order_date >= '2025-01-01'
GROUP BY customer_id
HAVING total_amount > 1000
ORDER BY total_amount DESC
LIMIT 100;

Créer une vue pour l'accès délégué

Créer une vue qui enveloppe la fonction remote_query. Les utilisateurs disposant du privilège SELECT sur la vue peuvent interroger les données sans avoir besoin du privilège USE CONNECTION sur la connexion sous-jacente :

SQL
CREATE VIEW sales_summary AS
SELECT * FROM remote_query(
'my_mysql_connection',
database => 'sales',
query => 'SELECT region, product, SUM(revenue) as total_revenue FROM sales_data GROUP BY region, product'
);

GRANT SELECT ON VIEW sales_summary TO <user-or-group>;

Contrôler le comportement de pushdown

Lorsque vous utilisez la fonction remote_query, Databricks peut transférer des opérations supplémentaires vers la base de données distante au-delà de la query que vous spécifiez. Cette fonctionnalité est utile lorsque vous exécutez une query sur une vue qui utilise la fonction remote_query.

Les Opérations suivantes peuvent être transférées :

  • Filtres : WHERE clauses appliquées au résultat de la query distante.
  • Projections : sélection de colonnes (SELECT colonnes spécifiques)
  • Limite : LIMIT clauses pour restreindre le nombre de lignes renvoyées
  • Offset : OFFSET clauses pour ignorer les lignes
  • Agrégats : Fonctions d'agrégation comme COUNT, SUM, AVG, MAX, MIN
  • Top-N : Combinaison de ORDER BY et LIMIT pour les requêtes N supérieures/inférieures

La prise en charge du pushdown varie selon la source de données. Consultez la documentation relative à votre type de connexion spécifique pour plus de détails.

Désactiver les descentes de prédicats spécifiques pour le dépannage ou la compatibilité :

SQL
SELECT * FROM remote_query(
'my_postgres_connection',
database => 'analytics',
query => 'SELECT * FROM complex_view',
`pushdown.aggregates.enabled` => 'false',
`pushdown.filters.enabled` => 'false'
);

Limitations

  • Opérations en lecture seule : la fonction remote_query ne prend en charge que les queries SELECT. Les Opérations de modification de données (INSERT, UPDATE, DELETE, Merge), les Opérations DDL (CREATE, DROP, ALTER) et les procédures stockées ne sont pas prises en charge.

  • Validation de la query : La query que vous fournissez est exécutée directement sur la base de données distante. Databricks valide que la query est en lecture seule en effectuant une inspection du schéma, mais la validation syntaxique et sémantique est effectuée par la base de données distante.

Dépannage

Erreurs d'autorisation

Si vous recevez une erreur d'autorisation, vérifiez que :

  1. Vous disposez du privilège USE CONNECTION sur la connexion ou du privilège SELECT sur une vue qui englobe la fonction.
  2. Les informations d'identification de la connexion disposent des autorisations appropriées sur la base de données distante.

Exemple d'erreur :

PERMISSION_DENIED: User does not have USE CONNECTION on Connection 'my_connection'

Résolution :

SQL
GRANT USE CONNECTION ON CONNECTION my_connection TO <user-or-group>;

Paramètres non pris en charge

Si vous recevez une erreur concernant des paramètres non pris en charge, vérifiez que vous utilisez les paramètres corrects pour votre type de connexion. Le message d'erreur répertorie les paramètres autorisés.

Exemple d'erreur :

REMOTE_QUERY_FUNCTION_UNSUPPORTED_CONNECTOR_PARAMETERS: The following parameters are not supported for connection type 'postgresql': 'materializationDataset'. Allowed parameters for this connection type are: 'database', 'query', 'dbtable', 'fetchsize', 'partitionColumn', 'lowerBound', 'upperBound', 'numPartitions'.

Résolution : supprimez le paramètre non pris en charge et utilisez les paramètres corrects pour votre type de connexion.

Opérations DML non prises en charge

La fonction remote_query prend uniquement en charge les query SELECT en lecture seule.

Exemple d'erreur :

DML_OPERATIONS_NOT_SUPPORTED_FOR_REMOTE_QUERY_FUNCTION: Data modification operations are not supported in remote_query function.

Résolution : supprimez toutes les instructions INSERT, UPDATE, DELETE ou DDL de votre query. N'utilisez que des instructions SELECT.

Ressources supplémentaires