カテゴリ:

半構造化データ関数と構造化データ関数 (抽出)

GET_PATH、 :

パス名を使用して半構造化データから値を抽出します。

GET_PATH は、 GET のバリエーションです。最初の引数として VARIANT、 OBJECT、または ARRAY 列名を取り、2番目の引数として提供されたパス名に従ってフィールドまたは要素の値を抽出します。

構文

GET_PATH( <column_identifier> , '<path_name>' )

<column_identifier>:<path_name>

:( <column_identifier> , '<path_name>' )
Copy

引数

column_identifier

OBJECTARRAY、または VARIANT 列に評価される式。

path_name

VARCHAR に評価される式。これは、抽出するフィールドまたは要素へのパスを指定します。

構造化型 の場合は、文字列定数を指定する必要があります。

戻り値

  • 戻り値は、 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;
Copy

これは最初の例と同じですが、抽出演算子として : を使用します。

SELECT v:attr[0].name FROM vartab;
Copy

抽出演算子 : は左結合です。上記の例では、 v:attr[0]:name を使用すると左側 : と同じ効果があり、 name フィールドの値を抽出する右側抽出演算子 : から変数値(オブジェクトを含む)を生成します。

これは最初の例と同じですが、 SQL スタイルの二重引用符で囲まれた識別子と : をパス区切り文字として使用します。

SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;
Copy