Skip to main content

A package to simplify connecting to the TM1 REST API from Apache Airflow

Project description

airflow-provider-tm1

CI Build

A package by Knowledgeseed and Cubewise that provides a hook to simplify the connection to the IBM Cognos TM1 / Planning Analytics REST API.

https://github.com/airflow-provider-tm1/airflow-provider-tm1

This repository builds on https://github.com/MariusWirtz/airflow-tm1 and https://github.com/scrambldchannel/airflow-tm1 which offer only Airflow 1.x compatibility, and upgrades the provider to ensure Airflow 2.x compatibility. Some parts and have been reused from https://github.com/scrambldchannel/airflow-provider-tm1 as well.

Requirements

  • Python 3.7+
  • Airflow 2.3+
  • TM1py 2.0+

Development

python -m venv .env
source .env/bin/activate
python -m pip install -r requirements.txt
python -m build

To execute the automated test suite locally, you can leverage (https://github.com/nektos/act):

act -j build  -W .github/workflows/build-test.yml -s DUSERNAME=knowledgeseed -s DPASSWORD=<obtain access token to private DockerHub registry from KS>

Installation

Install with pip pip install airflow-provider-tm1

Usage

Create a connection in Airflow:

  • TM1 11 on-premise: BaseURL (or Address+Port+SSL), User, Password
  • TM1 11 on IBM cloud: BaseURL, Namespace, User. Password, Extras/async_requests_mode, Extras/verify
  • TM1 12 PAaaS: BaseURL, User, Password, Extras/async_requests_mode, Extras/verify
  • TM1 12 on-premise & Cloud Pak For Data: BaseURL (or Address + Extras/instance + Extras/database), Extras/application_client_id, Extras/application_client_secret, User
  • TM1 12 on-premise with access token: BaseURL (or Address + Extras/instance + Extras/database), User, Extras/access_token, Extras/async_requests_mode, Extras/verify

Any other parameter accepted by the TM1py RestService constructor can also be added as key/value pairs in the Extras field.

For the exact parameterization of TM1Service and further examples, please check https://github.com/cubewise-code/tm1py

airflow_tm1_conn

In your DAG file:

from airflow_provider_tm1.operators.tm1_run_ti import TM1RunTIOperator

...

t1 = TM1RunTIOperator (
        task_id='t1',
        tm1_conn_id='tm1_conn',
        process_name='airflow_test_params_success_dag',
        tm1_params={'testParam1': 'testParamValue'},
        timeout=20,
        cancel_at_timeout=True
    )

This will attempt to connect to the TM1 server using the details provided and initialise an instance of the TM1Service class than be accessed at airflow_provider_tm1.hooks.tm1.TM1Hook

See TM1py for more details.

It's important to mention that TM1Py will execute TI process in asynchronous mode. The operator submits the request, receives the async_id from TM1 and starts polling the result using async_id until the response is retrieved or times out. Timeout is defined in seconds, default value is 300 seconds. It's also important that Airflow-side timeout does not involve automatically the cancellation of the TI process. If cancel_at_timeout is set True, Airflow will make an attempt to cancel the long-running TI process.

For further examples, please see tests_integration/dags folder.

Manual integration testing

Use tests_integration/docker-compose.yaml as a baseline, which spins up an Airflow including the TM1 provider and a base TM1 database to test against. Please note that tm1-docker image is properietary IBM product wrapped in Docker by Knowledgeseed and therefore it is only available internally for Knowledgeseed developers.

To obtain a licensed IBM TM1 database for testing or production purpose, please see https://www.ibm.com/topics/tm1 for further details.

License

See LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airflow_provider_tm1-0.4.0.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airflow_provider_tm1-0.4.0-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file airflow_provider_tm1-0.4.0.tar.gz.

File metadata

  • Download URL: airflow_provider_tm1-0.4.0.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for airflow_provider_tm1-0.4.0.tar.gz
Algorithm Hash digest
SHA256 0011b4fde6d78b9d5666c19cc145ae054402867187941dcdb0e96e66e0fdca3d
MD5 946c26e665aeec9de16e28eccd35f50e
BLAKE2b-256 fc50c9227274b01f29965660615d41e55ab962bf096181d2e7eef3a1615b7d71

See more details on using hashes here.

File details

Details for the file airflow_provider_tm1-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for airflow_provider_tm1-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65c154f8aedc9957dd1f8f78fa13415c6476d7ccd63edf8e4956f4d022dad622
MD5 a87e44fa76224f42f0f50802661042a1
BLAKE2b-256 d5c0b483d82a8245002206d1e8f170caf4f54404b7211420fda48bf41b338a34

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page