配置 PolyBase 以访问 Teradata 中的外部数据
适用于:SQL Server
本文介绍如何使用 SQL Server 实例上的 PolyBase 来查询 Teradata 中的外部数据。
先决条件
如果尚未安装 PolyBase,请参阅 PolyBase 安装。 这篇安装文章介绍了安装的先决条件。
在创建数据库范围凭据之前,必须先创建主密钥。
若要使用 Teradata 上的 PolyBase,则需要安装 VC++ 可再发行组件。
配置 Teradata 外部数据源
若要查询 Teradata 数据源中的数据,必须创建外部表以引用外部数据。 本节提供用于创建这些外部表的示例代码。
此部分中使用了以下 Transact-SQL 命令:
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE EXTERNAL TABLE (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
创建数据库范围凭据以访问 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 身份验证。
使用 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);
使用 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)
可选:在外部表上创建统计信息。
为了获得最佳查询性能,我们建议在外部表列上创建统计信息,尤其是用于联接、筛选和聚合的统计信息。
CREATE STATISTICS statistics_name ON customer (C_CUSTKEY) WITH FULLSCAN;
重要
创建外部数据源后,可以使用 CREATE EXTERNAL TABLE 命令在该数据源上创建可查询的表。
后续步骤
有关为各种数据源创建外部数据源和外部表的更多教程,请参阅 PolyBase Transact-SQL 参考。
若要了解有关 PolyBase 的详细信息,请参阅 SQL Server PolyBase 的概述。