:py:mod:`airflow.providers.presto.transfers.presto_to_slack`
============================================================

.. py:module:: airflow.providers.presto.transfers.presto_to_slack


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.presto.transfers.presto_to_slack.PrestoToSlackOperator




.. py:class:: PrestoToSlackOperator(*, sql, slack_message, presto_conn_id = 'presto_default', slack_conn_id = 'slack_default', results_df_name = 'results_df', parameters = None, slack_token = None, slack_channel = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Executes a single SQL statement in Presto and sends the results to Slack. The results of the query are
   rendered into the 'slack_message' parameter as a Pandas dataframe using a JINJA variable called '{{
   results_df }}'. The 'results_df' variable name can be changed by specifying a different
   'results_df_name' parameter. The Tabulate library is added to the JINJA environment as a filter to
   allow the dataframe to be rendered nicely. For example, set 'slack_message' to {{ results_df |
   tabulate(tablefmt="pretty", headers="keys") }} to send the results to Slack as an ascii rendered table.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:PrestoToSlackOperator`

   :param sql: The SQL statement to execute on Presto (templated)
   :param slack_message: The templated Slack message to send with the data returned from Presto.
       You can use the default JINJA variable {{ results_df }} to access the pandas dataframe containing the
       SQL results
   :param presto_conn_id: destination presto connection
   :param slack_conn_id: The connection id for Slack
   :param results_df_name: The name of the JINJA template's dataframe variable, default is 'results_df'
   :param parameters: The parameters to pass to the SQL query
   :param slack_token: The token to use to authenticate to Slack. If this is not provided, the
       'webhook_token' attribute needs to be specified in the 'Extra' JSON field against the slack_conn_id
   :param slack_channel: The channel to send message. Override default from Slack connection.

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['sql', 'slack_message', 'slack_channel']

      

   .. py:attribute:: template_ext
      :annotation: :Sequence[str] = ['.sql', '.jinja', '.j2']

      

   .. py:attribute:: template_fields_renderers
      

      

   .. py:attribute:: times_rendered
      :annotation: = 0

      

   .. py:method:: render_template_fields(self, context, jinja_env=None)

      Template all attributes listed in template_fields.

      This mutates the attributes in-place and is irreversible.

      :param context: Dict with values to apply on content
      :param jinja_env: Jinja environment


   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



