外部データをT-SQLで扱う!SQL Server PolyBaseの基本と仕組みを徹底解説
外部データをT-SQLで扱う!SQL Server PolyBaseの基本と仕組みを徹底解説
企業のデータはクラウドストレージ、Hadoop、S3など多様な場所に分散しています。
そんな環境で活躍するのがSQL Server PolyBase(ポリベース)です。
PolyBaseを使えば、異なるデータソースにT-SQLでアクセスでき、
ETL処理や分析統合を簡単に実現できます。
この記事では、PolyBaseの概要、構成要素、外部テーブルの作り方を
初心者にもわかりやすく解説します。
目次
PolyBaseとは?
異種データソースを統合する外部アクセス機能
PolyBaseは、SQL Serverから外部データソース(Hadoop・Azure Blob・S3・他RDBMSなど)にアクセスし、 あたかもローカルテーブルのようにクエリを実行できる機能です。
従来はSSISなどを用いてデータをインポートする必要がありましたが、 PolyBaseではデータを移動せずにクエリ実行が可能です。
利用目的
- データレイクとの連携(Azure Data Lake / S3など)
- ビッグデータ分析の統合
- 異種DB(Oracle, Teradataなど)とのクエリ連携
- ETL・ELT処理の簡素化
PolyBaseのアーキテクチャと構成要素
内部構成
| 構成要素 | 役割 |
|---|---|
| 外部データソース(External Data Source) | 接続先の定義(Azure、S3、Hadoopなど) |
| 外部ファイルフォーマット(External File Format) | CSV・Parquet・ORCなどの形式を指定 |
| 外部テーブル(External Table) | 外部データをSQL Server内で参照するための仮想テーブル |
これらを組み合わせることで、異種ソースを統合的に扱えます。
サポートされる外部データソース
主要対応ソース一覧
| データソース | 接続方式 |
|---|---|
| Azure Blob Storage / Data Lake | HTTPS 経由 |
| Amazon S3 | ACCESS_KEY / SECRET_KEY 認証 |
| Hadoop / Cloudera / HDInsight | HDFS プロトコル |
| Oracle / Teradata / MongoDB など | ODBC ドライバ経由 |
SQL Server 2022 以降では、S3互換ストレージにもネイティブ対応しています。
PolyBaseのセットアップと有効化
機能インストール
SQL Serverのインストール時、PolyBase Query Service for External Dataを選択します。 既存環境に後から追加することも可能です。
-- サービスの確認
SELECT * FROM sys.dm_server_services WHERE servicename LIKE '%PolyBase%';
ファイアウォールと権限設定
- 外部ストレージへの通信ポート(443など)を開放
- SQL Serverサービスアカウントにネットワークアクセス権限を付与
Azure BlobやS3に接続する場合は、アクセスキーを安全に管理しましょう。
外部データソース・テーブルの作成手順
1. 外部データソースを作成
CREATE EXTERNAL DATA SOURCE MyS3Source
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://my-bucket.s3.amazonaws.com',
CREDENTIAL = MyS3Credential
);
2. 外部ファイルフォーマットを定義
CREATE EXTERNAL FILE FORMAT CsvFormat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2)
);
3. 外部テーブルを作成
CREATE EXTERNAL TABLE SalesData (
OrderID INT,
Customer NVARCHAR(100),
Amount MONEY
)
WITH (
LOCATION = '/sales/2025/',
DATA_SOURCE = MyS3Source,
FILE_FORMAT = CsvFormat
);
この定義だけで、S3上のCSVをSQL Serverから参照できるようになります。
実行例:S3上のCSVをクエリする
SELECT TOP 10 *
FROM SalesData
WHERE Amount > 10000;
まるでローカルテーブルのようにクエリを実行できます。 JOIN句やビューの作成も可能で、分析用途にも適しています。
実務での利用ケースと注意点
- ETLの高速化: データをコピーせずに分析可能
- データレイク連携: Azure SynapseやData Lakeとの橋渡し
- ログ・履歴解析: 大量CSVをSQLで直接集計
注意点
- アクセス先のネットワーク帯域に依存(遅延が発生する場合あり)
- 認証情報(Credential)の管理に注意
- 書き込み操作(INSERT/UPDATE)は制限あり(主に読み取り用途)
まとめと次のステップ
学んだ内容の整理
- PolyBaseを使うと外部データにT-SQLでアクセスできる。
- 外部ソース・ファイルフォーマット・外部テーブルの3構成で動作。
- Azure Blob・S3・Hadoopなど多様なデータソースをサポート。
- ETL・データレイク連携・分析用途に最適。
参考リンク

0 件のコメント:
コメントを投稿