2022.06.02 コラム
CDPデータ連携時の注意点!CSVを扱う場合
はじめに
CDPでデータ連携をする際に、S3やGCSといったストレージ経由の連携でCSVを扱うことが多くあるかと思います。
その際、CSVの作り方に注意しないと、データ連携時にエラーが発生することがあります。
今回は、CSVでデータ連携をする際の注意点を、実際に起きた連携エラーの事例を交えながらご紹介します。
CSVとは
CSVとは、Comma-Separated Valuesの略で、カンマで値が区切られたファイルを指します。
【CSVファイル イメージ】
"member_id","gender","age","residence"
"A00134","女性","20代","東京都"
"A00278","男性","30代","神奈川県"
【テーブルとしてCDPに取り込んだ際のイメージ】
このように、列をカンマ(,)で区切りって定義します。
また、行の終わりは改行コード(CRLF/LF)で定義します。
CSVを掃き出すシステムによってデフォルト値は異なりますが、基本的にデータの値(主に文字列)は囲み文字のダブルクオート(“)で囲みます。
CSV作成時の注意点
前述のフォーマットがCSVの基本形式となりますが、データの値の中に含まれる文字によって、エラーが起きてしまうことが多々あります。
注意点について、過去に実際に起きたトラブルを基にご説明します。
<エラー① 一部行の列数が異常値でデータが正常に取り込めない>
このケースはいくつかの要因があります。過去実際に起きたパターンをご紹介します。
● 囲み文字なし、データの値にカンマが含まれている
エラーが発生したCSVファイルのイメージは以下の通りです。
1行目のworkplaceに「Example Co., Ltd」という形で区切り文字のカンマ(,)が入っています。
【CSVファイル イメージ】
member_id,gender,age,residence,workplace
A00134,女性,20代,東京都,Example Co., Ltd
A00278,男性,30代,神奈川県, Example2 Inc.
【テーブルとしてCDPに取り込んだ際のイメージ】
CSVはカンマ(,)で区切られているので、囲み文字が無い場合、5列目は「Example Co.」で区切られてしまい、結果6列目の値「Ltd」ができあがってしまいます。
ヘッダーや2行目は6列目が無く、1行目の列数が異常と判断され、取り込み時にエラーが起きてしまいます。
以下のように、エラー対象となっている値、もしくはすべての値に対して囲み文字を追加することでエラーは解消します。
【CSVファイル イメージ】
"member_id","gender","age","residence","workplace"
"A00134","女性","20代","東京都","Example Co., Ltd"
"A00278","男性","30代","神奈川県","Example2 Inc."
【テーブルとしてCDPに取り込んだ際のイメージ】
● 囲み文字なし、データの値に改行コードが含まれている
エラーが発生したCSVファイルのイメージは以下の通りです。
1行目のworkplaceに「Example Co. <CRLF>Ltd」という形で改行コードが入っています。
【CSVファイル イメージ】
member_id,gender,age,residence,workplace<CRLF>
A00134,女性,20代,東京都,Example Co. <CRLF>Ltd<CRLF>
A00278,男性,30代,神奈川県, Example2 Inc.
※改行コードは実際には<CRLF>と表示されませんが、今回は分かりやすく<CRLF>と記載しています。
【テーブルとしてCDPに取り込んだ際のイメージ】
CSVはCRLF(またはLF)で行の終わり(改行)が定義されるため、囲み文字が無い場合、改行コードは値として認識されず、「Example Co.」と「Ltd」の間で改行されてしまいます。
結果、2行目は1列だけの異常なレコードと認識され、取り込みエラーが起きます。
こちらも先ほどご説明したパターンと同様に、エラーが起きている値、もしくはすべての値に対して囲み文字を追加することで解消します。
【CSVファイル イメージ】
"member_id","gender","age","residence","workplace"<CRLF>
"A00134","女性","20代","東京都","Example Co. <CRLF> Ltd"<CRLF>
"A00278","男性","30代","神奈川県","Example2 Inc."
※改行コードは実際には<CRLF>と表示されませんが、今回は分かりやすく<CRLF>と記載しています。
【テーブルとしてCDPに取り込んだ際のイメージ】
<エラー② 値にダブルクオートが入ることによるエラー>
エラーが発生したCSVファイルのイメージは以下の通りです。
今回は囲み文字ですべての値が括られている状態で、2行目のworkplaceの値に「Example“2” Inc.」という形で囲み文字のダブルクオート(”)が入っています。
【CSVファイル イメージ】
"member_id","gender","age","residence","workplace"
"A00134","女性","20代","東京都","Example Co., Ltd"
"A00278","男性","30代","神奈川県","Example"2" Inc."
【テーブルとしてCDPに取り込んだ際のイメージ】
実際にはダブルクオートの後にカンマがないので、上記テーブルイメージのように「2” Inc.」は列として認識されませんが、囲み文字で囲まれている「Example」が一つの値と認識され、その後の文字列が異常として判断されエラーが発生するパターンです。
このように、値の中に囲み文字が入ってくるパターンは、ダブルクオートを二重化し、エスケープすることで値として認識されるようになります。
【CSVファイル イメージ】
"member_id","gender","age","residence","workplace"
"A00134","女性","20代","東京都","Example Co., Ltd"
"A00278","男性","30代","神奈川県","Example""2"" Inc."
【テーブルとしてCDPに取り込んだ際のイメージ】
このように、データの値に区切り文字(,)、囲み文字(”)、改行コードが入る際は、囲み文字で値を囲むこと、またダブルクオートは二重化してエスケープすることが重要です。
さいごに
今回は、CDPのデータ連携時にCSVを作成する際の注意点をまとめました。
基本的な内容ではありますが、意外と知らなかったり、つい見落としてしまいがちな観点かと思いますので、改めてご認識頂きご注意いただければと思います。
DataCurrentでは、データ活用支援はもちろんのこと、CDP構築やデータ連携におけるサポートも提供しています。
お困りの際は是非お気軽にご相談ください。
》CDP総合支援サービス ~構想・構築・活用~ のサービス資料はこちら
本件に関するお問い合わせは下記にて承ります。
株式会社DataCurrent
info@datacurrent.co.jp