0

リモートデータベースから時系列(ts)データをダウンロードし、データをcsvファイルとして保存するプログラムが1つあります。新しいTSデータは古いTSデータに追加されます。私のローカルフォルダは、より多くのデータがダウンロードされるにつれて、成長し成長し続けます。新しいTSデータをダウンロードして保存した後、そのデータをGoogle BigQueryテーブルにアップロードします。これを行う最善の方法は何ですか?Python/Pandas/BigQuery:新しい時系列データを多数使用して既存のテーブルを効率的に更新するにはどうすればよいですか?

私の現在の仕事の流れcsvファイルは私のローカルマシン上gzipファイルに変換し、その後、csvファイルにすべてのデータをダウンロードして、その後Google Cloud Storageにそれらのgzipファイルをアップロードするgsutilを使用することです。次に、Google BigQueryにあるテーブルを削除し、まずGoogle BigQueryの既存のテーブルを削除してから、新しいテーブルを手動で作成し、Google Cloud Storageからデータをアップロードして新しいテーブルを作成します。重要な自動化/改善の余地があるように感じますが、Google Cloudの初心者です。

編集:私がダウンロードしているデータは、Yahoo Financeからの時系列データをダウンロードすることができます。新しい日が来るたびに、ローカルマシンにダウンロードして保存する新しいデータがあります。 Google BigQUeryにあるすべてのデータをアップロードして、SQLの解析を行うことができます。

+0

[データ転送サービス](https://cloud.google.com/bigquery/transfer/)を見たことがありますか?それがあなたのために働くのだろうかと思います。 –

答えて

1

デイリーテーブル(またはパーティション)にデータを分割することを検討してください。それでは、当日からCVSをアップロードするだけです。

現在定義されているスクリプトは妥当と思われます。

  • タイムラインデータのソースからCSVの新しい日を抽出します。
  • 高速転送用にそれらをGzipします。
  • GCSにコピーします。
  • 現在の毎日のテーブル/パーティションに新しいCVSをロードします。

これにより、既存のテーブルを削除する必要がなくなり、必要なデータ量と処理量が削減されます。ボーナスとして、処理にエラーがある場合は1日を埋め戻す方が簡単です。

+0

私はこの考えが好きですが、あなたが新しい時系列を追跡することを決めたときはどうでしょうか。その時系列を最初にダウンロードすると、何日もの間にデータが得られるでしょう – user1367204

+0

今日、このケースを処理するための素晴らしい方法は、前日のロード操作なしではありません。この一括処理のケースをよりよくサポートするために、BigQueryの公開号トラッカーで機能リクエストを開くことができます。 –

関連する問題