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 !).
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
Créer la procédure dans Snowflake
Connecter vous à votre studio Snowflake et créer votre procédure stockée dans votre database :
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 :
Créez un dataset basé sur ce service lié en sélectionnant une table au hasard :
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()” :
Testez !
Et voila ca fonctionne !
FIN
Views:
1 398
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.
Thx
Thank you for sharing your precious knowledge. Just the right information I needed. By the way, check out my website at QU5 about Airport Transfer.