parthp2107 c2f1b6bb8a
Doc update (#1716)
* GitBook: [#70] Update to Roadmap

* GitBook: [#72] Modified Looker and Oracle Connector

* GitBook: [#71] Change Events

* GitBook: [#74] API Component

* GitBook: [#73] MlFlow Connector

* GitBook: [#75] PUT Diagram

* GitBook: [#76] Change Events

* GitBook: [#77] Snowflake Single Sign-on changes

Co-authored-by: OpenMetadata <github@harsha.io>
Co-authored-by: Ayush Shah <ayush.shah@deuexsolutions.com>
Co-authored-by: pmbrull <peremiquelbrull@gmail.com>
2021-12-13 12:49:33 +05:30

3.8 KiB

description
This guide will help install Snowflake connector and run manually

Snowflake

{% hint style="info" %} Prerequisites

OpenMetadata is built using Java, DropWizard, Jetty, and MySQL.

  1. Python 3.7 or above {% endhint %}

Install from PyPI

{% tabs %} {% tab title="Install Using PyPI" %}

pip install 'openmetadata-ingestion[snowflake]'

{% endtab %} {% endtabs %}

Run Manually

metadata ingest -c ./examples/workflows/snowflake.json

Configuration

{% code title="snowflake.json" %}

{
  "source": {
    "type": "snowflake",
    "config": {
      "host_port": "account.region.service.snowflakecomputing.com",
      "username": "username",
      "password": "strong_password",
      "database": "SNOWFLAKE_SAMPLE_DATA",
      "account": "account_name",
      "service_name": "snowflake",
      "data_profiler_enabled": "true",
      "data_profiler_offset": "0",
      "data_profiler_limit": "50000",
      "filter_pattern": {
        "excludes": [
          "tpcds_sf100tcl"
        ]
      }
    }
  },

{% endcode %}

  1. username - pass the Snowflake username.
  2. password - the password for the Snowflake username.
  3. service_name - Service Name for this Snowflake cluster. If you added the Snowflake cluster through OpenMetadata UI, make sure the service name matches the same.
  4. filter_pattern - It contains includes, excludes options to choose which pattern of datasets you want to ingest into OpenMetadata.
  5. database - Database name from where data is to be fetched.
  6. data_profiler_enabled - Enable data-profiling (Optional). It will provide you with the newly ingested data.
  7. data_profiler_offset - Specify offset.
  8. data_profiler_limit - Specify limit.

SSO Configuration

{% hint style="info" %} Snowflake Sqlalchemy supports Single Sign-On with and without the password parameter.

Please refer to this link for more information {% endhint %}

SSO - with username and password

{% code title="snowflake.json" %}

{
  "source": {
    "type": "snowflake",
    "config": {
      "host_port": "account.region.service.snowflakecomputing.com",
      "username": "OKTA_USER",
      "password": "OKTA_PASSWORD",
      "account": "account",
      "service_name": "snowflake",
      "options":{
        "authenticator": "https://something.okta.com/",
      }
    }
  },
  ...

{% endcode %}

SSO - without password

{% code title="snowflake.json" %}

{
  "source": {
    "type": "snowflake",
    "config": {
      "host_port": "account.region.service.snowflakecomputing.com",
      "username": "email",
      "account": "account",
      "service_name": "snowflake",
      "options":{
        "authenticator": "externalbrowser",
      }
    }
  },
  ...

{% endcode %}

Publish to OpenMetadata

Below is the configuration to publish Snowflake data into the OpenMetadata service.

Add metadata-rest sink along with metadata-server config

{% code title="snowflake.json" %}

{
  "source": {
    "type": "snowflake",
    "config": {
      "host_port": "account.region.service.snowflakecomputing.com",
      "username": "username",
      "password": "strong_password",
      "database": "SNOWFLAKE_SAMPLE_DATA",
      "account": "account_name",
      "service_name": "snowflake",
      "data_profiler_enabled": "true",
      "data_profiler_offset": "0",
      "data_profiler_limit": "50000",
      "filter_pattern": {
        "excludes": [
          "tpcds_sf100tcl"
        ]
      }
    }
  },
  "sink": {
    "type": "metadata-rest",
    "config": {}
  },
  "metadata_server": {
    "type": "metadata-server",
    "config": {
      "api_endpoint": "http://localhost:8585/api",
      "auth_provider_type": "no-auth"
    }
  }
}

{% endcode %}