Getting Started with GoodData Cloud

Connect Your Data

After creating your first workspace, you need to connect data to GoodData Cloud. In this course, we will use demo data that comes with the GoodData Cloud trial.

GoodData Cloud supports real-time data sources.

data sources

For demo purposes, we will be using a demo Snowflake database. The demo database uses the following physical schema of tables and their relationships:

Snowflake demo database

Connecting the data source

Snowflake requires key pair authentication for this demo database. In the connection form, select Key-pair and use the private key below.

Summary

To connect your data source:

  1. Navigate to your Workspace and select the Data tab in the top navigation bar.

  2. Click create model, as you will need to create a model for the data you are connecting.

  3. Click on the + icon in the left navigation bar, next to the Data Sources.

  4. Select Snowflake.

  5. Under Authentication, select Key-pair, then fill in the Snowflake demo database credentials.

    Account name: gooddata
    Username: gooddata_demo
    Private key: paste the key below, including the BEGIN and END lines. Leave Passphrase empty.
    Database name: GOODDATA_DEMO_DATABASE
    Warehouse: GOODDATA_DEMO_WAREHOUSE
    Schema name: GOODDATA_DEMO_SCHEMA

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDsNYAzu98GmDDI
aMitsBR6qPDcIONnaA1sPMwirypLLomklqgS070WDRIKZMQ8Njja4ZQWnJ+YTj6m
NOSL2unMVG2J0DWevCj0/bu4sxja0gm/Xcqux1XQRpYZZOBRUxgmO3L6WnORa07c
xaCzD8wqLVkx5+3CmXFFN00zW9U+MHdkngdkVf0ad1HyDN1K6h1rpEa4eykPrvky
NAva9iOLX0xjjOSwmDPJHx67qEYlI53qaBVJTp0yS3MI9BY4PE8XlYFOyajwneh/
HTtgBQXQZugb4mEfSTjcJBDcksD3uDhTqsKjngbCdPivRzk+ZaaQnMCW71j3aypA
nXYftjjFAgMBAAECggEAHi4JxtJiwQ9x8DE/Lr34J+HtAFstYvlu+ZzdAjN6RmfY
S1C6gclO+AHMg8pzLjRJWGIJD0iMtaONqqPIbbwXMjW5Vynkp/bnjsHamdM8Qj0i
5LIBowoyAy35oJ38cTeaNsxSuP0UlghtZ5TSnv5OOjdYFaHKBZqgV9UkhoLdwJem
0LlT0yBjk3Q0Kx1ux2qg2YkY3e874usa6M91Hl82kRowe3YzrVPg7S0T0FBahBgU
wR9HbZN365rluSBuEpvixIwzxv7h63AmwBrmldzbYKYDdmqFqP3LhLww1dhCT97N
7s5umJ+RZzu6igF6sshNB+vnMnQojfb3LKUGhy3jswKBgQD+01DB1Dgye6VSkw7C
ovzgPjPVitV+YeZRR4Kb11RrdM7C8GiUavybBQQ1F6SlNGRFNIDvATG1UXV0ZwYn
3CfjR2SGfGxHVsMRl93TW9ZHB0m/92DBui1Wv+q1/yuiuWt4ADCeY3hgSGdpUudN
j6JCjaWkAa7P817JqgU2Nep1lwKBgQDtTDf2C4BCgCHRp7yye/s7rKdSrl7CSqMS
dwp3neA2ISZygBlZWeAxqHuNlvwwfvAVfYqPCxPq4y4n90yAX5jN8CvVaPnax/i0
AxhAkc/mzhXUzcHG6ODcyikiTewqXIhX5t83vSs6n2DNDJwwN/FU7raCDtgJpXyP
MWC9YIroAwKBgBgyWpW9IATzJrSbkCg9L8PfRC6/uxwAEc2f+6/ul26IreVmzJdj
PU8+/7JG53RkcCz+GkwXke/Ep2GBMt1wEz2KluoKQIHZpDY0dHTQYJ1n/MHErKRY
mFuHZ7MWYr9V2fWQFw3DJjgGSAOBQsNjoyWsq5DSNBY85sBBa7NFFVlLAoGAdxA+
J+sfYL6PuXVTPa7toMSBc//ftdbjOZmXG+uQGzjI5LyXe3iX//KMg7+VK/QVHINQ
KXOie8GfYBg6P1M4BWSTadHxQ7AAfrnqykMfMKyI0aynpNkmMkIRH5A/hgXFt200
5O+6qABd/qRsHdmD8lyQIHO4PCbXd7WL15mAOOcCgYEA9T1KV2BcD3eidmMq4WiB
xJwBZhPDXqOa3xlJvYjaSz7tehVNdUXUm6TcCdddxtJVDBfznVaayURGY18h9v7m
u1nxmUV3ESeLnxBBfzS/gVxS4SKtXz0iLDNvpA7V/0dVsfMtqrEwbPvikbceiCOP
sE2s9T8rwSQKYFzhj5zNXQU=
-----END PRIVATE KEY-----
  1. When the Scan Data Source dialog pops up, leave the settings as they are and click scan.

Good job! You now know how to connect a data source

API
Python SDK

Alternatively, you can perform the same action by making the following API call:

curl --request POST \
  --header "Authorization: Bearer $API_TOKEN" \
  --header 'Content-Type: application/vnd.gooddata.api+json' \
  --data '{
      "data": {
        "attributes": {
          "name": "GDC Good Demo Data source",
          "url": 
"jdbc:snowflake://gooddata.snowflakecomputing.com?warehouse=GOODDATA_DEMO_WAREHOUSE&db=GOODDATA_DEMO_DATABASE",
          "schema": "GOODDATA_DEMO_SCHEMA",
          "type": "SNOWFLAKE",
          "username": "gooddata_demo",
          "privateKey": "<private key from the steps above>"
        },
        "id": "gdc_ds_gooddemo",
        "type": "dataSource"
      }
}' $ENDPOINT/api/v1/entities/dataSources

Alternatively, you can perform the same action by running the following code:

from gooddata_sdk import (GoodDataSdk, CatalogDataSource)

# GoodData.CN host in the form of uri eg. "http://localhost:3000"
host = "http://localhost:3000"
# GoodData.CN user token
token = "some_user_token"
sdk = GoodDataSdk.create(host, token)

# Create (or update) data source using general interface - can be used for any type of data source
# If data source already exists, it is updated
sdk.catalog_data_source.create_or_update_data_source(
    CatalogDataSource(
        id="test",
        name="Test2",
        data_source_type="POSTGRESQL",
        url="jdbc:postgresql://localhost:5432/demo",
        schema="demo",
        credentials=BasicCredentials(
            username="demouser",
            password="demopass",
        ),
        enable_caching=False,
        url_params=[("param", "value")]
    )
)