Parametrisierung und Zeitplanung

Mit papermill könnt ihr Notebooks parametrieren und automatisieren. Ihr könnt die Notebooks zeit- oder ereignisgesteuert ablaufen lassen.

Installieren

$ pipenv install papermill
Installing papermill…
Adding papermill to Pipfile's [packages]…
✔ Installation Succeeded

Verwenden

  1. Parametrisieren

    Der erste Schritt ist die Parametrisierung des Notebook. Dazu werden die Zellen in View ‣ Cell Toolbar ‣ Tags als Parameter markiert.

  2. Überprüfen

    Ihr könnt das Notebook inspizieren, z.B. mit

    $ pipenv run papermill --help-notebook docs/refactoring/parameterise/input.ipynb
    Usage: papermill [OPTIONS] NOTEBOOK_PATH [OUTPUT_PATH]
    
    Parameters inferred for notebook 'docs/refactoring/parameterise/input.ipynb':
      msg: Unknown type (default None)
    
  3. Ausführen

    Es gibt zwei Möglichkeiten, ein Notebook mit Parametern auszuführen:

    • … via Python API

      Die Funktion execute_notebook kann aufgerufen werden, um ein Notebook mit einem dict von Parametern auszuführen:

      execute_notebook(INPUT_NOTEBOOK, OUTPUT_NOTEBOOK, DICTIONARY_OF_PARAMETERS)
      

      z.B. für input.ipynb:

      import papermill as pm
      
      pm.execute_notebook(
          'PATH/TO/INPUT_NOTEBOOK.ipynb',
          'PATH/TO/OUTPUT_NOTEBOOK.ipynb',
          parameters=dict(salutation='Hello', name='pythonistas')
      )
      

      Das Ergebnis ist output.ipynb.

      Siehe auch

    • … via CLI

      $ pipenv run papermill input.ipynb output.ipynb -p salutation 'Hello' -p name 'pythonistas'
      

      Alternativ kann auch eine YAML-Datei mit den Parametern angegeben werden, z.B. params.yaml:

      salutation: "Hello"
      name: "Pythonistas"
      
      $ pipenv run papermill input.ipynb output.ipynb -f params.yaml
      

      Mit -b kann ein base64-kodierte YAML-String angegeben werden, die die Parameterwerte enthält:

      $ pipenv run papermill input.ipynb output.ipynb -b c2FsdXRhdGlvbjogIkhlbGxvIgpuYW1lOiAiUHl0aG9uaXN0YXMi
      

      Siehe auch

      Ihr könnt dem Dateinamen auch einen Zeitstempel hinzufügen:

      $ dt=$(date '+%Y-%m-%d_%H:%M:%S')
      $ pipenv run papermill input.ipynb output_$(date '+%Y-%m-%d_%H:%M:%S').ipynb -f params.yaml
      

      Dies erzeugt eine Ausgabedatei, deren Dateiname einen Zeitstempel enthält, z.B. output_2021-09-13_10:42:33.ipynb.

      Schließlich könnt ihr crontab -e verwenden, um die beiden Befehle automatisch zu bestimmten Zeiten auszuführen, z.B. am ersten Tag eines jeden Monats:

      dt=$(date '+%Y-%m-%d_%H:%M:%S')
      0 0 1 * * cd ~/jupyter-notebook && pipenv run papermill input.ipynb output_$(date '+%Y-%m-%d_%H:%M:%S').ipynb -f params.yaml
      
  4. Speichern

    Papermill kann Notebooks an einer Reihe von Orten speichern, einschließlich S3, Azure Data Blobs und Azure Data Lakes. Papermill erlaubt auch, neue Datenspeicher hinzuzufügen.