Aller au contenu principal

Opérateurs personnalisés dans Lakeflow Designer

Lakeflow Designer vous permet de créer des opérateurs personnalisés qui apparaissent directement sur le canevas aux côtés des opérateurs intégrés. Utilisez-les pour étendre Lakeflow Designer avec votre propre logique métier, vos propres calculs ou vos propres intégrations. Les opérateurs personnalisés étaient auparavant appelés opérateurs définis par l’utilisateur (UDO).

Les opérateurs personnalisés sont de deux types :

  • Local : L'opérateur appartient à un fichier de préparation de données visuel. Décrivez la transformation et Genie Code génère l'opérateur. Voir Créer un opérateur personnalisé local avec Genie Code.
  • Partagé : l'opérateur est enregistré dans le workspace ; vous et les autres utilisateurs pouvez donc l'ajouter à n'importe quel fichier de préparation des données visuelles. Sa logique est une fonction Python ou une fonction Unity Catalog, décrite en YAML. Écrivez-la vous-même ou demandez à Genie Code de la créer. Consultez Fonctionnement des opérateurs personnalisés.

Créez un opérateur personnalisé local avec Genie Code​

Lorsque Genie Code est disponible dans votre workspace, vous pouvez créer un opérateur personnalisé local à partir du canevas Lakeflow Designer :

  1. Dans le volet Opérateurs , sélectionnez Créer un opérateur personnalisé .

  2. Saisissez une description et, facultativement, un nom. Sélectionnez Generate preview .

prompt

Par exemple, entrez la description suivante :

Count the business days between two date columns, excluding weekends. Let me choose the start and end date columns and name the output column.
  1. Examinez la configuration générée et la fonction Python, puis sélectionnez Approve and create .

Designer stocke la définition de l'opérateur local dans le fichier actuel et l'ajoute au volet Opérateurs . Utilisez le menu des actions de l'opérateur pour modifier ou supprimer la définition. Vous devez supprimer chaque instance de l'opérateur du canevas avant de pouvoir supprimer sa définition.

Choisissez un type d’opérateur partagé​

Les opérateurs personnalisés partagés peuvent être de trois types :

  • python-run-function : Un fichier YAML autonome avec du Python intégré stocké dans le Workspace. Idéal pour les transformations au niveau du DataFrame et les intégrations externes. Les autorisations sont gérées au niveau des fichiers du Workspace.
  • uc-udf : Encapsule une fonction scalaire Unity Catalog. Idéal pour les transformations au niveau des colonnes. L'accès est régi par les autorisations d'Unity Catalog.
  • uc-udtf : Encapsule une fonction table Unity Catalog. Idéal pour les transformations au niveau de la table comme le clustering ML et l'agrégation. L'accès est régi par les autorisations d'Unity Catalog.

Fonctionnalité

python-run-function

uc-udf

uc-udtf

Exemple de cas d'usage

Transformations de DataFrame, intégrations d'API, notifications e-mail

