LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-14

楽しよう!

とあるプロジェクトで、某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に移行してみましょう。

3
3
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
3
3