ETL 変換の例
この記事では、抽出、変換、読み込み(ETL)の開発者が経験する可能性がある変換の例を示します。
フラット CSV から階層への変換
サンプルファイル
サンプルの CSV および JSON ファイルは、Adobeが管理する公開 ETL リファレンス GitHub リポジトリから入手できます。
CSV の例
次の CRM データは、CRM_profiles.csv
として書き出されました。
TITLE F_NAME L_NAME GENDER DOB EMAIL CRMID ECID LOYALTYID ECID2 PHONE STREET CITY STATE COUNTRY ZIP LAT LONG
Mr Ewart Bennedsen M 2004-09-25 ebennedsenex@jiathis.com 71a16013-d805-7ece-9ac4-8f2cd66e8eaa 87098882279810196101440938110216748923 2e33192000007456-0365c00000000000 55019962992006103186215643814973128178 256-284-7231 72 Buhler Crossing Anniston Alabama US 36205 33.708276 -85.7922905
Dr Novelia Ansteys F 1987-10-31 nansteysdk@spotify.com 2eeb6532-82e1-0d58-8955-bf97de66a6f5 50829196174854544323574004005273946998 2e3319208000765b-3811c00000000001 65233136134594262632703695260919939885 704-181-6371 79 Northfield Hill Charlotte North Carolina US 28299 35.2188655 -80.8108885
Mr Ulises Mochan M 1996-03-20 umochanco@gnu.org 6f393075-addb-bdd6-73f8-31c393b700f5 70086119428645095847094710218289660855 2e33192080003023-26b2000000000002 82011353387947708954389153068944017636 720-837-4159 00671 Mifflin Trail Lacolle Québec CA E5A 45.08338 -73.36585
Mrs Friederike Durrell F 1979-01-3 fdurrellbj@utexas.edu 33d018ec-5fed-f1a3-56aa-079370a9511b 50164729868919217963697788808932473456 2e33192080006dfc-0cdf400000000003 64452712468609735658703639722261004071 798-528-3458 47 Fremont Hill Independencia Veracruz Llave MX 91891 19.3803931 -99.1476905
Rev Evita Bingall F 1974-02-28 ebingallod@mac.com 8c93db88-f328-8efb-dc73-d5654d371cbe 74973364195185450328832136951985519627 2e331920800038db-0559e00000000004 58945501950285346322834356669253860483 397-178-5897 56 Crescent Oaks Court Buenavista Oaxaca MX 71730 19.4458447 -99.1497665
Mr Eugenie Bechley F 1969-05-19 ebechley9r@telegraph.co.uk b0c76a3f-6526-0ad0-e050-48143b687d18 67119779213799783658184754966135750376 2e331920800001a4-24b2800000000005 59715249079109455676103900762283358508 718-374-7456 5760 Southridge Junction Staten Island New York US 10310 40.6307451 -74.1181235
Dr Cammi Haslen F 1973-12-17 chaslenqv@ehow.com 56059cd5-5006-ce5f-2f5f-15b4d856a204 61747117963243728095047674165570746095 2e33192080007c25-2ec0600000000006 86268258269066295956223980330791223320 865-538-8291 83 Veith Street Knoxville Tennessee US 37995 35.95 -84.05
マッピング
次の表に、CRM データのマッピング要件を示します。この中には、次の変換が含まれています。
- ID 列から
identityMap
プロパティへの変換 - 生年月日(DOB)から年、月、日への変換
- 文字列から double または短整数への変換
CSV 列
XDM パス
データの書式設定
TITLE
person.name.courtesyTitle
文字列としてコピー
F_NAME
person.name.firstName
文字列としてコピー
L_NAME
person.name.lastName
文字列としてコピー
GENDER
person.gender
対応する person.gender 列挙値として性別を変換
DOB
person.birthDayAndMonth: "MM-DD"
person.birthDate: "YYYY-MM-DD"
person.birthYear: YYYY
person.birthDate: "YYYY-MM-DD"
person.birthYear: YYYY
birthDayAndMonth を文字列として変換
birthDate を文字列として変換
birthYear を短整数として変換
birthDate を文字列として変換
birthYear を短整数として変換
EMAIL
personalEmail.address
文字列としてコピー
CRMID
identityMap.CRMID[{"id":x, primary:false}]
identityMap の CRMID 配列に文字列としてコピー、Primary を false に設定
ECID
identityMap.ECID[{"id":x, primary: false}]
identityMap の ECID 配列の最初のエントリに文字列としてコピー、Primary を false に設定
LOYALTYID
identityMap.LOYALTYID[{"id":x, primary:true}]
identityMap の LOYALTYID 配列に文字列としてコピー、Primary を true に設定
ECID2
identityMap.ECID[{"id":x, primary:false}]
identityMap の ECID 配列の 2 番目のエントリに文字列としてコピー、Primary を false に設定
PHONE
homePhone.number
文字列としてコピー
STREET
homeAddress.street1
文字列としてコピー
CITY
homeAddress.city
文字列としてコピー
STATE
homeAddress.stateProvince
文字列としてコピー
COUNTRY
homeAddress.country
文字列としてコピー
ZIP
homeAddress.postalCode
文字列としてコピー
LAT
homeAddress.latitude
double に変換
LONG
homeAddress.longitude
double に変換
出力 XDM
次のサンプルは、CSV の最初の 2 行を XDM に変換したものです(CRM_profiles.json
を参照)。
{
"person": {
"name": {
"courtesyTitle": "Mr",
"firstName": "Ewart",
"lastName": "Bennedsen"
},
"gender": "male",
"birthDayAndMonth": "09-25",
"birthDate": "2004-09-25",
"birthYear": 2004
},
"identityMap": {
"CRMID": [{
"id": "71a16013-d805-7ece-9ac4-8f2cd66e8eaa",
"primary": false
}],
"ECID": [{
"id": "87098882279810196101440938110216748923",
"primary": false
},
{
"id": "55019962992006103186215643814973128178",
"primary": false
}],
"LOYALTYID": [{
"id": "2e33192000007456-0365c00000000000",
"primary": true
}]
},
"homePhone": {
"number": "256-284-7231"
},
"personalEmail": {
"address": "ebennedsenex@jiathis.com"
},
"homeAddress": {
"street1": "72 Buhler Crossing",
"city": "Anniston",
"stateProvince": "Alabama",
"country": "US",
"postalCode": "36205",
"_schema": {
"latitude": 33.708276,
"longitude": -85.7922905
}
}
},{
"person": {
"name": {
"courtesyTitle": "Dr",
"firstName": "Novelia",
"lastName": "Ansteys"
},
"gender": "female",
"birthDayAndMonth": "10-31",
"birthDate": "1987-10-31",
"birthYear": 1987
},
"identityMap": {
"CRMID": [{
"id": "2eeb6532-82e1-0d58-8955-bf97de66a6f5",
"primary": false
}],
"ECID": [{
"id": "50829196174854544323574004005273946998",
"primary": false
},
{
"id": "65233136134594262632703695260919939885",
"primary": false
}],
"LOYALTYID": [{
"id": "2e3319208000765b-3811c00000000001",
"primary": true
}]
},
"homePhone": {
"number": "704-181-6371"
},
"personalEmail": {
"address": "nansteysdk@spotify.com"
},
"homeAddress": {
"street1": "79 Northfield Hill",
"city": "Charlotte",
"stateProvince": "North Carolina",
"country": "US",
"postalCode": "28299",
"_schema": {
"latitude": 35.2188655,
"longitude": -80.8108888
}
}
}
データフレームの XDM スキーマへの変換
データフレームの階層(Parket ファイルなど)は、アップロード先の XDM スキーマの階層と一致している必要があります。
データフレームの例
次のサンプルのデータフレームの構造は、XDM Individual Profile クラスを実装するスキーマにマッピングされており、そのタイプのスキーマに関連付けられた最も一般的なフィールドを含んでいます。
[
StructField("person", StructType(
[
StructField("name", StructType(
[
StructField("courtesyTitle", StringType()),
StructField("firstName", StringType()),
StructField("lastName", StringType())
]
)),
StructField("gender", StringType()),
StructField("birthDayAndMonth", StringType()),
StructField("birthDate", StringType()),
StructField("birthYear", LongType())
]
)),
StructField("identityMap", MapType(
StructField("CRMID", ArrayType(
StructType(
[
StructField("id", StringType()),
StructField("primary", BooleanType())
]
)
)),
StructField("ECID", ArrayType(
StructType(
[
StructField("id", StringType()),
StructField("primary", BooleanType())
]
)
)),
StructField("LOYALTYID", ArrayType(
StructType(
[
StructField("id", StringType()),
StructField("primary", BooleanType())
]
)
))
)),
StructField("homePhone", StructType(
[
StructField("number", StringType())
]
)),
StructField("personalEmail", StructType(
[
StructField("address", StringType())
]
)),
StructField("homeAddress", StructType(
[
StructField("street1", StringType()),
StructField("city", StringType()),
StructField("stateProvince", StringType()),
StructField("country", StringType()),
StructField("postalCode", StringType()),
StructField("_schema", StructType(
[
StructField("latitude", DoubleType()),
StructField("latitude", DoubleType()),
]
))
]
))
]
Adobe Experience Platform で使用するデータフレームを作成する場合は、フィールドが正しくマップされるように、階層構造が既存の XDM スキーマと完全に一致するようにすることが重要です。
ID の ID マップへの変換
ID の配列
[
{
"xdm:id": "someone1@example.com",
"xdm:namespace": {
"xdm:code": "Email"
}
},
{
"xdm:id": "2eeb6532-82e1-0d58-8955-bf97de66a6f5",
"xdm:namespace": {
"xdm:code": "CRMID"
}
},
{
"xdm:id": "2e3319208000765b-3811c00000000001",
"xdm:namespace": {
"xdm:code": "LOYALTYID"
}
}
]
マッピング
次の表に、ID の配列のマッピング要件を示します。
ID フィールド
identityMap フィールド
データタイプ
identities[0].id
identityMap[Email][{“id”}]
文字列としてコピー
identities[1].id
identityMap[CRMID][{“id”}]
文字列としてコピー
identities[2].id
identityMap[LOYALTYID][{“id”}]
文字列としてコピー
出力 XDM
以下に、XDM に変換された ID の配列を示します。
"identityMap": {
"Email": [{
"id": "someone1@example.com"
}],
"CRMID": [{
"id": "2eeb6532-82e1-0d58-8955-bf97de66a6f5"
}],
"LOYALTYID": [{
"id": "2e3319208000765b-3811c00000000001"
}]
}
recommendation-more-help
8066692e-aeb6-434e-8059-7e650e159186