Calculs au niveau des colonnes (IMC, taux d'intérêt)

Clustering ML, agrégation de lignes

Entrée

DataFrames

Valeurs uniques

Table entière, ligne par ligne

Résultat

DataFrames

Valeur unique

Table (plusieurs lignes)

Requiert la fonction Unity Catalog

Non

Oui

Oui

Gouvernance de l'accès

Permissions des fichiers Workspace

Autorisations Unity Catalog (EXECUTE, USE SCHEMA)

Autorisations Unity Catalog (EXECUTE, USE SCHEMA)

Langues prises en charge

Python uniquement

SQL ou Python dans un wrapper SQL.

SQL ou Python dans un wrapper SQL.

Fonctionnalité

python-run-function

uc-udf

uc-udtf

Exemple de cas d'usage

Transformations de DataFrame, intégrations d'API, notifications e-mail

Calculs au niveau des colonnes (IMC, taux d'intérêt)

Clustering ML, agrégation de lignes

Entrée

DataFrames

Valeurs uniques

Table entière, ligne par ligne

Résultat

DataFrames

Valeur unique

Table (plusieurs lignes)

Requiert la fonction Unity Catalog

Non

Oui

Oui

Gouvernance de l'accès

Permissions des fichiers Workspace

Autorisations Unity Catalog (EXECUTE, USE SCHEMA)

Autorisations Unity Catalog (EXECUTE, USE SCHEMA)

Langues prises en charge

Python uniquement

SQL ou Python dans un wrapper SQL.

SQL ou Python dans un wrapper SQL.

Comment fonctionnent les opérateurs personnalisés​

Un opérateur personnalisé partagé se compose de :

  • Logique de l'opérateur : Le code qui s'exécute lorsque l'opérateur est exécuté. Il s'agit d'une fonction Python run() en ligne pour les opérateurs python-run-function, ou d'une fonction Unity Catalog pour les opérateurs uc-udf et uc-udtf. Consultez Écrire la logique pour les opérateurs personnalisés de Lakeflow Designer.
  • Configuration YAML : indique à Lakeflow Designer comment présenter l’opérateur dans l’interface utilisateur, notamment le nom de l’opérateur, sa description, les parameters d’entrée, les widgets d’interface utilisateur et les ports. Tous les types d'opérateurs utilisent le schéma custom-operator-v0.1.0. Pour un opérateur python-run-function, le YAML est un fichier de workspace autonome qui contient également le code en ligne. Pour une fonction Unity Catalog, le YAML est intégré dans le corps de la fonction. Voir la référence YAML des opérateurs personnalisés.
  • Fichier d'enregistrement : Une entrée dans .custom_operators.yaml qui permet à Lakeflow Designer de détecter l'opérateur. Voir Enregistrer et déployer votre opérateur dans Lakeflow Designer.

Créer un opérateur partagé​

Pour créer un opérateur personnalisé partagé de start à Z :

  1. Choisissez un type d’opérateur. Consultez Choisir un type d’opérateur partagé.
  2. Écrivez et testez la logique de l'opérateur. Voir Écrire la logique pour les opérateurs personnalisés Lakeflow Designer.
  3. Décrivez l'opérateur en YAML : son nom, ses propriétés de configuration, ses widgets d'interface utilisateur et ses ports. Voir la référence YAML des opérateurs personnalisés.
  4. Enregistrer l'opérateur : ajoutez-le à .custom_operators.yaml. Consultez Enregistrer et déployer votre opérateur sur Lakeflow Designer.
  5. Accorder des autorisations pour que d'autres utilisateurs puissent découvrir et exécuter l'opérateur. Voir Autorisations.
  6. Utilisez l'opérateur. Il s'affiche dans le panneau Opérateurs de Lakeflow Designer, aux côtés des opérateurs intégrés.

Chaque tutoriel parcourt ces étapes pour un opérateur complet.

astuce

Pour créer un opérateur python-run-function partagé sans l’écrire vous-même, décrivez-le à Genie Code dans le panneau latéral. Genie Code vous demande s’il doit enregistrer l’opérateur pour vous ou pour l’ensemble du workspace, puis écrit le fichier YAML et l’enregistre. Vous devez encore accorder des autorisations aux autres utilisateurs.

Enregistrer et déployer votre opérateur dans Lakeflow Designer​

Pour que votre opérateur apparaisse dans Lakeflow Designer, enregistrez-le dans un fichier .custom_operators.yaml :

  • Niveau Workspace : Placez le fichier à la racine de votre Workspace pour rendre l'opérateur visible à tous les utilisateurs.
  • Niveau utilisateur : Placez le fichier dans votre dossier personnel (/Workspace/Users/<user-name>/.custom_operators.yaml) pour que les opérateurs ne soient visibles que pour vous.
remarque

Lakeflow Designer continue de lire les fichiers d'enregistrement nommés .user_defined_operators.yaml, de sorte que les enregistrements existants continuent de fonctionner.

Enregistrez de nouveaux opérateurs dans .custom_operators.yaml. Si le même dossier contient déjà un fichier .user_defined_operators.yaml, déplacez ses entrées vers .custom_operators.yaml. Lorsque les deux fichiers existent dans un dossier, Lakeflow Designer ne lit que .custom_operators.yaml.

La section operators: prend en charge les chemins de fichiers, les références de fonction Unity Catalog et les modèles glob. Vous pouvez mélanger les types d'entrée :

YAML
operators:
# File path (python-run-function operators)
- /Workspace/Users/me/operators/my_operator.yaml
# Glob pattern (registers all matching files)
- /Workspace/Users/me/operators/transforms/*.yaml
# UC function reference (uc-udf and uc-udtf operators)
- catalog: my_catalog
schema: my_schema
functionName: my_function

Mettre à jour ou supprimer un opérateur​

Lorsque vous modifiez le code d'un opérateur, refresh vos opérateurs personnalisés pour charger la modification. Dans le tab Opérateurs du menu, cliquez sur Icône refresh..

  • Si l'opérateur conserve le même version, l'actualisation charge le code mis à jour.
  • Si l’opérateur possède un nouveau version, l’opérateur sur la toile vous invite à le mettre à niveau (ou à conserver la version actuelle) après le refresh.

Pour supprimer un opérateur de Lakeflow Designer, supprimez son entrée de .custom_operators.yaml. Pour les opérateurs uc-udf et uc-udtf, vous pouvez également supprimer la fonction Unity Catalog sous-jacente avec DROP FUNCTION si vous n'en avez plus besoin.

Autorisations​

Autorisation

Objectif

Accès en lecture .custom_operators.yamlà.

Découvrir l'opérateur.

**Accès en lecture** au fichier YAML (python-run-function uniquement).

Chargez la définition de l'opérateur.

EXÉCUTER sur la fonction Unity Catalog (opérateurs basés uniquement sur les fonctions Unity Catalog).

Exécutez l'opérateur.

USE SCHEMA sur le schéma (opérateurs basés uniquement sur les fonctions Unity Catalog).

Accédez au schéma où la fonction est créée.

Autres autorisations

Selon votre opérateur, les utilisateurs peuvent nécessiter d'autres autorisations. Par exemple, USE CONNECTION sur une connexion Unity Catalog pour les appels d'API HTTP.

Autorisation

Objectif

Accès en lecture .custom_operators.yamlà.

Découvrir l'opérateur.

**Accès en lecture** au fichier YAML (python-run-function uniquement).

Chargez la définition de l'opérateur.

EXÉCUTER sur la fonction Unity Catalog (opérateurs basés uniquement sur les fonctions Unity Catalog).

Exécutez l'opérateur.

USE SCHEMA sur le schéma (opérateurs basés uniquement sur les fonctions Unity Catalog).

Accédez au schéma où la fonction est créée.

Autres autorisations

Selon votre opérateur, les utilisateurs peuvent nécessiter d'autres autorisations. Par exemple, USE CONNECTION sur une connexion Unity Catalog pour les appels d'API HTTP.

Dépannage​

Problème

Solutions

L'opérateur n'apparaît pas dans Lakeflow Designer.

Vérifiez que .custom_operators.yaml existe et répertorie votre fonction ou votre chemin de fichier. Pour les opérateurs python-run-function, vérifiez le chemin d’accès du fichier et que le fichier YAML est accessible.

La validation du schéma échoue.

Vérifiez votre YAML par rapport au schéma officiel à https://your-workspace.cloud.databricks.com/static/schemas/user-defined-operator-v0.1.0.json.

Autorisation refusée.

Pour les opérateurs basés sur les fonctions Unity Catalog, vérifiez que les utilisateurs disposent de EXECUTE sur la fonction et USE SCHEMA sur le schéma. Pour les opérateurs python-run-function, vérifiez que les utilisateurs ont un accès en lecture au fichier YAML.

python-run-function L'opérateur échoue au moment de l'exécution.

Vérifiez que la signature de la fonction run() correspond à def run(config, inputs, spark). Vérifiez que les noms de port dans le code correspondent au YAML et que les clés du dictionnaire de retour correspondent aux valeurs du port de sortie name.

UDTF renvoie des types incorrects.

Les types de retour UDTF doivent être explicites ; vous ne pouvez pas référencer les types de colonne d'entrée.

Problème

Solutions

L'opérateur n'apparaît pas dans Lakeflow Designer.

Vérifiez que .custom_operators.yaml existe et répertorie votre fonction ou votre chemin de fichier. Pour les opérateurs python-run-function, vérifiez le chemin d’accès du fichier et que le fichier YAML est accessible.

La validation du schéma échoue.

Vérifiez votre YAML par rapport au schéma officiel à https://your-workspace.cloud.databricks.com/static/schemas/user-defined-operator-v0.1.0.json.

Autorisation refusée.

Pour les opérateurs basés sur les fonctions Unity Catalog, vérifiez que les utilisateurs disposent de EXECUTE sur la fonction et USE SCHEMA sur le schéma. Pour les opérateurs python-run-function, vérifiez que les utilisateurs ont un accès en lecture au fichier YAML.

python-run-function L'opérateur échoue au moment de l'exécution.

Vérifiez que la signature de la fonction run() correspond à def run(config, inputs, spark). Vérifiez que les noms de port dans le code correspondent au YAML et que les clés du dictionnaire de retour correspondent aux valeurs du port de sortie name.

UDTF renvoie des types incorrects.

Les types de retour UDTF doivent être explicites ; vous ne pouvez pas référencer les types de colonne d'entrée.

Ressources supplémentaires​

Explorez les tutoriels suivants :

Exemple

Type

Description

Expéditeur d'e-mail Gmail

python-run-function

Envoyer les données d'un DataFrame en tant que pièce jointe CSV par e-mail via Gmail.

Calculateur d'intérêts composés

uc-udf

Calculez les futures valeurs d'investissement à l'aide de la formule des intérêts composés.

Clustering K-means

uc-udtf

Segmenter les données en clusters à l'aide de scikit-learn.

Envoyer un message Slack

uc-udf

Envoyez des notifications aux Canaux de distribution Slack via l’API Slack.

Tous les widgets d'interface utilisateur

uc-udf

Opérateur de référence présentant tous les widgets d'interface utilisateur disponibles.

Exemple

Type

Description

Expéditeur d'e-mail Gmail

python-run-function

Envoyer les données d'un DataFrame en tant que pièce jointe CSV par e-mail via Gmail.

Calculateur d'intérêts composés

uc-udf

Calculez les futures valeurs d'investissement à l'aide de la formule des intérêts composés.

Clustering K-means

uc-udtf

Segmenter les données en clusters à l'aide de scikit-learn.

Envoyer un message Slack

uc-udf

Envoyez des notifications aux Canaux de distribution Slack via l’API Slack.

Tous les widgets d'interface utilisateur

uc-udf

Opérateur de référence présentant tous les widgets d'interface utilisateur disponibles.

Pour écrire la logique de l'opérateur, voir Écrire la logique pour les opérateurs personnalisés Lakeflow Designer. Pour obtenir une référence complète sur le schéma YAML, voir Référence YAML de l'opérateur personnalisé.