LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-12

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

image.png

シンプルな型変換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\''
image.png

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型がありません。
image.png

より実践的なデータ処理

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0