2017-06-11 10 views
0

私は最近このインタビューでこの質問をしました:各テーブルに空白で区切られた複数の単語が含まれている列textを含むSQLテーブルがあります。どのようにして、テーブル全体で発生頻度によって単語をソートするSQLクエリを記述しますか?データベース内のデータを分析するのは良い方法ですか?

SQLの初心者であるため、私は最も少なく言い表すのが難しいです。私はPythonスクリプトを通して簡単な解決策を考えることができます。私はこれを彼に提案しましたが、インタビュアーはSQLを純粋に使用したソリューションを求めていました。リアルタイムのストリーミングデータについてこのような迅速な分析を頻繁に行う必要があり、頻繁にデータダンプを取ってPythonでロードしたり、分析を行います。

実稼働環境で膨大なデータを扱う経験はあまりありません。そのため、インタビュアーが自分の推論で正当化されているかどうかを誰かに教えてください。どのようにこの問題を解決しますか?

+1

私の経験では、あなたがFAXの保存イメージほど有用であると説明したようなテーブルです。どの文書がどの文書に含まれているかを知ることは、文書が検索エンジンの主題であるため、インタビュアーが示唆しているほど重要である場合は、2番目の表(WordList:Id、Word)と3番目の表 '( Document_X_Word:DocumentId、WordId、Count)と 'trigger 'を使用して、文書が更新されるたびにこれら2つのテーブルが更新されるようにします。そして、あなたは素朴な検索エンジンを持っています。 –

+0

@BobKaufman:ああ大丈夫だよ。しかし、インタビュアーは、この種の分析のほうが多くのことを暗示していました。それでは、単語の頻度を知ることとは別に、9種類の分析を行う必要があります。毎月新しいタイプの分析が導入されるとしましょう。同じテーブルに対してさらに多くのテーブル(トリガ付き)を作成することをお勧めしますか? –

答えて

2

コメントが長すぎます。間違いなく、「SQLとExcelを使用したデータ分析」という本を作成し、コロンビア大学の「SQLとリレーショナルデータベースを使用したデータ分析」というコースを教えていることは間違いありません。明らかに、リレーショナルデータベースを使用して、多くの分析と優れた分析を行うことができます。

テキスト分析は、間違いなく実行できることの端にあります。単語からなる文字列は伝統的なリレーショナルデータではなく、データベースには文字列処理機能がありません。ほとんどのデータベースには、そのようなデータを逆索引に変換する何らかの方法があります(Bob Kaufmanがこのコメントに適切に記述しています)。しかし、句読点、単語形式、同義語を扱わなければならない場合、これははるかに複雑になります。感情分析、曖昧さ回避などはほとんどありません。

私は、インタビュー担当者が、データベースについて知っていることと、テキスト分析について知っていることについて、特定の解決策ではなく質問していると考えています(「逆インデックスに列を分割して使用します。インデックスはデータベースに依存します)。これは、両方のトピックを本当に理解しているかどうかを確認する方法です。

関連する問題