---
title: "データ統合における重複を避ける"
date: "2012-04-30"
categories: 
  - "applications"
  - "data-integration"
tags: 
  - "data-integration"
  - "mapforce"
  - "missionkit"
  - "stylevision"
description: MapForceを活用して、データ統合プロジェクトをどのように進化するAPIに合わせて最適化できるかを探求します。革新的なマッピングを通じて、冗長性を最小限に抑えながら、より大きな価値を生み出す方法を解説します。
---
Status: #blog

Tags:  #data-integration #mapforce #missionkit #stylevision

Categories: [data-integration](/blog/ja/category/data-integration.md)
# データ統合における重複を避ける

インターネットは、非常に多くのデータを様々な興味深い用途に利用できるようにしています。しかし、あなたが独自に分析し、提示する情報が、あなたが直接管理していないものである場合、その情報元の所有者が将来的に同じ内容を公開するリスクがあります。その場合、あなたのアプリケーションは瞬時に陳腐化してしまう可能性があります。

当初、ご紹介したGrouponのAPIデータ分析プロジェクトにおいて、まさにそのような事態が発生しました [2011年8月](https://www.altova.com/blog/2011/08/processing-groupon-api-with-altova.html). 幸いなことに、私たちのプロジェクトの中核となるのは、次のものです [MapForceによるグラフィカルなデータマッピング機能](https://www.altova.com/ja/mapforce/mapping-interface.html). 私たちは、この設定を迅速かつ容易に調整し、再利用することで、全く異なるデータセットを表示し、新たな価値を提供することができます。

![MapForceおよびStyleVisionから生成されるHTML出力](https://lh4.ggpht.com/-Cljb05Xyph0/T5638l3TgOI/AAAAAAAAAzY/e2ZOHUuYI18/clip_image001%25255B1%25255D.png?imgmax=800 "HTML output from MapForce and StyleVision")

<!--more-->

私たちのプロジェクトは、当初、Grouponの割引クーポンが特定の店舗でのみ利用可能であるにもかかわらず、インターネットを通じて注文でき、ほとんどどこにでも商品を発送できることに気づいたことから始まりました。

我々は、MapForceを使用して、GrouponのAPIから、すべてのGroupon店舗で提供されている全ての割引情報を取得しました。その後、オンラインでのみ利用可能な割引を除外し、Altova [StyleVision](https://www.altova.com/ja/stylevision.html)を用いて美しくフォーマットされたHTMLページで、デスクトップおよびモバイルデバイス向けに表示しました。

最近、Grouponのウェブページの上部に新しく追加された「商品」タブにより、当社が独自に構築してきたデータ連携システムが完全に不要になりました。なぜなら、このタブを通じて、多くの場所にあるオンライン販売の商品に、すぐにアクセスできるようになったからです。

![Groupon メニューバー](https://lh6.ggpht.com/-orkQDLNQCSY/T563-EVvRvI/AAAAAAAAAzc/yA-Y-iOqQIA/clip_image003%25255B1%25255D.png?imgmax=800 "Groupon Menu Bar") 

さらに悪いことに、ほとんどの店舗で同じ商品が販売されているため、現在作成している地図データには、数十件もの重複した情報が含まれるようになりました。

**アプリケーションの再利用**

より広い視点で見ると、私たちの当初のプロジェクトの意義は今でも変わりません。Grouponは、地理的な条件に基づいてお得な情報を整理・表示しますが、時には、場所よりもそのお得な情報そのものが魅力的な場合があります。例えば、ペンシルベニア州アレンタウンへの旅行は必ずしもリストに入っているとは限りませんが、もしGrouponで、ポコノ・レーストラックをフェラーリ、ランボルギーニ、またはアストンマーティンで5～10周走行できるチケットが、通常価格の半額で提供されているとしたらどうでしょうか？

フェラーリのオファーはオンラインでの取引ではないため、商品タブには表示されず、また、当社のMapForceデータマッピングによっても選択されていません。今回のマッピング設計の新たなターゲットとして、オンライン取引として分類されていないすべての地域からのGrouponのオファーを収集しましょう。すぐに思い浮かばないような場所にも、きっと興味深い体験がたくさんあるはずです。以下は、APIからのデータ応答をフィルタリングし、オンライン取引を選択する元のデータマッピングの該当部分です

![MapForce マッピング機能で、オンラインの特別オファーを選択します](https://lh5.ggpht.com/-Ptb0HXebrqc/T563-k1EN7I/AAAAAAAAAzg/CIcr6nH_yfk/clip_image004%25255B1%25255D.png?imgmax=800 "MapForce mapping selects Online deals")

スクリーンショット中央にある「contains」関数は、取引内容の説明文の中に「`redemptionLocation`」という要素が含まれているかどうかを確認します。もしこの要素の中に「Online」という単語が含まれていれば、それはオンラインでの取引であることを示します。この関数が「true」を返す場合にのみ、その取引は次の処理に進みます。

右上に配置された論理演算「AND」は、オンラインでの割引情報と、要素「`isSoldOut`」の値を組み合わせて、まだ利用可能なオファーのみを選択します（`isSoldOut` = false の場合）。

収集したデータセットを簡単に逆転させることができます。その方法は、`contains`関数に続いて論理否定関数を挿入することです。新しいマッピングでは、`redemptionLocation`要素に「Online」という文字列が含まれていないすべての取引が選択されます。

![MapForce マッピング機能は、オンラインでのみ提供される割引プランを選択しません](https://lh3.ggpht.com/-l13YN4e-Ato/T563_kIuLDI/AAAAAAAAAzk/XGsRLiOmeR4/clip_image005%25255B1%25255D.png?imgmax=800 "MapForce mapping selects NOT Online deals")

データの構造が変更されないため、コンテンツのみが変更される場合、新しいマッピングを実行する前に、特に何か特別な準備をする必要はありません。以下に、フェラーリ関連のデータを示すXML出力の一部を示します

![MapForce XML出力の一部](https://lh5.ggpht.com/-dp5HsRJow_0/T564AKiKGLI/AAAAAAAAAzo/eHry_7Ow_vo/clip_image006%25255B1%25255D.png?imgmax=800 "Portion of MapForce XML Output") 

この出力ファイルをStyleVisionで処理し、元のスタイルシートを使ってHTMLドキュメントを作成することは可能ですが、ここではMapForceを使用している間に、さらに2つの機能を追加しましょう。

**重複データの削除**

新しい検索結果には、依然として重複した情報が含まれている場合があります。これは、同じ商品やサービスが、大都市の複数の地域で頻繁に提供されているためです。MapForceにインストールされているサンプルの一つに、DistinctArticles.mfdというマッピングがあり、これは、XMLノードに重複したデータが含まれている入力データから、重複を削除する方法を示しています。

私たちは、この例のデザインを簡単にコピーして、自社のGrouponページに適用することができます

![MapForceは、内容が重複しているXMLノードを削除します](https://lh5.ggpht.com/-kNbDk_pMp9M/T564A1OHw9I/AAAAAAAAAzs/YuYcMlJFKpc/clip_image007%25255B1%25255D.png?imgmax=800 "MapForce removes XML nodes with duplicate content") 

「タイトル」項目は、重複した取引を一意に識別するためのキーとして機能し、「計算時」変数によって、重複した取引のうち最初のものだけが、その後の処理のために送信されます。

もちろん、この重複排除の戦略を、オンラインでの商品情報の一覧にも適用することができます。これにより、ある地域における「商品」タブが、実際に提供されているすべてのオンライン商品情報を含んでいるかどうかを確認できます。（しかし、実際にはそうではありません。）

**データ並べ替え**

MapForce 2012 Release 2に新たに追加された機能により、データが出力ファイルに到達する前に、データの並び替えが可能になりました。以下は、その機能が適用されている部分の例です。この例では、まず「グルーポン」の店舗名でデータを並べ替え、次に各店舗内で「お得な情報」のタイトル順に並べ替えています。

![MapForceにおけるデータ並べ替え](https://lh4.ggpht.com/-aGsc77JuG5U/T564BtdPWcI/AAAAAAAAAzw/xYktjaMw2t0/clip_image008%25255B1%25255D.png?imgmax=800 "Data sorting in MapForce")

これで、マッピング処理が完了し、独自のStyleVisionスタイルシートを使用してXML出力ファイルを変換することで、HTMLドキュメントを生成することができます

![StyleVisionによって変換されたHTML出力](https://lh6.ggpht.com/-TbYmj47yh6A/T564CQgaXHI/AAAAAAAAAz0/7EJajx0u_KQ/clip_image009%25255B1%25255D.png?imgmax=800 "HTML output transformed by StyleVision")

高速なイタリア車を運転した後、美味しいイタリアの軽食をお得に楽しめるかもしれません！**MapForceとStyleVisionは、特別価格で提供されているAltova MissionKitにまとめて含まれています。MissionKitを使ってWeb APIからデータを統合するのがどれほど簡単か、ぜひご自身で確かめてみてください** [**30日間の無料トライアルをダウンロードしてください！**](https://www.altova.com/ja/download/missionkit/software_development_tools_enterprise.html)
