> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: XplentyによるXMLデータ処理

> Xplentyの関数XPathとXPathToBagを使ってXML形式のファイルデータをパースし、データパイプライン内でテーブル形式として処理する方法を解説します。

## 概要とリソース

デモのために、処理するサンプルXMLファイルへのリンクは[こちら](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms762271\(v=vs.85\))です。

ファイルは以下の画像のようなXML構造になっています。

<Frame>
  <img src="https://mintcdn.com/integrateio/9zTXY63WpdSgW89f/images/japanese-knowledge-base/etc-part05-jp/image-1.webp?fit=max&auto=format&n=9zTXY63WpdSgW89f&q=85&s=3e95634fc8fca771806714f6f656e776" alt="etc-part05-jp image 1" width="431" height="449" data-path="images/japanese-knowledge-base/etc-part05-jp/image-1.webp" />
</Frame>

このデータを処理するための鍵となるのが、Xplentyの関数「[XPath](https://www.xplenty.com/docs/xpath/)」と「[XPathToBag](https://www.xplenty.com/docs/xpathtobag/)」です。これらをデータパイプラインで検証してみましょう。

## Xplentyデータパイプラインの設定

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/etc-part05-jp/image-2.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=2b137c8ec9ea8f85dcd5db1443502c4f" alt="etc-part05-jp image 2" width="249" height="698" data-path="images/japanese-knowledge-base/etc-part05-jp/image-2.webp" />
</Frame>

Xplentyパイプラインの構成要素をそれぞれ順番に説明していきます。

1. **XML\_Source**: 上記で共有されたリンクからのXMLファイルをクラウドストレージにコピーし、File Storage Source Componentを使用して読み込みます。

2. **XPathToBag**: このステップでは、XPath `/catalog/book`に一致するようにXPathToBag関数を呼び出します。これは、Bagデータ型の`<catalog> </catalog>`の下にあるすべての書籍を取得します。　例） `XPathToBag(data,'/catalog/book')`

3. **Flatten\_Books**: Flatten()関数を使用して、構造体の各レコードを個別のbookレコードとして取得します。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/etc-part05-jp/image-3.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=fdb9b4dee7c0da0f50d1c86b5d1d5689" alt="etc-part05-jp image 3" width="386" height="134" data-path="images/japanese-knowledge-base/etc-part05-jp/image-3.webp" />
</Frame>

※ XPathToBagとFlatten\_Booksを１つにまとめて`Flatten(XPathToBag(data,'/catalog/book'))`にも可能です。

4. **XPath**: このステップでは、XPath関数を使用して、book構造体の個々の要素を取得することができます。ここでは、上記の`<book> </book>`構造体にXPathを設定したコンポーネントを見てみましょう。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/etc-part05-jp/image-4.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=0e5156885d10aa472abf2e24fa99e777" alt="etc-part05-jp image 4" width="1054" height="639" data-path="images/japanese-knowledge-base/etc-part05-jp/image-4.webp" />
</Frame>

XPathとその例についての追加のリファレンスは、[freeformatter.com](https://www.freeformatter.com/xpath-tester.html)のようなXPath評価ツールを参照してください。

5. **Destination**: XML から処理された個々のフィールドは、Destination（この例では BigQuery テーブル）に保存されます。

以下の画像は、出力されたレコードの例を示しています。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/etc-part05-jp/image-5.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=768b9fb78adc367d58ecaf9e139c39ca" alt="etc-part05-jp image 5" width="947" height="401" data-path="images/japanese-knowledge-base/etc-part05-jp/image-5.webp" />
</Frame>

ファイルやAPIレスポンスからXMLをパースしてテーブル形式の構造に変換することは、データを検索する上で重要です。また、他のデータセットとのブレンドにより、データ分析をより容易にすることができます。

## まとめ

信頼できるドキュメントベースの情報転送として、XMLベースのファイルやAPIがユースケースとしてよく見られます。XplentyではこうしたXMLデータを簡単に処理するための機能が用意されています。ぜひ、[Xplenty](https://www.xplenty.com/jp/)のフリートライアルでお試しください。
