Dans ce Tutoriel, vous allez apprendre à développer un artefact custom pour réaliser un traitement simple.

Un artefact custom peut être réalisé dans n’importe quel langage et mettre en oeuvre un traitement ou procéder à un chargement spécifique de données. Dans cet exemple, nous allons réaliser le calcul de la suite de fibonacci en python.

placeHolder200x200.png

  1. Création d’un dossier “fibonacci” dans le repo Git de travail
  2. A l’intérieur de ce dossier créer les 2 élements suivants
    1. Dockerfile
    2. Code python
  3. Commit et Push dans Git
  4. Création d’un Artefact avec ce code

Code

Dockerfile

On download un wrapper pour envoyer les logs vers l’API de Logs de DataTask, et on fait très simplement appel au script python.

FROM python:3.9.6-slim-buster

RUN apt-get update && \\
    apt-get install -y curl

# Copy scripts
COPY fibo.py /fibonacci/

# Download logger binary file
RUN curl <https://storage.googleapis.com/datatask-public-packages/log-streamer> --output /fibonacci/log-streamer

RUN chmod +x /fibonacci/log-streamer

CMD ["/fibonacci/log-streamer", "python", "/fibonacci/fibo.py"]

Code python “fibo.py

Dans ce script on récupère le terme à calculer dans uen variable d’environnement (NB_TERMS) qui sera passé lors de l’exécution au conteneur.

On voit des balises “RUNNING”, “SUCCEEDED” et “FAILED” qui transmettent à l’orchestrateur l’état de l’exécution.

import sys
import time
import os

def fibonacci(n):
    if n==1:
        return 0
    elif n==2:
        return 1
    else:
        return fibonacci(n-1)+fibonacci(n-2)

print("__RUNNING__")

try:
    nb_terms_env=os.getenv("NB_TERMS", default="10")
    nb_terms=int(nb_terms_env)

    for i in range(1,nb_terms+1):
        time.sleep(2)
        print("Terme {} de la suite de fibonacci : {}".format(i,fibonacci(i)))

    print("__SUCCEEDED__")
except Exception as e:
    print(e)
    print("__FAILED__")

#Sleep for 10 seconds to give the logger time to send the output of stdout and stderr
time.sleep(10)

Création de l’artefact

Dans la section Artefact cliquez sur “New”

il suffit de remplir les valeurs dans le formulaire suivant et de mettre la valeur souhaitée dans la variable d’environnement “NB_TERMS”

Untitled

Une fois l’Artefact créé, il suffit de démarrer l’execution de celui-ci avec le bouton “Launch”

Contenu

Modules

Connexions Flows Tasks, Artefacts & Bundles Transformations SQL Navigateur de stockage Explorateur de données Exposition de services

Getting started

Charger de la donnée Modéliser avec DBT Créer un artefact custom

Release

Release notes

<aside> 📌 © DataTask sas 2022

</aside>