Synapse Analytics の Serverless SQL Pool (SQL on-demand) では、BLOB / ADL Gen2 上のファイルに対してクエリを実行することができます。
- Synapse SQL 内で SQL オンデマンド (プレビュー) リソースを使用してストレージ ファイルに対してクエリを実行する
- SQL オンデマンド (プレビュー) のストレージ アカウント アクセスを制御する
同様の内容を実現する機能としては、Azure Data Lake Storage のクエリ アクセラレーション があります。
こちらについては、しばやん先生が Azure Data Lake Storage の Query Acceleration が GA になったので試したら最高だった で機能の解説をされています。
この機能の比較をするために検証していたときに「そういえば、Serverless SQL Pool で、テキストを読むとき文字コードって何にする必要があったっけ?」と思い、軽く検証してみました。
今回は Shift-JIS / UTF8? / UTF16 LE の 3 パターンで検証しています。
使用しているデータは、本ブログのアクセスログを CSV に出力したものです。
シンプルな構成にするのであれば、次のような構成をしておけばいいのではないでしょうか。
- ファイルは UTF8 のエンコードを使用する
- データベースの照合順序は _UTF8 を使用する
- 日本語環境の SQL Server の照合順序と同様にするのであれば、次の照合順序のいずれかを使用しておけば、最新のUnicode を考慮した文字コード体系になる
- Japanese_XJIS_100_CI_AS_SC_UTF8
- Japanese_XJIS_140_CI_AS_UTF8
- Synapse SQL でのデータベースの照合順序のサポート では、140 系はサポートされていないということになっていますが、本投稿を書いているタイミングでは、設定はできます。(サポート対象なのかは要確認ですが)
- 基本的な検索であれば、任意の照合順序に「_UTF8」を設定したものであれば、ある程度カバーできるはず
- 日本語環境の SQL Server の照合順序と同様にするのであれば、次の照合順序のいずれかを使用しておけば、最新のUnicode を考慮した文字コード体系になる
- 検索条件で、文字列リテラルを使用する場合、「N’xxxxx’」の Unicde 変数で検索を行う。