2017-07-26 4 views
0

私は約10のデータソースを持っています。私はAccess DBで集計して、Tableauダッシュボードのセットを供給しようとしています。ファイルにはすべて従業員データが含まれていますが、問題はEmployee_Nameがファイル全体で一貫性がなく、一意のIDを持つファイルが1つしかないため、必要な結合を実行できません。MS-Access:ユニークIDのないデータを消去するためのテキスト列変換

すべてのファイルに共通のEmployee_IDでソースデータを取得するのが最善の解決策ですが、私がそれを得ることができるかどうかはわかりません。

FISHER, BOBBY M 
FISHER BOBBY 
FISHER, BOBBY M L 
Fisher, Bobby M 
Fisher Bobby M 
Bobby M Fisher 
Bobby Fisher 
Bobby Fisher (note: two spaces) 
Fisher Bobby M Jr. 

And just to make it really fun: 
Fisher, Bob Jr. 

を次のように

は現在、名前の形式は、したがって、すべてのこれらの名前が等価であり、それが存在する場合、すべて同じEmployee_IDの下に参加しています。

私はStrConv(Replace(Replace([Employee Name],",",""),".",""),3)のような式を書くことができますが、矛盾のいくつかを処理することができますが、すべてのテーブルでそれを実行しても、BobとBobbyを捕まえなくても、最終的には、やや強固で一貫性のあるEmployee_Nameで参加することになります。

テーブルごとに一意のIDを割り当てるルックアップテーブルを作成することもできますが、元のデータに人を追加するとすぐに恐ろしい解決策になります。

誰かがこれにアプローチする方法について他のアイデアを持っているのですか、それとも私が一意のIDを取得するだけでいいのか、そうでなければ持続可能な解決策は実際にはありえません。

+0

名前はひどい固有の識別子を作成します。他の一意のIDを主張してください。データを修正してください。 – June7

+0

名前の部分は別々のフィールドに入れる必要があります。 – June7

答えて

0

ここで私が始めようとしているのは、すべてのドットカンマと余分なスペースを削除し、名前を部分文字列に分割し、2つの最長文字を保持します。うまくいけば、あなたの名字です。反対仕訳の各チェックを比較する(StringA1=StringA2 AND String B1=StringB2) OR (StringA1=StringB2 AND String B1=StringA2)。それは完全な姓と名のためのすべての試合を取得する必要があります。

データのサイズによっては、未解決の一致の残りが手動で十分に小さくなることがあります。そうでない場合は、等価ではなくStringA1 LIKE "*" & StringA2 & "*"などのチェックを開始する必要があります。

できるだけ多くのコードを実行し、残りの部分を手動で修正することが目的であれば、ほとんどの場合それが得られます。完全に自動化された反復可能なプロセスが必要な場合は、完全な元のデータを待つほうがよいでしょう。

関連する問題