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¶
SsisPackageOperatorBouwt en draait de reeks
SSISDB.catalog.create_execution/set_execution_parameter_value/start_executionvoor één package, en zet vervolgens de resulterendeexecution_idin XCom. Parameters:conn_id,database,folder,project,package,environment(optionele SSIS-environmentreferentie),logging_level(LoggingLevel-enum:none/basic/performance/verbose/runtime_lineage/custom, standaardbasic),parameters(optionele lijst vanQueryParameters(name, value, type), waarbijtypeParameterType.PROJECT/PACKAGE/LOGGINGis).SsisPackageSensorPollt
SSISDB.catalog.executionsvoor de execution-id die uit XCom is gehaald (xcom_task_id) totdat deze een terminale status bereikt (Success/Failure/Canceled/Completed/Pending/Stopping). WerptPackageExecutionErrorop bijFailure/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