> ## 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入門 Part2: 変換機能の使い方その１

> Integrate.io ETLで最もよく利用されるSelectコンポーネントを使い、フィールドの選択や名前変更、式による関数を用いてJSONやテキストなど様々な形式の元データを分析用の形式に加工する基本的な使い方を紹介します。

Xplentyには様々な変換機能があります。\
Part1では、その中でも、最も利用するSelectコンポーネントについて紹介したいと思います。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part02-jp/image-1.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=357009e666fc4cd5664bcfb25b5b29df" alt="novice-part02-jp image 1" width="1055" height="786" data-path="images/japanese-knowledge-base/novice-part02-jp/image-1.webp" />
</Frame>

## Selectコンポーネント

Selectコンポーネントは万能です。SQL的にはSQLのSelectにあたる機能だと考えていただいて差し支えありませんが、それだけではありません。Xplentyの豊富な関数により、JSONやテキストデータなどを分析で利用可能な形式に加工するための非常に便利な変換機能を有しています。

以下は、実際にAPIで取得されたJSONデータから必要なフィールドを個別に取得するためのSelectコンポーネントの例です。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part02-jp/image-2.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=7e3d8225f5925f31b4573e3970edfc13" alt="novice-part02-jp image 2" width="1099" height="829" data-path="images/japanese-knowledge-base/novice-part02-jp/image-2.webp" />
</Frame>

式エディタを利用すれば、関数を使うことも可能です。

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part02-jp/image-3.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=2cde3e7d7d674fd68fee6d99c109dd17" alt="novice-part02-jp image 3" width="1099" height="829" data-path="images/japanese-knowledge-base/novice-part02-jp/image-3.webp" />
</Frame>

以下では、Selectコンポーネントを利用する具体的なケースについて紹介します。

### 1. SQLのSelectにあたる機能

* フィールドの取捨
* フィールド名の変更
* 計算式
* フィールドのデータタイプの変更
* Datetime型のTimezoneの変更など
* CASE文による条件分岐処理(Case When ...)　

  **CASE文では必ずELSE句を含めなければならない（ELSE句がない場合、エラーとなる）**

例1）メールアドレスに「xplenty.com」が含まれる場合はTrueを返す\
`CASE WHEN mail_address matches '.*xplenty.com.*' THEN true ELSE false END`

例2)キャンペーン名が以下に合致する場合（カラム値の中身は数値でもデータ型がテキスト型の場合は、シングルクォーテーションで囲むようにする）\
`CASE WHEN ga_campaign=='jp_facebook' THEN 'JP_FB' WHEN ga_campaign=='jp_twitter' AND ga_date>='20200420' THEN 'JP_twitter_camp1' WHEN ga_campaign=='jp_twitter' AND ga_date<'20200420' THEN 'JP_twitter_camp2' ELSE 'Unknown' END`

<Frame>
  <img src="https://mintcdn.com/integrateio/S5PjFuXd0nNm4BaF/images/japanese-knowledge-base/novice-part02-jp/image-4.webp?fit=max&auto=format&n=S5PjFuXd0nNm4BaF&q=85&s=eebe3e3a9716d9ffaf295b22df0d98bf" alt="novice-part02-jp image 4" width="1270" height="1068" data-path="images/japanese-knowledge-base/novice-part02-jp/image-4.webp" />
</Frame>

注）イコールの場合は「==」を使用する点に注意。またパターンマッチング時は正規表現を使用。

### 2.JSONデータやログデータの操作

JSONのデータ構造をデータベースのテーブル構造のようにフラット化しするための関数のほか、ログデータなどのテキストデータから必要なデータのみを正規表現を使って抽出することが可能です。

### 3.Curl Function

Xplentyでは、データベースやRest APIで取得したデータについて、別のRest APIに対してデータを送信することが可能です。詳細は[こちらのブログ](/jp/etl/restapi-part06-jp)をご覧ください。

## 最後に

Xplentyでは、現在[無償トライアル](https://try.xplenty.com/jp/)を提供中です。\
ぜひこの機会に操作感を試してみてはいかがでしょうか？
