Magento2のCSVを楽に作る ビッグデータ用ツール「Talend」を便利に使おう


楽しよう!

とあるプロジェクトで、某ECからMagento2へ移行することになりました。
同じECの異なるバージョンでもめんど……もとい大変なデータ移行。CSVでインポートするのは常套手段かと思いますが、けっして面白くない、しかも厳密な行列データを、何度も作り直すのは厭ですよね。私は厭なのです、めんどくさいし。間違えるし。

そんなとき、便利なのが「Talend」というソフトウェアです。これで楽しましょう、らくちん素敵。
※画像にぼかしが入っているのが感じ悪くてすいません、SSDがエラーを吐くという災難に見舞われまして、急きょ用意しました。

Talendってなに?

Talendウェブサイトには、「リアルタイムオープンソースデータインテグレーションソフトウェア」とあって、すごいんですけど……今回注目するのは「オープンソース」と「データインテグレーション」。Talendウェブサイトをみると、たくさんある製品のうち、今回使うのは商用版では「データ統合」、オープンソース版は「Talend for Data Integration」。
ビッグデータ用に作られたアプリケーションなので、扱えるデータ量は大きいです。処理内容やマシン性能も依存しますが、経験では2万件くらいのデータ作成も10秒未満で終わりました。
ちなみに上記のデータはビッグじゃないですし、私は本当のビッグデータなんて扱ったことがありません。Web開発でデータ量が問題になるケースは、あるのか、な。あったら……お察し申し上げます。

Eclipseで作られているので、動かすにはJAVAが必要で、ときに文字列変換などにJAVAを使うハメにはなりますが、JAVA素人の私もできるので大丈夫でしょう。JAVAになじんだ方なら、ライブラリを読み込んで込み入ったこともできます。

何ができるの?

様々なデータベースやCSV、エクセルなどからデータを引っ張って、任意のスキーマをもつデータを生成することができます。つまり「旧ECデータから、Magento2用CSVが作れる」ということです。
Talendは、データベースに直接データを流し込むこともできますが、Magentoシリーズはデータの挿入先が多岐にわたるので、CSVにすることでMagento用データたることを担保しました。

GUIでサクッ(?)と

ちょっと羊頭狗肉な小見出しでして、それほどサクッとはいきません。
Magentoは商品に属性(attribute)を追加するとCSVの項目が増えますし、プロジェクトに応じたカスタマイズや、モジュールがあるはず。CSVのスキーマはケースバイケースなので。それでも、使ったほうが楽ちんだと申し上げます。
画面を見てみると、

alt

こんな感じ。画像では左がスタート、右がCSVエクスポートです。最適化してないので長くて申し訳ない。
さわりを説明すると、緑の枠でカテゴリーデータベースを読み、赤い枠がカテゴリ名を参照。それらがくっついた矢印マーク(tJoin)で、「category_id, category_name」のデータを作成しました。
次の青い枠(tMap)では、プロダクトデータベースを読み、上記を参照してプロダクトとカテゴリ名がセットになったデータを生成しています。
tMapは、SQLでいうJOINや、行の入れ替えが簡単にできるので、よく使う機能です。中をちょっと見てみますと、

alt

左(元のデータベース)を、右(希望のやつ)にマッピングしています。
ほかに、「データベース上で”消去済み”カラムがTrueなら、その行はフィルタする」とか、「日本語の生産国を国名コードとアルファベットに置換する」(参照でJOINしてもOK)など、作業を希望のスキーマに当てはまるよう繰り返すとMagento用のCSVができあがります。
できあがりは、こんな感じ。

alt

エクセルだっと間違えそうなデータが、ボタンをポチっとするだけで生成されます。素敵じゃないですか? 今回のプロジェクトでは、400件程度の商品CSVが、5秒でできあがりました。

ちょとしたコツ

もちろん一発で完璧なことはないので、トライ&エラーの繰り返しは必要です。コツがあるとすれば、

  1. 一度にたくさんの行をインポートするのは、とくに最初はやめましょう。まずエラーが出るので、へこみます
  2. 取っておくとお得そうな項目は消さないでおきましょう。開発を進めるとCSVの項目は増加することが多いので、最終段階でtMapをつかって求めるCSVにしましょう
  3. 2に関連して、ちょっとしたパズルみたいに、置換や参照を使うとJAVA初心者にもDBノービスにも楽ちんです。ビッグじゃないデータなら処理がちょっと増えてもOKです、たぶん
  4. お客様のデータが入っているデータベースなどは、安全な場所にインポートしてからやりましょう。苦手な人は、インフラ系の人に相談しましょう
  5. ヒマなときに触って慣れておき「あ、こういうケースに使えるのかー」という感触を味わっておくと、気が滅入りません

おわりに

駆け足で紹介して、さわりだけ説明になりましたが、「こりゃ、楽そうだな」と思っていただければ幸いです。親しみやすいソフトウェア……とは言いがたいところもありますが、いろんなケースに応用可能。実際、私はないと不便でしょうがないです。
ちなみに、つくったJobをエクスポートすると、JAVAが動く環境なら単体で動くアプリケーションとしても使えます。素敵ー!

ということで、使ってみませんか? Talend。そしてMagento2に移行してみましょう。