Xplenty入門 Part9: データ型の変換


Xplentyでは式エディタを使用することでデータ型を変換することが可能です。しかし、型の変換方法は変換する型によって変わるため、以下を参考に活用ください。

シンプルな型変換1

1. Chararray(String)

用途:BAG型やMAP型および数値型などから文字列型への変換に使用する

式エディタでの使用例:
(chararray)field名

例外ケース:変数画面でHexstring(16進文字列)を文字列型に変換するには?
XplentyではSalesforceのオブジェクトにあるID列(AccountIdやOwnerId)でも使用される「0052x0000034oJqAAI」のような値を文字列として変数画面で使用した場合、Hexstring(16進文字列)として自動的に扱われます。こうした場合、Chararray関数を使用して文字列型へ変換しようとするとエラーとなってしまいます。
そこでHexstring(16進文字列)の値を文字列型で定義し、パイプラインの条件やSelectコンポーネントで使用したい場合、バックスラッシュ「\'[Hexstring文字列]\'」のように定義することで、文字列に変換が可能です。

例)文字列「0052x0000034oJqAAI」を変数で文字列型として定義する場合
'\'0052x0000034oJqAAI\''

2. Int型

文字列型の数値データを数値型に変換

式エディタでの使用例:
(int)field名

3. Long型

文字列型の数値データを数値型に変換

式エディタでの使用例:
(long)field名

4. Float型

文字列型の数値データを数値型に変換

式エディタでの使用例:
(float)field名

5. Double型

文字列型の数値データを数値型に変換

式エディタでの使用例:
(double)field名

6. 数値へ変換、数値に変換出来なかった場合はデフォルト値をセット

ParseIntOrDefault(field名,数値に変換出来なかった場合のデフォルト数値(Int型))
ParseLongOrDefault(field名,数値に変換出来なかった場合のデフォルト数値(Long型))
ParseFloatOrDefault(field名,数値に変換出来なかった場合のデフォルト数値(Float型))
ParseDoubleOrDefault(field名,数値に変換出来なかった場合のデフォルト数値(Double型))

式エディタでの使用例:
ParseIntOrDefault('ああああ',1)
1(Int型)を返す >文字列が数値に変換できなかったため

ParseIntOrDefault('300',1)
300(Int型)を返す

シンプルな型変換2

1. Map型

JSONなどのキーバリュー形式のデータを格納したデータ形式です。
以下のようなデータを取り込む際に使用されます
area : {
id : "130" ,
name : "東京"
}

式エディタでの使用例:
TOMAP('id','130','name','東京')

結果:
{name=東京, id=130}

MAP型からデータを取得するには?
Field1#'キー名称'と指定すれば、キーに対応する値が取得できます。

式エディタでの使用例:
TOMAP('id','130','name','東京')#'id'

結果:
130

2. Tuple型

複数フィールドが配列になっている形式のデータ型です。

式エディタでの使用例:
TOTUPLE('001,TV,Electronics')

結果:
(001,TV,Electronics)

3. Bag型

式エディタでの使用例:
TOBAG('001','TV','Electronics')

結果:
{(001),(TV),(Electronics)}

その他の型変換

1. BagToString

Bag型からString型に変換

式エディタの使用例: *この例では、文字列をBag型に便宜的に変換するためにJsonStringToBagを使用
BagToString(JsonStringToBag('[1,2,3]'),';')

結果:String型
1;2;3

2. BagToTuple

Bag型からTuple型に変換

式エディタの使用例:
BagToTuple(JsonStringToBag('[1,2,3]'))

結果:Tuple型
(1,2,3)

Tuple型の配列の一部の値を取得するには?

式エディタの使用例:
BagToTuple(JsonStringToBag('[1,2,3]')).$0

結果:
1

3. MapToBug

Map型からBug型に変換

式エディタの使用例:
MapToBag(TOMAP('a',1,'b',2,'c',3))

結果:Bag型
{([value#1,key#a]),([value#2,key#b]),([value#3,key#c])}

参考:Xplentyで扱えるデータ型について

使用できる型はこちら
*2020年8月16日現在、XplentyではDate型がありません。

より実践的なデータ処理

1. BAG型のフィールド

Flatten関数を使用する。
式)Flatten(BAG型のフィールド
バッグ型のフィールドがもつデータ数にもとづきレコードが分かれます。
例えば以下のようなデータをもつBAG型のフィールドの場合、1レコードが2つのレコードに分かれます。
{
[{"id":"001","price":"200"}],
[{"id":"002","price":"500"}]
}

結果:
{"id":"001","price":"200"}
{"id":"002","price":"500"}

2. BAG形式の文字列を持つフィールドの処理

すでに処理対象のフィールドのデータ型がBAG型の場合はこの処理は不要ですが、String型の場合には以下の処理が必要となります。
フィールド「test」の値:
[{"id":"001","price":"200"}]

String型のJSON文字列をBAG型へ変換
「test2」フィールド:
式)JsonStringToBag(test)
結果値:{({"id":"001","price":"200"})}

これでフィールドをFlatten関数で処理することで、以下の様なJSON文字列になります。
「test3」フィールド:
式)Flatten(test2)
{"id":"001","price":"200"}

あとはJsonStringToMap関数を使って、testフィールドの値の各キーを取得できます。
JsonStringToMap(test3)#'id' --> 001
JsonStringToMap(test3)#'price' --> 200