2026年6月5日金曜日

SQL Server PolyBaseの基本と外部データアクセスの仕組みを理解する

外部データを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・データレイク連携・分析用途に最適。

参考リンク

SQL Server 解説用イメージ

0 件のコメント:

コメントを投稿