clock2017.05.01 08:54
SERVICE
home

Web API からの取得結果をデータベースに登録する処理をノンプログラミングで実現する|Talend Open Studio によるビッグデータ分析(第12回)

AUTHOR :   ギックス

TOSを使えば非構造化データから構造化データへの変換が容易

弊社で Talend Open Studio (以下、TOS) を本格導入してから1年半。現在はETL処理の「Transform(変換・加工)」処理にはなくてはならない存在になっています。最近では「Transform(変換・加工)」だけでなく、ETL処理全体の自動化バッチの開発としてTOSを導入しています。今回はその中の変わった事例として、Web API データの取得についてご紹介します。(詳細なTOSの使い方については過去の記事をご参照ください)

Web APIのデータベース登録を3つのコンポーネントだけで実現する

一般的なデータベースのデータインポート処理ではCSVファイルのようにデータファイルの実体がある場合が殆どです。しかし、Web API を使用して情報取得をする場合、問合せ専用のURLを使用し、インターネットにアクセスして返ってくる通信結果情報を取得することになります。そのため、データファイルのような実体がなく直接見ることはできません。

更に返ってくる通信結果情報は、表形式の構造化データではなく、JSON形式のような非構造化データであることが殆どです。そのため、構造化データであるデータベースのテーブルに登録するためには、データ加工を行う必要があります。(参考:[graffe]構造化データと非構造化データとデータの規則性|データ分析用語を解説)

上記のようにWeb APIからデータ取得してデータベースに登録ためには場合、以下の技術が必要になり、一般的にはプログラミングによってシステムを構築します。

  • インターネット通信技術
  • 非構造化データから構造化データへの構造変換技術
  • データベースのテーブルへの登録技術

しかし、TOSには、400個以上の優れたコンポーネントパーツがあるため、これらのコンポーネントを下記のようにETL処理の各ステップに配置することによって、ノンプログラミングで一連の処理を行うことができます。talend_webapi1

以下は、上記の各コンポーネントごとの詳細な説明です。

Extract(抽出):tHttpRequest

Web API に対してインターネット通信を行い情報取得するコンポーネントが「tHttpRequest」です。指定されたURI(または、URL)を設定することでHTTP通信を行い、取得結果を文字列として受け取ることができます。また、「tREST」コンポーネントも同様の処理が行えます。違いはtHttpRequestコンポーネントはヘッダー情報を指定できるのに対し、tRESTコンポーネントはPOSTパラメタなどを指定することができます。

Transform(変換・加工):tExtractJSONFields

Web API から取得した非構造化データのJSON文字列を表形式の構造化データに変換するコンポーネントが「tExtractJSONFields」です。JSON文字列から情報を抽出する方式の中にXPathがありますが、このコンポーネントはXPathを画面上で設定できるものです。

コンポーネント画面では、変換する文字列フィールドを「JSONフィールド」、出力単位のノードを「ループJSONパスクエリー」、そして、各項目に設定するノードを設定します。Web API のJSON文字列の場合、それほど複雑にはならない事が多いため、下記のように非常にシンプルな形になると思います。talend_webapi3

Load(登録):tJDBCOutput

構造化データをデータベースのテーブルに登録するためのコンポーネントが「tJDBCOutput」です。このコンポーネントは「第6回:DB間のデータコピーを2つのコンポーネントだけで行う」の「tPostgresqlOutput」コンポーネント同様の設定や動作を行うものですが、JDBCドライバを任意の物に設定できるところが違います。そのため、最新のJDBCドライバを使いたい場合や、TOSで対応していないデータベースを使いたい場合は、tJDBCOutputコンポーネントの方が汎用性は高いです。

Web API の取扱い時に面倒なJSONデータ変換処理も視覚的に行える

今回、ご紹介した3つのコンポーネントを使うことで Web API の情報をデータベースのテーブルに登録することができるようになります。また、TOSの作成したジョブはJavaの実行ファイルとしてエクスポートできるため、毎日、定期的にWeb APIから情報取得するバッチも簡単にできます。(参考:第8回:Talendがバッチ処理の開発方法を変える ~スマートな開発を行おう~)

今回は単純な Web API のJSONデータでしたが、XMLデータでも同様の処理が行えます。また、複雑なデータ形式の場合は、TOSのメタデータ作成機能を使用することで、下記のようにXPathを知らない人でも、マウス操作だけで変換設定を行え、プレビューで出力結果の確認もできます。talend_webapi2

TOSを1年以上使用し、TOSが「得意な処理」「不向きな処理」がなんとなく分かってきました。不向きな処理については次回以降に触れるとして、今回のようなデータ構造変換やフィルタリング、そしてデータベースやファイルなどの入出力処理では、プログラムでフルコーディングを行うより圧倒的にTOSの方が速く、誰が見ても分かりやすく作れると思います。

【連載、Talend Open Studio によるビッグデータ分析】
  1. ”Talend”と”RapidMiner Studio”、2つのETLツールを比較してみた
  2. Talendのインストールと初期設定(Windows 8.1編) ~Javaのバージョンに気を付けろ~
  3. Talendで簡単なジョブの作成
  4. フォルダ中のファイルを変換して1つにまとめる
  5. フィルタリングと文字列置換とプログラムによる変換方法
  6. DB間のデータコピーを2つのコンポーネントだけで行う
  7. Amazon Redshiftへのデータインポートを2つのコンポーネントだけで行う
  8. Talendがバッチ処理の開発方法を変える ~スマートな開発を行おう~
  9. Talendの無償版(TOS)と有償版(Enterprise)の違い
  10. TOSを使ってMicrosoft Azure SQL Data Warehouseを操作する
  11. TOSでギガ単位の適切なテストデータを作成する
  12. Web API からの取得結果をデータベースに登録する処理をノンプログラミングで実現する (本稿)
SERVICE