Choisissez entre SQL et Python
Les LakeFlow Pipelines prennent en charge les interfaces SQL et Python pour la définition des pipelines batch et streaming. Les deux interfaces produisent le même graphe de flux de données sous-jacent, elles offrent donc des fonctionnalités équivalentes pour la plupart des traitements de données. Ils différent en matière de flexibilité, d'accessibilité et de couverture des fonctionnalités.
Utilisez ce guide pour décider de l’interface à utiliser :
- Si vous pouvez exprimer votre logique en SQL, utilisez SQL.
- Si vous avez besoin d’un contrôle programmatique ou d’une fonctionnalité Python uniquement, utilisez Python.
- Si vous êtes plus à l'aise avec Python, utilisez Python. Il couvre l'ensemble des fonctionnalités du pipeline, la familiarité est donc une raison suffisante. L'inverse n'est pas vrai : SQL ne couvre pas toutes les fonctionnalités, ne le choisissez donc pas uniquement par familiarité.
Vous pouvez également combiner les deux interfaces dans le même pipeline. Consultez Mélanger SQL et Python.
Quand utiliser SQL
SQL est adapté lorsque vous souhaitez :
- Définitions lisibles et déclaratives : une logique claire que les data engineers et les analystes peuvent maintenir.
- Types de table standard : pipelines construits principalement à partir de tables de streaming et de vues matérialisées.
- Chaînes de transformations linéaires : Ingestion et transformation simples, telles qu'un flux bronze-vers-argent-vers-Gold, sans logique procédurale.
- **Tables autonomes** : tables de streaming autonomes ou vues matérialisées, que vous rédigez en SQL.
Pour un aperçu du développement de pipelines en SQL, voir Développer le code des LakeFlow Pipelines avec SQL.
Quand utiliser Python
Python convient bien lorsque vous avez besoin de :
- **Contrôle programmatique** : boucles, conditionnelles et métaprogrammation pour générer des définitions de pipeline dynamiquement.
- Bibliothèques externes : packages Python tels que
fakerouboto3. Voir Gérer les dépendances Python pour les pipelines. - Fonctions définies par l'utilisateur (UDF) : Vous définissez les UDF en Python et pouvez les appeler à partir de fichiers sources Python et SQL. Consultez les fonctions scalaires définies par l'utilisateur Python (UDF).
- Fonctionnalités Python uniquement :
create_auto_cdc_from_snapshot_flow()pour appliquer la capture des modifications de données à partir d’un instantané de base de données.create_sink()etforeach_batch_sink()pour écrire vers des destinations de streaming d'événements externes ou Delta.
Pour un aperçu du développement de pipelines en Python, consultez Développer du code de pipeline avec Python.
Combiner SQL et Python
Un seul pipeline peut combiner des définitions SQL et Python, mais chaque langage doit se trouver dans un fichier source distinct. Par exemple, vous pouvez définir vos tables bronze et silver en Python et vos tables Gold en SQL.
Disponibilité des fonctionnalités
Le tableau suivant compare la façon dont chaque interface prend en charge les fonctionnalités courantes du pipeline :
Fonctionnalité | SQL | Python |
|---|---|---|
table de streaming |
|
|
vue matérialisée |
|
|
Vue matérialisée compatible avec Iceberg (Aperçu public) |
| Non pris en charge |
Vue temporaire |
|
|
Table privée |
|
|
CDC automatique |
|
|
CDC automatique à partir d'un instantané | Non pris en charge |
|
Flux |
|
|
Puits | Non pris en charge |
|
Attentes |
|
|
Résumé des décisions
Si vous avez besoin de…
Objectif | Interface recommandée |
|---|---|
Simplicité et lisibilité | SQL |
Configuration déclarative rapide | SQL |
Table de streaming autonome ou vue matérialisée | SQL |
Logique conditionnelle ou de bouclage | Python |
UDFs ou bibliothèques Python externes | Python |
Auto CDC à partir de snapshot ou des récepteurs | Python |
Contrôle programmatique complet et modularité | Python |