- カテゴリ:
半構造化データ関数と構造化データ関数 (抽出)
GET_PATH、 :
¶
パス名を使用して半構造化データから値を抽出します。
GET_PATH は、 GET のバリエーションです。最初の引数として VARIANT、 OBJECT、または ARRAY 列名を取り、2番目の引数として提供されたパス名に従ってフィールドまたは要素の値を抽出します。
構文¶
GET_PATH( <column_identifier> , '<path_name>' )
<column_identifier>:<path_name>
:( <column_identifier> , '<path_name>' )
引数¶
戻り値¶
戻り値は、 ARRAY の指定された要素、または OBJECT にあるキーと値のペアの指定されたキーに対応する値です。
入力オブジェクトが半構造化 OBJECT、 ARRAY、 VARIANT の場合、この関数は VARIANT を返します。次の理由により、データ型は VARIANT です。
ARRAY では、各要素の型が VARIANT のため。
OBJECT では、各キーと値のペアにある値が型 VARIANT のため。
入力オブジェクトが 構造化 OBJECT、構造化 ARRAY、または MAP の場合、関数はオブジェクトに指定された型の値を返します。
例えば、入力オブジェクトの型が ARRAY(NUMBER) の場合、関数は NUMBER を返します。
使用上の注意¶
GET_PATH は、 GET 関数のチェーンと同等です。パス名がどの要素にも対応しない場合は、 NULL を返します。
パス名の構文は標準の JavaScript 表記です。これは、ピリオド(例:
.
)とインデックス演算子(例:[<インデックス>]
)が前に付いたフィールド名(識別子)の連結で構成されます。最初のフィールド名には、先行ピリオドを指定する必要はありません。
インデックス演算子のインデックス値は、負でない10進数(配列の場合)または一重引用符または二重引用符で囲まれた文字列リテラル(オブジェクトフィールドの場合)です。
詳細については、 半構造化データのクエリ をご参照ください。
GET_PATH は、列名(ピリオドを含むことができる)をパス指定子から分離する抽出演算子として
:
文字を使用する構文ショートカットもサポートします。構文の一貫性を維持するために、パス表記は SQL スタイルの二重引用符で囲まれた識別子もサポートし、パス区切り文字として
:
を使用します。:
演算子を使用すると、整数または文字列の部分式を[]
内に含めることができます。
例¶
vartab
テーブルからフィールド name
を抽出します。
SELECT GET_PATH(v, 'attr[0].name') FROM vartab;
これは最初の例と同じですが、抽出演算子として :
を使用します。
SELECT v:attr[0].name FROM vartab;抽出演算子
:
は左結合です。上記の例では、v:attr[0]:name
を使用すると左側:
と同じ効果があり、name
フィールドの値を抽出する右側抽出演算子:
から変数値(オブジェクトを含む)を生成します。
これは最初の例と同じですが、 SQL スタイルの二重引用符で囲まれた識別子と :
をパス区切り文字として使用します。
SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;