0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Fabric レイクハウスで文字長を指定する

Last updated at Posted at 2025-08-15

概要

Fabric レイクハウスでは本来 STRING 型で問題ありませんが、
テーブルが反映される SQL 分析エンドポイント経由で見ると、STRING は自動的に VARCHAR(8000) に変換されます。
この変換により、オプティマイザが不要に大きな列幅を前提としてしまい、クエリプランに影響が出る可能性があります。

SQL 分析エンドポイントへの自動反映について

Fabric の Lakehouse に作成した Delta テーブルは、SQL分析エンドポイントに自動的にテーブルとして反映されます

SQL 分析エンドポイント上でも、Delta テーブルはSQLテーブルとして透過的に扱われ、マニュアルでのスキーマ登録は不要です。
この SQL 分析エンドポイントは T-SQL エンジンで動作しており、Power BI や外部ツールから直接接続してクエリを実行できます。

Lakehouse のテーブルは、自動的に Lakehouse の SQL 分析エンドポイントで利用できるようになります。

引用: Automatically generated schema in the SQL analytics endpoint of the Lakehouse - Microsoft Fabric

実際の例

Lakehouse 上で VARCHAR(50) を定義し、SQL 分析エンドポイントで参照した場合の例です。

DDL

-- シンプルなテーブル定義(VARCHAR 長さ指定の例)
CREATE TABLE IF NOT EXISTS `sample_table` (
    id    INT          NOT NULL COMMENT '主キー',
    name_varchar  VARCHAR(50)  COMMENT '名前(最大50文字)',
    name_string  STRING  COMMENT '名前(文字長無し)'
)
USING delta
COMMENT 'VARCHAR の長さ指定例(Lakehouse 定義)';

レイクハウス上での表示
image.png

SQL分析エンドポイントへの反映結果
変換結果のスクリーンショット

4倍変換の理由について

レイクハウス上で VARCHAR の文字数を明示的に指定した場合、SQL 分析エンドポイント上では
Lakehouse 側で指定した文字長 × 4バイトVARCHAR として定義されます。
これはマルチバイト文字格納で考えた場合に最大4バイト/文字を見積もるためと考えられます。

例:

  • Lakehouse: VARCHAR(100) → SQL 分析EP: VARCHAR(400)
  • Lakehouse: VARCHAR(800) → SQL 分析EP: VARCHAR(3200)

Microsoft Learn のパフォーマンスガイドライン

公式のパフォーマンスガイドラインでも、文字長を適切に構成することが重要 とされています。
そのため、Fabric レイクハウスでは VARCHAR を明示指定し、SQL分析エンドポイントが必要十分な文字長で定義されるようにすることを推奨します。

参考: Guidelines for warehouse performance - Microsoft Fabric

まとめ

  • STRING 型は SQL 分析エンドポイントでは VARCHAR(8000) に変換され、プラン最適化に悪影響を及ぼす可能性がある。
  • VARCHAR を明示指定すると、指定長の4倍バイト長として扱われる(UTF-8 最大4バイト/文字換算)。
  • 公式ガイドラインでも文字長指定は推奨されているため、必要十分な長さで VARCHAR を定義するのが望ましい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?