- Explicitly pass
bucket_nameinto all method calls toS3Hook.
- Add
snowflake_keypaircallable for generating Snowflake RSA keypairs and rotating Snowflake user public keys. - Add
SnowflakeKeypairRotationDagfor automating Snowflake keypair rotation.
- Add support for Airflow 2.11.
- Implement OpenSSL based key generation for Snowflake keypair authentication.
- Rotate Snowflake user public keys using the slots
RSA_PUBLIC_KEYandRSA_PUBLIC_KEY_2.
- Fix change in interface in
SlackWebhookHookinstantiation in Slack callables.
- Add
recursiveflag tosharefile_to_disk()callable (defaultTrue). When set toFalse, only top-level files are copied using an alternative API method.
- Add pagination to
SharefileHook._find_items()and downstream-dependent methods. - Use
SharefileHookhelper method insharefile_to_disk()callable to reduce API calls to map filepaths to internal API IDs.
- Fix bug where full-refresh DAG config is always set to true in
RunDbtDag. - Fix bug in
S3ToSnowflakeOperatorwhere optional arguments being undefined resulted in malformed SQL statements.
- Add optional
most_recent_fileflag toSharefileToDiskOperatorto extract the most recent version of a singleton file from a path.
- Log a warning message when
SharefileHook.folder_id_from_path()finds no files for a given path. - Change logic in callable
sql.s3_dir_to_postgres()to raise an AirflowException if any copy of S3 key fails, instead of only when all fail.
- Handle duplicate search results in sharefile.
- Add
dest_filenameargument tos3_to_sharefilecallable to optionally override filename - Add
LoadSharefileCustomUsersDagto top-level package import path
- Run DAG setup method during
LoadSharefileCustomUsersDaginitialization
AWSParamStoreToAirflowDAGallows more flexibility when passing Parameter Store paths. Use{tenant_code}when the tenant is in the middle of the path, instead of the end.- Add
s3_to_sharefileanddisk_to_sharefilecallables - Add methods to the
SharefileHook - Add ShareFile callable
check_for_new_files()to assert expectations in ShareFile directory - Add
S3ToSnowflakeOperatorto S3 operators - Add
LoadSharefileCustomUsersDagto automate Heimdall user creation from uploaded authenticated users files in ShareFile
- Code and error-handling improved in callable
sharefile_to_disk. Argumentsds_nodashandts_nodashare deprecated. - Refactor
SFTPToSnowflakeDAGandS3ToSnowflakeDAGto use newS3ToSnowflakeOperator - Update callable
ftp.download_allto accept either a remote directory or file.
- Boolean argument
is_manual_uploadinS3ToSnowflakeDagrearranges S3 source pathing to easier structure for partners
- Copy statement in
S3ToSnowflakeDaguses regex instead of string-splitting to infer pull-date and pull-timestamp
- Fix bug in
EACustomDAGwheredefault_argswere not passed to DAG super init.
- Migrate FTP, ShareFile, casing, and ZIP utilities from Rally into
ea_airflow_util - New
EACustomDAGfactory to streamline DAG instantiation moving forward
- Move all Python callables out from
/airflow/dags/dag_utilinto/airflow/callables- Note that all original imports are still valid and are secretly rerouted in
__init__.py.
- Note that all original imports are still valid and are secretly rerouted in
- Overload
callables.airflow.xcom_pull_templateto accept a task ID string or an AirflowOperator - All DAGs use
EACustomDAGto standardize initialization
- Add optional
trigger_dags_on_run_successargument toRunDbtDagto trigger a list of external DAGs upon completion ofdbt run.
- Add a dag generator for cleaning up the Airflow database
- Make header case handling optional in
snowflake_to_disk
- Fix
s3_dir_to_postgresutility function
- Add
s3_dir_to_postgresutility function
- Add
snowflake_to_diskutility function
- Add
LoopS3FileTransformOperatorandS3ToSnowflakeDagfor copying files from S3 to Snowflake - Add
SFTPToSnowflakeDagfor copying files from SFTP to Snowflake
- Refactor
AWSParamStoreToAirflowDAGto use (key, secret, url) standard for saving Airflow credentials - Add optional Airflow variable check at start of
RunDbtDagto only trigger DAG if variable is truthy, and to reset the variable after each run
- Turn off
airflow_dbtdeprecation-warnings that clog scheduler logs - Refactor
RunDbtDagto include a DBT task-group