- カテゴリ:
半構造化データ関数と構造化データ関数 (抽出)
XMLGET¶
指定されたタグの名前とインスタンス番号に基づいて、外側の XML 要素のコンテンツから XML 要素オブジェクト(たいていは単に タグ と呼ばれます)を抽出します。
(XML タグは、Snowflake データガバナンスタグ と同じではないことに注意してください。)
構文¶
引数¶
expression要素を抽出するための式。
式は、 OBJECT (または OBJECT を含む VARIANT)に評価される必要があります。OBJECT には、Snowflakeがサポートする内部形式の有効な XML が含まれている必要があります。通常、これは OBJECT が次のいずれかによって生成されたことを意味します。
PARSE_XML 関数を呼び出すには、
データをロード(例: COPY INTO <テーブル> コマンドを使用)し、データが XML 形式であることを指定します。
VARCHAR に有効な XML テキストが含まれている場合でも、 XMLGET 関数は VARCHAR 式を直接操作しません。
tag_nameexpressionに格納されている XML タグの名前。instance_numberXML に
tag_nameの複数のインスタンスが含まれている場合は、instance_numberを使用して、取得するインスタンスを指定します。配列インデックスと同様に、instance_numberは0ベースであり、1ベースではありません。instance_numberは省略できます。この場合、デフォルト値0が使用されます。
戻り値¶
戻り値のデータ型は OBJECT です。
この関数は以下の場合に NULL を返します。
XMLGET の引数が NULL の場合。
タグのインスタンスが見つからない場合。
詳細については、使用上の注意をご参照ください。
使用上の注意¶
XMLGET の結果は、タグのコンテンツ(つまり、タグ間のテキスト)ではなく、要素全体(開始タグ、コンテンツ、および終了タグ)です。返された OBJECT 値から、 GET 関数を使用して、タグ名、タグの属性値、要素のコンテンツ(ネストされたタグを含む)を抽出することができます。
属性値を抽出するには、
GET(tag, '@attrname')を使用します。コンテンツを抽出するには、
GET(tag, '$')を使用します。タグ名を抽出するには、
GET(tag, '@')を使用します。
XMLGET 関数の呼び出しをネストすることで、ネストされたタグを抽出できます。例:
コンテンツ内のタグの位置は、
GET(tag, 'inner-tag-name')を使って取得できます。コンテンツに複数の要素が含まれる場合、その位置は配列として表現されます。XMLGET を使って一番外側の要素を取り出すことはできません。一番外側の要素を取得するには、
expression自体を選択します。
例¶
次の例では、 XML を含む OBJECT のテーブルを作成し、 XMLGET 関数を使用して OBJECT から要素を抽出しています。
この例は、 GET と XMLGET を使用して要素のコンテンツを取得する方法を示しています。この例では、 level2 タグは3つのアイテム(テキストと2つのネストされたタグ)を含んでいるため、 GET はこれらのアイテムを ARRAY で返します。ネストされたタグは、 OBJECTs (キーと値のペア)で表されます。 @ プロパティにはネストされたタグ名が含まれ、 $ プロパティにはネストされたタグの内容が含まれます。
次の例は、 GET と XMLGET を併用して、タグの属性を取得する方法を示しています。
注釈
XMLGET 関数を使ったクエリの例については、 XML 協力の例 をご参照ください。