Skip to content

Commit

Permalink
Add sample dag and doc for RedshiftToS3Operator (apache#22060)
Browse files Browse the repository at this point in the history
  • Loading branch information
vincbeck authored Mar 7, 2022
1 parent e7fed6b commit c1faaf3
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

from datetime import datetime
from os import getenv

from airflow import DAG
from airflow.providers.amazon.aws.transfers.redshift_to_s3 import RedshiftToS3Operator

S3_BUCKET_NAME = getenv("S3_BUCKET_NAME", "s3_bucket_name")
S3_KEY = getenv("S3_KEY", "s3_key")
REDSHIFT_TABLE = getenv("REDSHIFT_TABLE", "redshift_table")

with DAG(
dag_id="example_redshift_to_s3",
start_date=datetime(2021, 1, 1),
schedule_interval=None,
catchup=False,
tags=['example'],
) as dag:
# [START howto_transfer_redshift_to_s3]
task_transfer_redshift_to_s3 = RedshiftToS3Operator(
task_id='transfer_redshift_to_s3',
s3_bucket=S3_BUCKET_NAME,
s3_key=S3_KEY,
schema='PUBLIC',
table=REDSHIFT_TABLE,
)
# [END howto_transfer_redshift_to_s3]
4 changes: 4 additions & 0 deletions airflow/providers/amazon/aws/transfers/redshift_to_s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class RedshiftToS3Operator(BaseOperator):
"""
Executes an UNLOAD command to s3 as a CSV with headers
.. seealso::
For more information on how to use this operator, take a look at the guide:
:ref:`howto/operator:RedshiftToS3Operator`
:param s3_bucket: reference to a specific S3 bucket
:param s3_key: reference to a specific S3 key. If ``table_as_file_name`` is set
to False, this param must include the desired file name
Expand Down
1 change: 1 addition & 0 deletions airflow/providers/amazon/provider.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,7 @@ transfers:
python-module: airflow.providers.amazon.aws.transfers.mysql_to_s3
- source-integration-name: Amazon Redshift
target-integration-name: Amazon Simple Storage Service (S3)
how-to-guide: /docs/apache-airflow-providers-amazon/operators/transfer/redshift_to_s3.rst
python-module: airflow.providers.amazon.aws.transfers.redshift_to_s3
- source-integration-name: Amazon Simple Storage Service (S3)
target-integration-name: Amazon Redshift
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
.. Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
.. http://www.apache.org/licenses/LICENSE-2.0
.. Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
.. _howto/operator:RedshiftToS3Operator:

Amazon Redshift to S3 Transfer Operator
=======================================

Use the RedshiftToS3Operator transfer to copy the data from an Amazon Redshift table into an Amazon Simple Storage
Service (S3) file.

Prerequisite Tasks
^^^^^^^^^^^^^^^^^^

.. include:: ../_partials/prerequisite_tasks.rst

Amazon Redshift To Amazon S3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This operator loads data from an Amazon Redshift table to an existing Amazon S3 bucket.

To get more information about this operator visit:
:class:`~airflow.providers.amazon.aws.transfers.redshift_to_s3.RedshiftToS3Operator`

Example usage:

.. exampleinclude:: /../../airflow/providers/amazon/aws/example_dags/example_redshift_to_s3.py
:language: python
:dedent: 4
:start-after: [START howto_transfer_redshift_to_s3]
:end-before: [END howto_transfer_redshift_to_s3]

You can find more information to the ``UNLOAD`` command used
`here <https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html>`__.

Reference
^^^^^^^^^

* `AWS UNLOAD from Amazon Redshift Documentation <https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html>`__
* `AWS boto3 Library Documentation for Amazon Redshift <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/redshift.html>`__
* `AWS boto3 Library Documentation for Amazon S3 <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html>`__
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,23 @@
.. _howto/operator:S3ToRedshiftOperator:

Amazon Redshift to S3 Transfer Operator
Amazon S3 to Redshift Transfer Operator
=======================================

Use the S3ToRedshiftOperator transfer to copy the data from a Amazon S3 file into an Amazon Redshift table.
Use the S3ToRedshiftOperator transfer to copy the data from an Amazon Simple Storage Service (S3) file into an
Amazon Redshift table.

Prerequisite Tasks
^^^^^^^^^^^^^^^^^^

.. include:: ../_partials/prerequisite_tasks.rst

S3 To Redshift
^^^^^^^^^^^^^^
Amazon S3 To Amazon Redshift
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This operator loads data from S3 to an existing Amazon Redshift table.
This operator loads data from Amazon S3 to an existing Amazon Redshift table.

To get more information about operator visit:
To get more information about this operator visit:
:class:`~airflow.providers.amazon.aws.transfers.s3_to_redshift.S3ToRedshiftOperator`

Example usage:
Expand All @@ -51,4 +52,5 @@ Reference
^^^^^^^^^

* `AWS COPY from Amazon S3 Documentation <https://docs.aws.amazon.com/us_en/redshift/latest/dg/copy-parameters-data-source-s3.html>`__
* `AWS boto3 Library Documentation for S3 <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html>`__
* `AWS boto3 Library Documentation for Amazon S3 <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html>`__
* `AWS boto3 Library Documentation for Amazon Redshift <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/redshift.html>`__

0 comments on commit c1faaf3

Please sign in to comment.