airflow-ssis-provider

Een operator en sensor voor het starten en volgen van SQL Server Integration Services (SSIS) package-executions vanuit een Airflow DAG, via de eigen stored procedures van de SSISDB-catalog over een MsSqlHook-connectie (gebouwd op apache-airflow-providers-microsoft-mssql, aangepast van mike-hosseini/airflow-sql-server-plugin).

Connectie instellen

Zie SSIS-connectie voor een walkthrough met screenshots van het aanmaken van deze connectie in de Airflow UI.

Gebruikt een standaard Airflow mssql-connectie (MsSqlHook), gericht op de SQL Server-instantie die de SSIS-catalog host.

Operators en sensors

SsisPackageOperator

Bouwt en draait de reeks SSISDB.catalog.create_execution / set_execution_parameter_value / start_execution voor één package, en zet vervolgens de resulterende execution_id in XCom. Parameters: conn_id, database, folder, project, package, environment (optionele SSIS-environmentreferentie), logging_level (LoggingLevel-enum: none/basic/performance/verbose/runtime_lineage/custom, standaard basic), parameters (optionele lijst van QueryParameters(name, value, type), waarbij type ParameterType.PROJECT/PACKAGE/LOGGING is).

SsisPackageSensor

Pollt SSISDB.catalog.executions voor de execution-id die uit XCom is gehaald (xcom_task_id) totdat deze een terminale status bereikt (Success/Failure/Canceled/Completed/Pending/Stopping). Werpt PackageExecutionError op bij Failure/Canceled.

Gebruik

from SSIS_Operator.operators.ssis_package_operator import SsisPackageOperator
from SSIS_Operator.sensors.ssis_package_sensor import SsisPackageSensor
from SSIS_Operator.models.SqlQueryParameters import QueryParameters, ParameterType

run_package = SsisPackageOperator(
    task_id="run_ssis_package",
    conn_id="mssql_default",
    database="SSISDB",
    folder="MyFolder",
    project="MyProject",
    package="MyPackage.dtsx",
    parameters=[
        QueryParameters(name="SourcePath", value="/data/in", type=ParameterType.PACKAGE),
    ],
)

wait_for_package = SsisPackageSensor(
    task_id="wait_for_ssis_package",
    conn_id="mssql_default",
    database="SSISDB",
    xcom_task_id="run_ssis_package",
)

run_package >> wait_for_package