2017-03-17 17 views
0

私は2つのビューを持っています。 V1およびV2。私はcolumnNamesとそれぞれのDatatypeを持っています。 V1とV2の間でどの列(データ型)が結合条件になるかを知る方法はありますか?2つのテーブル間で結合可能なデータ型を調べる

例:

V1 - >

ID:整数

名:varchar型

DOB:日付

V2->

ID:BIGINT

給与:REAL

セックス:BOOLEANだから、私は、ユーザーに返す必要が結合を実行したい場合

V1 - > ID(整数)V2と結合することができます - > ID、給料。 (非ブールデータ型を用いて行うことができる参加ためセックスが存在しないことはできない)

同様V1 - >名前(VARCHAR)が(ID、給与)

と結合することができるように端部に、私はJSONを必要とします。 {ID:ID、給与} {名前:ID、給与}

2つのデータ型が結合可能かどうかを判断する方法はありますか?

ありがとうございました。

+0

結合で属性を使用することができるかどうかは、それぞれのデータ型に依存することが少なくなります。確かに、私はIDと年齢(両方ともintである可能性が高い)に参加することができますが、そうすることは理にかなっていません。 – HoneyBadger

+0

私はそれが理にかなっていないことを知っています。上記は単なる例です。私は属性(列)の名前に応じて正確な結合を把握する方法がないと感じているので、データ型に応じてユーザーが適切に選択するようにします。 –

+0

これがどのように問題になるか理解できません。あなたはビューにどのようなデータがあるのか​​分かりますか?それでは、なぜあなたはどのように参加するのか推測する必要がありますか? – HoneyBadger

答えて

0

実際にには、2つのテーブルが一緒になる方法を定義するデータモデルがありません。これは、ユーザーが任意にテーブル形式でデータを結合することができる「ユーザー側のレポートツール」のようなものです。

これはすばらしいことですが、潜在的な参加基準をどのように策定するかについて、厳しく、速いルールがないことを意味します。このような状況では、経験則、別名「ヒューリスティック」が必要になります。

このようなヒューリスティックスは多くのツールで実装されていますが、通常は「標準」には従わず、ほとんどの場合(少なくとも私が見た限りでは)常識に従います。このようなルールの 一つは確かです:

は「私はアヒルのように歩き、アヒルと鴨のような 鳴くように泳いで鳥を見ると、私は呼んでいる鳥アヒル」quote reference

私は、が少なくともドメインレベルでになるデータ型と一致させようとしています。したがって、時間 - 日付カラムは他の時間 - 日付カラムと一緒になり、マネーカラムは他のマネーカラムと一緒になり、アドレスカラムセットは他のアドレスカラムセットと一緒になります。

この種類の一致はではありません。は意味をなさない接続を見つけるのに役立ちますが、絶対に意味をなさないものを除外するのに役立ちます。 残念ながら、このアプローチは、データを格納するために使用されていた技術データタイプを見るだけではなく、かなり複雑です。たとえば、任意の種類のデータ型に日付を簡単に格納できます。テキスト列に格納されている日付はかなり一般的です。その場合、いつ試して調べる必要があります。

ヒントには、列名( '日付'、 'dt'、 '日'など)または実際の内容( 'YYYY-MM-DD'または 'DDMMYY' '....')。

同様のヒントが他の列タイプに対して存在し、適切なデータドメインを正しく予測することは、データ探索ツールの主なタスクの1つです。データが最も頻繁に乱雑であるため、これは簡単な作業ではありません。

これはあなたのためのHANA機能はありません。技術的なデータタイプ(単純なテストケースを超えて何かをカバーするにはあまりにも単純すぎる/愚かかもしれません)とヒューリスティック列エントリの正しいセマンティックドメインを推測する。

+0

提案してくれてありがとう@Lars。 1.整数型2.データ/時間3. Varbinary/BLOBパラメータ(Varbinary/BLOBパラメータ):データ型は、次の3つのカテゴリに分類されます。 。 は、ユーザーに選択するオプションを与えました。何らかの理由でユーザが間違った選択肢を選んだところで、すぐにバックエンドからエラーが発生した場合、エラーが発生します(エラー - これは問題ありません!) ありがとうございます。 :) –

関連する問題