apache-airflow-providers-teradata 3.2.3rc1__tar.gz → 3.3.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/PKG-INFO +8 -8
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/README.rst +4 -4
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/changelog.rst +20 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/index.rst +5 -5
- apache_airflow_providers_teradata-3.3.0rc1/docs/operators/tpt.rst +180 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/provider.yaml +15 -1
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/pyproject.toml +4 -4
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/__init__.py +3 -3
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/get_provider_info.py +9 -0
- apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/hooks/tpt.py +268 -0
- apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/operators/tpt.py +207 -0
- apache_airflow_providers_teradata-3.3.0rc1/src/airflow/providers/teradata/utils/tpt_util.py +520 -0
- apache_airflow_providers_teradata-3.3.0rc1/tests/system/teradata/example_remote_tpt.py +161 -0
- apache_airflow_providers_teradata-3.3.0rc1/tests/system/teradata/example_tpt.py +161 -0
- apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/hooks/test_tpt.py +229 -0
- apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/operators/test_tpt.py +332 -0
- apache_airflow_providers_teradata-3.3.0rc1/tests/unit/teradata/utils/test_tpt_util.py +670 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/LICENSE +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/NOTICE +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/connections/teradata.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/integration-logos/Teradata.png +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/azure_blob_to_teradata.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/bteq.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/compute_cluster.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/s3_to_teradata.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/teradata.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/operators/teradata_to_teradata.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/hooks/ttu.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/operators/teradata_compute_cluster.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/azure_blob_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/s3_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/transfers/teradata_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/triggers/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/triggers/teradata_compute_cluster.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/bteq_util.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/constants.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/utils/encryption_utils.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/src/airflow/providers/teradata/version_compat.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/create_ssl_table.sql +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/create_table.sql +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_azure_blob_to_teradata_transfer.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_remote_bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_s3_to_teradata_transfer.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_ssl_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_call_sp.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_compute_cluster.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/example_teradata_to_teradata_transfer.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script.bteq +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script.sql +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/system/teradata/script_utf16.bteq +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/hooks/test_ttu.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_bteq.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/operators/test_teradata_compute_cluster.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_azure_blob_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_s3_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/transfers/test_teradata_to_teradata.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/triggers/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/triggers/test_teradata_compute_cluster.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/__init__.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_bteq_util.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_constants.py +0 -0
- {apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/tests/unit/teradata/utils/test_encryption_utils.py +0 -0
{apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-teradata
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-teradata for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,teradata,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
License-File: NOTICE
|
|
25
|
-
Requires-Dist: apache-airflow>=2.
|
|
25
|
+
Requires-Dist: apache-airflow>=2.11.0rc1
|
|
26
26
|
Requires-Dist: apache-airflow-providers-common-compat>=1.8.0rc1
|
|
27
27
|
Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc1
|
|
28
28
|
Requires-Dist: teradatasqlalchemy>=17.20.0.0
|
|
@@ -31,8 +31,8 @@ Requires-Dist: apache-airflow-providers-amazon ; extra == "amazon"
|
|
|
31
31
|
Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft-azure"
|
|
32
32
|
Requires-Dist: apache-airflow-providers-ssh ; extra == "ssh"
|
|
33
33
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
34
|
-
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
35
|
-
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
34
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html
|
|
35
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0
|
|
36
36
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
37
37
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
38
38
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -66,7 +66,7 @@ Provides-Extra: ssh
|
|
|
66
66
|
|
|
67
67
|
Package ``apache-airflow-providers-teradata``
|
|
68
68
|
|
|
69
|
-
Release: ``3.
|
|
69
|
+
Release: ``3.3.0``
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
`Teradata <https://www.teradata.com/>`__
|
|
@@ -79,7 +79,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
|
|
|
79
79
|
are in ``airflow.providers.teradata`` python package.
|
|
80
80
|
|
|
81
81
|
You can find package information and changelog for the provider
|
|
82
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
82
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/>`_.
|
|
83
83
|
|
|
84
84
|
Installation
|
|
85
85
|
------------
|
|
@@ -96,7 +96,7 @@ Requirements
|
|
|
96
96
|
========================================== ==================
|
|
97
97
|
PIP package Version required
|
|
98
98
|
========================================== ==================
|
|
99
|
-
``apache-airflow`` ``>=2.
|
|
99
|
+
``apache-airflow`` ``>=2.11.0``
|
|
100
100
|
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
101
101
|
``apache-airflow-providers-common-sql`` ``>=1.20.0``
|
|
102
102
|
``teradatasqlalchemy`` ``>=17.20.0.0``
|
|
@@ -138,5 +138,5 @@ Extra Dependencies
|
|
|
138
138
|
=================== ============================================
|
|
139
139
|
|
|
140
140
|
The changelog for the provider package can be found in the
|
|
141
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
141
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html>`_.
|
|
142
142
|
|
{apache_airflow_providers_teradata-3.2.3rc1 → apache_airflow_providers_teradata-3.3.0rc1}/README.rst
RENAMED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-teradata``
|
|
25
25
|
|
|
26
|
-
Release: ``3.
|
|
26
|
+
Release: ``3.3.0``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
`Teradata <https://www.teradata.com/>`__
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``teradata`` provider. All classes for this provi
|
|
|
36
36
|
are in ``airflow.providers.teradata`` python package.
|
|
37
37
|
|
|
38
38
|
You can find package information and changelog for the provider
|
|
39
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -53,7 +53,7 @@ Requirements
|
|
|
53
53
|
========================================== ==================
|
|
54
54
|
PIP package Version required
|
|
55
55
|
========================================== ==================
|
|
56
|
-
``apache-airflow`` ``>=2.
|
|
56
|
+
``apache-airflow`` ``>=2.11.0``
|
|
57
57
|
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
58
58
|
``apache-airflow-providers-common-sql`` ``>=1.20.0``
|
|
59
59
|
``teradatasqlalchemy`` ``>=17.20.0.0``
|
|
@@ -95,4 +95,4 @@ Extra Dependencies
|
|
|
95
95
|
=================== ============================================
|
|
96
96
|
|
|
97
97
|
The changelog for the provider package can be found in the
|
|
98
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
98
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html>`_.
|
|
@@ -25,6 +25,26 @@
|
|
|
25
25
|
Changelog
|
|
26
26
|
---------
|
|
27
27
|
|
|
28
|
+
3.3.0
|
|
29
|
+
.....
|
|
30
|
+
|
|
31
|
+
.. note::
|
|
32
|
+
This release of provider is only available for Airflow 2.11+ as explained in the
|
|
33
|
+
Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
|
|
34
|
+
|
|
35
|
+
Features
|
|
36
|
+
~~~~~~~~
|
|
37
|
+
|
|
38
|
+
* ``Add DdlOperator to execute Data Definition Language (DDL) statements on Teradata databases using TTU tbuild utility (#56675)``
|
|
39
|
+
|
|
40
|
+
Misc
|
|
41
|
+
~~~~
|
|
42
|
+
|
|
43
|
+
* ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
|
|
44
|
+
|
|
45
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
46
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
47
|
+
|
|
28
48
|
3.2.3
|
|
29
49
|
.....
|
|
30
50
|
|
|
@@ -77,7 +77,7 @@ apache-airflow-providers-teradata package
|
|
|
77
77
|
`Teradata <https://www.teradata.com/>`__
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
Release: 3.
|
|
80
|
+
Release: 3.3.0
|
|
81
81
|
|
|
82
82
|
Provider package
|
|
83
83
|
----------------
|
|
@@ -95,12 +95,12 @@ For the minimum Airflow version supported, see ``Requirements`` below.
|
|
|
95
95
|
Requirements
|
|
96
96
|
------------
|
|
97
97
|
|
|
98
|
-
The minimum Apache Airflow version supported by this provider distribution is ``2.
|
|
98
|
+
The minimum Apache Airflow version supported by this provider distribution is ``2.11.0``.
|
|
99
99
|
|
|
100
100
|
========================================== ==================
|
|
101
101
|
PIP package Version required
|
|
102
102
|
========================================== ==================
|
|
103
|
-
``apache-airflow`` ``>=2.
|
|
103
|
+
``apache-airflow`` ``>=2.11.0``
|
|
104
104
|
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
105
105
|
``apache-airflow-providers-common-sql`` ``>=1.20.0``
|
|
106
106
|
``teradatasqlalchemy`` ``>=17.20.0.0``
|
|
@@ -136,5 +136,5 @@ Downloading official packages
|
|
|
136
136
|
You can download officially released packages and verify their checksums and signatures from the
|
|
137
137
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
138
138
|
|
|
139
|
-
* `The apache-airflow-providers-teradata 3.
|
|
140
|
-
* `The apache-airflow-providers-teradata 3.
|
|
139
|
+
* `The apache-airflow-providers-teradata 3.3.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0.tar.gz.sha512>`__)
|
|
140
|
+
* `The apache-airflow-providers-teradata 3.3.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_teradata-3.3.0-py3-none-any.whl.sha512>`__)
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
+
or more contributor license agreements. See the NOTICE file
|
|
3
|
+
distributed with this work for additional information
|
|
4
|
+
regarding copyright ownership. The ASF licenses this file
|
|
5
|
+
to you under the Apache License, Version 2.0 (the
|
|
6
|
+
"License"); you may not use this file except in compliance
|
|
7
|
+
with the License. You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
.. http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
.. Unless required by applicable law or agreed to in writing,
|
|
12
|
+
software distributed under the License is distributed on an
|
|
13
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
KIND, either express or implied. See the License for the
|
|
15
|
+
specific language governing permissions and limitations
|
|
16
|
+
under the License.
|
|
17
|
+
|
|
18
|
+
.. _howto/operator:DdlOperator:
|
|
19
|
+
|
|
20
|
+
DdlOperator
|
|
21
|
+
===========
|
|
22
|
+
|
|
23
|
+
The ``DdlOperator`` is an Airflow operator designed to execute Data Definition Language (DDL) statements on Teradata databases. It provides a robust way to create, alter, or drop database objects as part of your data pipelines.
|
|
24
|
+
|
|
25
|
+
.. note::
|
|
26
|
+
|
|
27
|
+
The ``DdlOperator`` requires the ``Teradata Parallel Transporter (TPT)`` package from Teradata Tools and Utilities (TTU)
|
|
28
|
+
to be installed on the machine where the ``tbuild`` command will run (either local or remote).
|
|
29
|
+
Ensure that the ``tbuild`` executable is available in the system's ``PATH``.
|
|
30
|
+
Refer to the official Teradata documentation for installation, configuration, and security best practices.
|
|
31
|
+
|
|
32
|
+
**Key Features:**
|
|
33
|
+
|
|
34
|
+
- Executes DDL SQL statements (CREATE, ALTER, DROP, etc.)
|
|
35
|
+
- Works with single statements or batches of multiple DDL operations
|
|
36
|
+
- Integrates with Airflow's connection management for secure database access
|
|
37
|
+
- Provides comprehensive logging of execution results
|
|
38
|
+
- Supports both local and remote execution via SSH
|
|
39
|
+
|
|
40
|
+
When you need to manage database schema changes, create temporary tables, or clean up data structures as part of your workflow, the ``DdlOperator`` offers a streamlined approach that integrates seamlessly with your Airflow DAGs.
|
|
41
|
+
|
|
42
|
+
Prerequisite
|
|
43
|
+
------------
|
|
44
|
+
|
|
45
|
+
Make sure your Teradata Airflow connection is defined with the required fields:
|
|
46
|
+
|
|
47
|
+
- ``host``
|
|
48
|
+
- ``login``
|
|
49
|
+
- ``password``
|
|
50
|
+
|
|
51
|
+
You can define a remote host with a separate SSH connection using the ``ssh_conn_id``.
|
|
52
|
+
|
|
53
|
+
Ensure that the ``Teradata Parallel Transporter (TPT)`` package is installed on the machine where TdLoadOperator will execute commands. This can be:
|
|
54
|
+
|
|
55
|
+
- The **local machine** where Airflow runs the task, for local execution.
|
|
56
|
+
- A **remote host** accessed via SSH, for remote execution.
|
|
57
|
+
|
|
58
|
+
If executing remotely, ensure that an SSH server (e.g., ``sshd``) is running and accessible on the remote machine, and that the ``tbuild`` executable is available in the system's ``PATH``.
|
|
59
|
+
|
|
60
|
+
.. note::
|
|
61
|
+
|
|
62
|
+
For improved security, it is **highly recommended** to use
|
|
63
|
+
**private key-based SSH authentication** (SSH key pairs) instead of username/password
|
|
64
|
+
for the SSH connection.
|
|
65
|
+
|
|
66
|
+
This avoids password exposure, enables seamless automated execution, and enhances security.
|
|
67
|
+
|
|
68
|
+
See the Airflow SSH Connection documentation for details on configuring SSH keys:
|
|
69
|
+
https://airflow.apache.org/docs/apache-airflow/stable/howto/connection/ssh.html
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
To execute DDL operations in a Teradata database, use the
|
|
73
|
+
:class:`~airflow.providers.teradata.operators.ddl.DdlOperator`.
|
|
74
|
+
|
|
75
|
+
Handling Escape Sequences for Embedded Quotes
|
|
76
|
+
----------------------------------------------
|
|
77
|
+
|
|
78
|
+
When working with DDL statements that contain embedded quotes, it's important to understand how escape sequences are handled differently between the DAG definition and the SQL execution:
|
|
79
|
+
|
|
80
|
+
**In DAG Definition (Python):**
|
|
81
|
+
- Use backslash escape sequences: ``\"`` for double quotes, ``\'`` for single quotes
|
|
82
|
+
- Python string literals require backslash escaping
|
|
83
|
+
|
|
84
|
+
**In SQL Execution (Teradata):**
|
|
85
|
+
- SQL standard requires doubling quotes when enclosed within the same quote type
|
|
86
|
+
- Single quotes in single-quoted strings: ``'Don''t'``
|
|
87
|
+
- Double quotes in double-quoted identifiers: ``"My""Table"``
|
|
88
|
+
|
|
89
|
+
**Example:**
|
|
90
|
+
|
|
91
|
+
.. code-block:: python
|
|
92
|
+
|
|
93
|
+
# In your DAG - use Python escape sequences
|
|
94
|
+
ddl_with_quotes = DdlOperator(
|
|
95
|
+
task_id="create_table_with_quotes",
|
|
96
|
+
ddl=[
|
|
97
|
+
"CREATE TABLE test_table (col1 VARCHAR(50) DEFAULT '\"quoted_value\"')",
|
|
98
|
+
"INSERT INTO test_table VALUES ('It''s a test')", # Note the doubled single quotes
|
|
99
|
+
],
|
|
100
|
+
teradata_conn_id="teradata_default",
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
**Key Points:**
|
|
104
|
+
- When defining DDL statements in Python strings, use standard Python escape sequences
|
|
105
|
+
- The operator automatically handles the conversion for TPT script generation
|
|
106
|
+
- For SQL string literals containing quotes, follow SQL standards (double the quotes)
|
|
107
|
+
- Test your DDL statements carefully when they contain complex quoting
|
|
108
|
+
|
|
109
|
+
Key Operation Examples with DdlOperator
|
|
110
|
+
---------------------------------------
|
|
111
|
+
|
|
112
|
+
Dropping tables in Teradata
|
|
113
|
+
---------------------------
|
|
114
|
+
You can use the DdlOperator to drop tables in Teradata. The following example demonstrates how to drop multiple tables:
|
|
115
|
+
|
|
116
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
117
|
+
:language: python
|
|
118
|
+
:dedent: 4
|
|
119
|
+
:start-after: [START ddl_operator_howto_guide_drop_table]
|
|
120
|
+
:end-before: [END ddl_operator_howto_guide_drop_table]
|
|
121
|
+
|
|
122
|
+
Creating tables in Teradata
|
|
123
|
+
---------------------------
|
|
124
|
+
You can use the DdlOperator to create tables in Teradata. The following example demonstrates how to create multiple tables:
|
|
125
|
+
|
|
126
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
127
|
+
:language: python
|
|
128
|
+
:dedent: 4
|
|
129
|
+
:start-after: [START ddl_operator_howto_guide_create_table]
|
|
130
|
+
:end-before: [END ddl_operator_howto_guide_create_table]
|
|
131
|
+
|
|
132
|
+
Creating an index on a Teradata table
|
|
133
|
+
-------------------------------------
|
|
134
|
+
You can use the DdlOperator to create an index on a Teradata table. The following example demonstrates how to create an index:
|
|
135
|
+
|
|
136
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
137
|
+
:language: python
|
|
138
|
+
:dedent: 4
|
|
139
|
+
:start-after: [START ddl_operator_howto_guide_create_index]
|
|
140
|
+
:end-before: [END ddl_operator_howto_guide_create_index]
|
|
141
|
+
|
|
142
|
+
Renaming a table in Teradata
|
|
143
|
+
----------------------------
|
|
144
|
+
You can use the DdlOperator to rename a table in Teradata. The following example demonstrates how to rename a table:
|
|
145
|
+
|
|
146
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
147
|
+
:language: python
|
|
148
|
+
:dedent: 4
|
|
149
|
+
:start-after: [START ddl_operator_howto_guide_rename_table]
|
|
150
|
+
:end-before: [END ddl_operator_howto_guide_rename_table]
|
|
151
|
+
|
|
152
|
+
Dropping an index in Teradata
|
|
153
|
+
-----------------------------
|
|
154
|
+
You can use the DdlOperator to drop an index in Teradata. The following example demonstrates how to drop an index:
|
|
155
|
+
|
|
156
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
157
|
+
:language: python
|
|
158
|
+
:dedent: 4
|
|
159
|
+
:start-after: [START ddl_operator_howto_guide_drop_index]
|
|
160
|
+
:end-before: [END ddl_operator_howto_guide_drop_index]
|
|
161
|
+
|
|
162
|
+
Altering a table in Teradata
|
|
163
|
+
----------------------------
|
|
164
|
+
You can use the DdlOperator to alter a table in Teradata. The following example demonstrates how to add a column:
|
|
165
|
+
|
|
166
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
167
|
+
:language: python
|
|
168
|
+
:dedent: 4
|
|
169
|
+
:start-after: [START ddl_operator_howto_guide_alter_table]
|
|
170
|
+
:end-before: [END ddl_operator_howto_guide_alter_table]
|
|
171
|
+
|
|
172
|
+
The complete Teradata Operator DAG
|
|
173
|
+
----------------------------------
|
|
174
|
+
|
|
175
|
+
When we put everything together, our DAG should look like this:
|
|
176
|
+
|
|
177
|
+
.. exampleinclude:: /../../teradata/tests/system/teradata/example_tpt.py
|
|
178
|
+
:language: python
|
|
179
|
+
:start-after: [START ddl_operator_howto_guide]
|
|
180
|
+
:end-before: [END ddl_operator_howto_guide]
|
|
@@ -22,12 +22,13 @@ description: |
|
|
|
22
22
|
`Teradata <https://www.teradata.com/>`__
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1764110710
|
|
26
26
|
# Note that those versions are maintained by release manager - do not update them manually
|
|
27
27
|
# with the exception of case where other provider in sources has >= new provider version.
|
|
28
28
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
|
29
29
|
# to be done in the same PR
|
|
30
30
|
versions:
|
|
31
|
+
- 3.3.0
|
|
31
32
|
- 3.2.3
|
|
32
33
|
- 3.2.2
|
|
33
34
|
- 3.2.1
|
|
@@ -68,6 +69,13 @@ integrations:
|
|
|
68
69
|
logo: /docs/integration-logos/Teradata.png
|
|
69
70
|
tags: [software]
|
|
70
71
|
|
|
72
|
+
- integration-name: Tpt
|
|
73
|
+
external-doc-url: https://www.teradata.com/
|
|
74
|
+
how-to-guide:
|
|
75
|
+
- /docs/apache-airflow-providers-teradata/operators/tpt.rst
|
|
76
|
+
logo: /docs/integration-logos/Teradata.png
|
|
77
|
+
tags: [software]
|
|
78
|
+
|
|
71
79
|
operators:
|
|
72
80
|
- integration-name: Teradata
|
|
73
81
|
python-modules:
|
|
@@ -76,6 +84,9 @@ operators:
|
|
|
76
84
|
- integration-name: Bteq
|
|
77
85
|
python-modules:
|
|
78
86
|
- airflow.providers.teradata.operators.bteq
|
|
87
|
+
- integration-name: Tpt
|
|
88
|
+
python-modules:
|
|
89
|
+
- airflow.providers.teradata.operators.tpt
|
|
79
90
|
|
|
80
91
|
hooks:
|
|
81
92
|
- integration-name: Teradata
|
|
@@ -87,6 +98,9 @@ hooks:
|
|
|
87
98
|
- integration-name: Bteq
|
|
88
99
|
python-modules:
|
|
89
100
|
- airflow.providers.teradata.hooks.bteq
|
|
101
|
+
- integration-name: Tpt
|
|
102
|
+
python-modules:
|
|
103
|
+
- airflow.providers.teradata.hooks.tpt
|
|
90
104
|
|
|
91
105
|
transfers:
|
|
92
106
|
- source-integration-name: Teradata
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-teradata"
|
|
28
|
-
version = "3.
|
|
28
|
+
version = "3.3.0rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-teradata for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
license = "Apache-2.0"
|
|
@@ -58,7 +58,7 @@ requires-python = ">=3.10"
|
|
|
58
58
|
# Make sure to run ``prek update-providers-dependencies --all-files``
|
|
59
59
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
60
60
|
dependencies = [
|
|
61
|
-
"apache-airflow>=2.
|
|
61
|
+
"apache-airflow>=2.11.0rc1",
|
|
62
62
|
"apache-airflow-providers-common-compat>=1.8.0rc1",
|
|
63
63
|
"apache-airflow-providers-common-sql>=1.20.0rc1",
|
|
64
64
|
"teradatasqlalchemy>=17.20.0.0",
|
|
@@ -117,8 +117,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
117
117
|
apache-airflow-providers-standard = {workspace = true}
|
|
118
118
|
|
|
119
119
|
[project.urls]
|
|
120
|
-
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
121
|
-
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.
|
|
120
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0"
|
|
121
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-teradata/3.3.0/changelog.html"
|
|
122
122
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
123
123
|
"Source Code" = "https://github.com/apache/airflow"
|
|
124
124
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "3.
|
|
32
|
+
__version__ = "3.3.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
|
-
"2.
|
|
35
|
+
"2.11.0"
|
|
36
36
|
):
|
|
37
37
|
raise RuntimeError(
|
|
38
|
-
f"The package `apache-airflow-providers-teradata:{__version__}` needs Apache Airflow 2.
|
|
38
|
+
f"The package `apache-airflow-providers-teradata:{__version__}` needs Apache Airflow 2.11.0+"
|
|
39
39
|
)
|
|
@@ -50,6 +50,13 @@ def get_provider_info():
|
|
|
50
50
|
"logo": "/docs/integration-logos/Teradata.png",
|
|
51
51
|
"tags": ["software"],
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
"integration-name": "Tpt",
|
|
55
|
+
"external-doc-url": "https://www.teradata.com/",
|
|
56
|
+
"how-to-guide": ["/docs/apache-airflow-providers-teradata/operators/tpt.rst"],
|
|
57
|
+
"logo": "/docs/integration-logos/Teradata.png",
|
|
58
|
+
"tags": ["software"],
|
|
59
|
+
},
|
|
53
60
|
],
|
|
54
61
|
"operators": [
|
|
55
62
|
{
|
|
@@ -60,11 +67,13 @@ def get_provider_info():
|
|
|
60
67
|
],
|
|
61
68
|
},
|
|
62
69
|
{"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.operators.bteq"]},
|
|
70
|
+
{"integration-name": "Tpt", "python-modules": ["airflow.providers.teradata.operators.tpt"]},
|
|
63
71
|
],
|
|
64
72
|
"hooks": [
|
|
65
73
|
{"integration-name": "Teradata", "python-modules": ["airflow.providers.teradata.hooks.teradata"]},
|
|
66
74
|
{"integration-name": "Ttu", "python-modules": ["airflow.providers.teradata.hooks.ttu"]},
|
|
67
75
|
{"integration-name": "Bteq", "python-modules": ["airflow.providers.teradata.hooks.bteq"]},
|
|
76
|
+
{"integration-name": "Tpt", "python-modules": ["airflow.providers.teradata.hooks.tpt"]},
|
|
68
77
|
],
|
|
69
78
|
"transfers": [
|
|
70
79
|
{
|