新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Google BigQueryのNode.js SDKで、Cloud Storageの複数のファイルをまとめてロードする方法

Google BigQueryに、Google Cloud Storageのファイルをロードする時、複数のファイルをまとめてロードすることができます。

しかし、それをGoogle BigQueryのNode.js SDKでやろうとしてハマったので、そのメモ書きです。

概要および問題点

  • table.createLoadJob()を使ってロードします。
  • ファイルは1番目の引数に、Cloud StorageのFileオブジェクトを指定します
  • ファイルが1つだけの場合、Fileオブジェクトを1つだけ渡します
  • ファイルが複数の場合、Fileオブジェクトの配列を渡します

しかし、TypeScriptの型定義では、ファイルが1つの場合しか書かれていないため、そのままFileの配列を渡すとエラーになってしまいます。

手順

キャストでFileの配列をanyにしてエラーがでないようにして渡します。

Googleのサンプルを修正すると、下記のような形になります。

await table.createLoadJob(
    (
        [
            storage.bucket('institutions').file('2011.csv'),
            storage.bucket('institutions').file('2012.csv')
        ]
    as any)
);

感想など

ドキュメントにはFileオブジェクトは1つとあるのですが、サンプルには複数オブジェクトを渡す例がありました。

ソースを見ると、1ファイルorファイル配列の、どちらでも大丈夫なようにで書かれているのですが、型定義で1つしか設定されていないため、そのままではコンパイルで弾かれてしまいます。

ファイル1つづつロードすることも可能なのですが、BigQueryは1日のロード回数に上限があるので、大量のファイルがある場合はまとめて上げたく、それができないと辛いです。

関連カテゴリー記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com