CREATE CONNECTION

適用対象:check marked yes Databricks SQL Databricks Runtime 13.3 LTS 以上 「はい」のチェック マーク Unity Catalog のみ

このコマンドによって、リモート システムの場所と認証の詳細を提供するシステム固有のオプションを使用して、特定の種類のリモート データ システムを表す外部接続 (またはサーバー) が作成されます。

外部接続により、フェデレーション クエリが有効になります。

Important

パスワードやトークンなどの資格情報をセキュリティで保護するには、OPTIONS句にリテラル値を直接入力するのではなく、secret関数を使用して資格情報を指定します。 これにより、ステートメントに資格情報の値を含めるのではなく、 Databricks シークレット サービス に格納されているシークレットを参照できます。 を参照してください。

構文

CREATE CONNECTION [IF NOT EXISTS] connection_name
  TYPE connection_type
  OPTIONS ( option value [, ...] )
  [ COMMENT comment ]

標準コンプライアンスの場合は、SERVER の代わりに CONNECTION を使用することもできます。

パラメーター

  • connection_name

    Unity Catalog メタストア レベルでの接続の一意識別子。

  • connection_type

    接続の種類を識別し、次のうちの 1 つである必要があります。

    • DATABRICKS
    • HTTP 適用対象: Databricks SQL チェックが Databricks Runtime 16.2 以降
    • MYSQL
    • POSTGRESQL
    • REDSHIFT
    • SNOWFLAKE
    • SQLDW (Synapse)
    • SQLSERVER
  • OPTIONS

    接続の確立に必要な connection_type 固有のパラメーターを設定します。

    • オプション

      プロパティ キー。 キーは、ドットで区切られた 1 つまたは複数の識別子、あるいは STRING リテラルで構成できます。

      プロパティ キーは一意である必要があり、大文字と小文字が区別されます。

    • 価値

      プロパティの値。 値は、BOOLEANSTRINGINTEGER、またはDECIMAL定数式でなければなりません。

      パスワードやトークンなど、資格情報を保持するオプションの場合は、値を直接入力する代わりに、 secret 関数を使用します。 たとえば、リテラル パスワードを入力するのではなく、valuepasswordsecret('secrets.r.us', 'postgresPassword')として指定します。

HTTP オプション

適用対象: Databricks SQL チェックが Databricks Runtime 16.2 以降

HTTP 接続の種類では、次のオプション キーと値がサポートされています。

  • host

    STRING リテラル。 外部サービスの host_name を指定します。 ホスト パスが正規化された URL でない場合は、例外がスローされます。

  • bearer_token

    外部サービス呼び出しを行うときに使用する認証トークン。 STRING リテラルとしてではなく、SECRET 関数を使用してトークンを指定します。 たとえば、値はリテラル トークンを入力するのではなく、 secret('secrets.r.us', 'httpPassword') で構成される場合があります。

  • port ポートを指定する省略可能な INTEGER リテラル。 既定値は 443 です。

  • base_path

    STRING リテラル (省略可能)。 既定値は /です。 パスに空の文字列が含まれている場合、またはスペースまたは特殊文字を含む正しくないパスが含まれている場合は、例外がスローされます。

Examples

パスワードまたはトークンを直接入力するのではなく、次の例に示すように、 secret 関数を使用して資格情報を指定します。

-- Create a postgresql connection.
-- Provide the user and password using the secret function rather than
-- entering them directly.
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host '<hostname>',
       port '5432',
       user secret('secrets.r.us', 'postgresUser'),
       password secret('secrets.r.us', 'postgresPassword'));

-- Set up a connection to Slack.
-- Provide the bearer token using the secret function rather than a literal value.
> CREATE CONNECTION slack_conn
  TYPE HTTP
  OPTIONS (
    host 'https://slack.com',
    port '443',
    base_path '/api/',
    bearer_token secret('secrets.r.us', 'slackBearerToken')
  );

-- Request to the external service
> SELECT http_request(
    conn => 'slack_conn',
    method => 'POST',
    path => '/chat.postMessage',
    json => to_json(named_struct(
      'channel', channel,
      'text', text
    ))
    headers => map(
       'Accept', "application/vnd.github+json",
    )
  );