配置 PolyBase 以访问 Teradata 中的外部数据

适用于:SQL Server

本文介绍如何使用 SQL Server 实例上的 PolyBase 来查询 Teradata 中的外部数据。

先决条件

如果尚未安装 PolyBase,请参阅 PolyBase 安装。 这篇安装文章介绍了安装的先决条件。

在创建数据库范围凭据之前,必须先创建主密钥

若要使用 Teradata 上的 PolyBase,则需要安装 VC++ 可再发行组件。

配置 Teradata 外部数据源

若要查询 Teradata 数据源中的数据,必须创建外部表以引用外部数据。 本节提供用于创建这些外部表的示例代码。

此部分中使用了以下 Transact-SQL 命令:

  1. 创建数据库范围凭据以访问 Teradata 源。

    /*  specify credentials to external data source
    *  IDENTITY: user name for external source. 
    *  SECRET: password for external source.
    */
    CREATE DATABASE SCOPED CREDENTIAL credential_name WITH IDENTITY = 'username', Secret = 'password';
    

    重要

    用于 PolyBase 的 Teradata ODBC 连接器仅支持基本身份验证,不支持 Kerberos 身份验证。

  2. 使用 CREATE EXTERNAL DATA SOURCE 创建外部数据源。

    /*  LOCATION: Location string should be of format '<vendor>://<server>[:<port>]'.
    * PUSHDOWN: specify whether computation should be pushed down to the source. ON by default.
    * CONNECTION_OPTIONS: Specify driver location
    * CREDENTIAL: the database scoped credential, created above.
    */  
    CREATE EXTERNAL DATA SOURCE external_data_source_name
    WITH (LOCATION = teradata://<server address>[:<port>],
    -- PUSHDOWN = ON | OFF,
    CREDENTIAL = credential_name);
    
  3. 使用 CREATE EXTERNAL TABLE 创建外部表。

    /*
    * LOCATION: Two-part identifier indicating the database and the table name.
    * DATA_SOURCE: Data source created above.
    */
    CREATE EXTERNAL TABLE [TableC] (
      [MyKey] INT NOT NULL,
      [RandomInt] INT NOT NULL,
      [RandomFloat] DECIMAL(13, 2) NOT NULL)
    WITH (
      LOCATION = 'TD_SERVER_DB.TableC',
      DATA_SOURCE = external_data_source_name)
    
  4. 可选:在外部表上创建统计信息。

    为了获得最佳查询性能,我们建议在外部表列上创建统计信息,尤其是用于联接、筛选和聚合的统计信息。

    CREATE STATISTICS statistics_name ON customer (C_CUSTKEY) WITH FULLSCAN; 
    

重要

创建外部数据源后,可以使用 CREATE EXTERNAL TABLE 命令在该数据源上创建可查询的表。

后续步骤

有关为各种数据源创建外部数据源和外部表的更多教程,请参阅 PolyBase Transact-SQL 参考

若要了解有关 PolyBase 的详细信息,请参阅 SQL Server PolyBase 的概述