..
  This file is autogenerated by `docs/scripts/generate_mappings.py`. Do not edit by hand.


SnowflakePrivateKeyPem
======================



    Maps Airflow Snowflake connections to dbt profiles if they use a user/private key.

    https://docs.getdbt.com/docs/core/connect-data-platform/snowflake-setup#key-pair-authentication

    https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/connections/snowflake.html

    

This profile mapping translates Airflow connections with the type ``snowflake``
into dbt profiles. To use this profile, import it from ``cosmos.profiles``:

.. code-block:: python

    from cosmos.profiles import SnowflakePrivateKeyPemProfileMapping

    profile = SnowflakePrivateKeyPemProfileMapping(
        conn_id = 'my_snowflake_connection',
        profile_args = { ... },
    )

While the profile mapping pulls fields from Airflow connections, you may need to supplement it
with additional ``profile_args``. The below table shows which fields are required, along with those
not required but pulled from the Airflow connection if present. You can also add additional fields
to the ``profile_args`` dict.

.. list-table::
   :header-rows: 1

   * - dbt Field Name
     - Required
     - Airflow Field Name

   
   * - ``account``
     - True
    
     - ``extra.account``
    
    
   * - ``user``
     - True
    
     - ``login``
    
    
   * - ``database``
     - True
    
     - ``extra.database``
    
    
   * - ``warehouse``
     - True
    
     - ``extra.warehouse``
    
    
   * - ``schema``
     - True
    
     - ``schema``
    
    
   * - ``role``
     - False
    
     - ``extra.role``
    
    
   * - ``private_key``
     - True
    
     - ``extra.private_key_content``
    
    


Some notes about the table above:

- This table doesn't necessarily show the full list of fields you *can* pass to the dbt profile. To
  see the full list of fields, see the link to the dbt docs at the top of this page.
- If the Airflow field name starts with an ``extra.``, this means that the field is nested under
  the ``extra`` field in the Airflow connection. For example, if the Airflow field name is
  ``extra.token``, this means that the field is nested under ``extra`` in the Airflow connection,
  and the field name is ``token``.
- If there are multiple Airflow field names, the profile mapping looks at those fields in order.
  For example, if the Airflow field name is ``['password', 'extra.token']``, the profile mapping
  will first look for a field named ``password``. If that field is not present, it will look for
  ``extra.token``.