Exécuter une procédure stockée Snowflake avec Azure Data Factory

Comme vous l’avez surement déjà remarqué, il n’existe pas d’activité “native” dans Azure Data Factory (ni dans les pipelines Synapse) pour exécuter une procédure stockée dans Snowflake. En effet, l’activité procédure stockée n’est compatible qu’avec les bases de données SQL Server, Azure SQL database et Synapse SQL Pool (cf. Transformer des données à l’aide de l’activité de procédure stockée – Azure Data Factory | Microsoft Docs). Certaines sources sur le net proposent des solutions de contournement en utilisant un composant tier comme une Azure Function ou un bout de code Python dans Databricks (un bazouka pour exécuter une proc Open-mouthed smile !).

Mais rassurer vous, il est aussi possible de le faire sans composant tier en utilisant l’activité magique de ADF : la LOOKUP !  La lookup permet d’exécuter du code SQL un peu partout, donc pourquoi pas une commande “CALL PROC” dans Snowflake Smile

Créer la procédure dans Snowflake

Connecter vous à votre studio Snowflake et créer votre procédure stockée dans votre database :

xut7d5XAlc

Les proc Snowflake sont codées en JavaScript, mais il est quand même possible d’exécuter du code SQL, si on a envie de faire ses transformations en SQL comme on le ferait avec une BDD SQL classique. Voici un exemple de proc super simple, vous pourrez copier votre code SQL dans la partie jaune :

CREATE OR REPLACE PROCEDURE snowflake_proc()
returns string not null
language javascript
as
$$
var cmd = `
/* code SQL ici*/
select current_date();
`
var sql = snowflake.createStatement({sqlText: cmd});
var result = sql.execute();
return 'FIN';
$$;

Créer la lookup dans Azure Data Factory

Maintenant dans ADF, vous allez créer votre service lié Snowflake :

9iKyVLPiTU

Créez un dataset basé sur ce service lié en sélectionnant une table au hasard :

GBfQ1Zp6gt

Puis dans un pipeline ajouter l’activité de lookup en mettant des les paramètre le dataset créé, sélectionnez le mode query et copiez le code “call snowflake_proc()” :

IYY3bN40Nb

Testez !

nyh4PvCns2

Et voila ca fonctionne !

FIN

FADATA

Fabien Adato est Customer Engineer Data et AI chez Microsoft. Après avoir intégré la société CGI Business Consulting où il rejoint une équipe dédiée à la Business Intelligence, il fait ses premières armes sur la solution Microsoft SQL Server. Pendant plus de 4 ans, il acquiert des compétences techniques et fonctionnelles sur toute la chaîne de valeur de la BI (ETL, Base de Données, Cube Olap et Rapport). Il a pu se spécialiser également sur de nouvelles technologies de la Data et notamment Hadoop, Pig et Hive, ainsi que des technologies self-service BI, le No-SQL comme la base de données MongoDB et le moteur d’indexation ElasticSearch. Il entre chez AZEO en 2014 puis Avanade en 2021 puis Microsoft en 2021 pour y assurer le poste de CE DATA / AI, autour des technologies Microsoft SQL Server, Power BI et Azure Data.

One thought on “Exécuter une procédure stockée Snowflake avec Azure Data Factory

Répondre à Anonyme Annuler la réponse

Votre adresse e-mail ne sera pas publiée.