概要
Snowflakeのマスキングポリシーにおいて、元のテーブルの桁数を超えるマスクデータと他のデータを結合する際に、エラー発生する事象がありました。
今回あらためて確認したところ、この事象が解消されているようでしたので、本記事で解説します。
再度確認したところ解消されていなかったので、回避方法を追記します。
発生していた事象
例えば、ID列(2桁)に対して10桁のマスキングを設定している場合に、他の列と文字結合を行うと、桁数オーバーによりエラーが発生していました。
原因
クエリ実行時の処理において、文字結合を行う場合に限り、マスクデータが元のデータとして扱われていました。
その結果、マスク文字列が元の桁数を超えていることで、エラーとして処理されていました。
現在の動作
現在は、同様のクエリを実行しても問題なく処理が完了します。
マスクデータと文字結合を検討されている場合や、以前エラーが発生して対応を断念されたケースでも、あらためて試してみるとよいでしょう。
まだ解消されていない、もしくは仕様として受け入れるしかないため、回避方法を記載します。
注意
今回の確認に使用したのはトライアルアカウントですので、使用しているプランやリージョンによって異なる場合があります。検証環境を用いて事前に確認されることをお勧めします。
動作確認
検証用に1からテーブルを作成してみます。(トライアルアカウント使用)
1.テーブルを作成し、データを挿入

2.マスキングポリシーを作成し、ID列に設定
※SYSADMINにマスキングがかかるよう設定

3.マスクデータと他データを文字結合し、エラーを確認

4.回避方法
今回はID列(2桁)とFLG列(1桁)のデータがマスキングにより11桁扱いになったため、桁数オーバーのエラーとなりました。
そのため、いずれかの列を11桁以上に再キャストすることで回避が可能です。
※今回はID列を「::VARCHAR」で再キャストしました。これ以外にTO_VARCHARも使用可能です。

本記事は以上です。ありがとうございました。