2016-06-24 140 views
1

空の文字列を含むgz CSVファイルがあります。私がBQでインポートするとき、私は空の文字列として実際にそれらを必要としている間、私はNULLとしてすべてのこれらの空の文字列を取得します。私のCSVファイルでBigQueryで空の文字列をインポート

行は次のようになります。

ip,aahsjjjja,,,,u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 

私はNULLではなく、空のように、第3回4番目と5番目の列を必要としています。

インポート中にこれを行う方法を教えてください。

ありがとうございます! 詳しい情報を提供できるかどうか教えてください。

Load Jobのベスト、 ガリーナ

+0

ファイルはGCSにありますか?もしそうなら、フェデレーテッドソースを使用してロードして、ワンショットでフィールドを変換することができます。 –

答えて

0

チェックした構成のconfiguration.load.quoteプロパティを:

CSVファイルのデータセクションを引用するのに使用される値。 BigQuery は、文字列をISO-8859-1エンコーディングに変換し、最初の バイトのエンコードされた文字列を使用して、生のバイナリ状態でデータを分割します。 デフォルト値は(「"」)二重引用符で、あなたのデータは は、引用符で囲まれたセクションが含まれていない場合は、明確にするためempty string

にプロパティ値を設定する - 。あなたの例の行は

以下のようになります。
ip,aahsjjjja,"","","",u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 
+0

引用符を変更しても、BQがこれらのフィールドをどのように解釈するかは変わりません。これらのフィールドは引き続きNULLとしてロードされます。 –

+0

あなたのコメントはありませんでした。あなたはちょうどあなたの答えで同じ提案を繰り返した:o) –

+0

ああ、私は参照してください - あなたは私が引用文字の変更を示唆していると思った?いいえ、私はちょうどロードされたCSVで使用できることを指摘しました –

0

CSVに変換すると、BQがnullとして空の文字列を解釈し、null以外の空の文字列として""。あなたはCSVの生成方法を管理している場合は、取得するために""と空の文字列を置き換えることができます希望の結果。

もう1つの方法は、今のようにデータをロードしてから、クエリを実行してデータをクリーンアップすることです。次のようなものがあります。

SELECT ..., IFNULL(x, "") x, ... 
FROM table 

このような状況では、もう1つのステップが追加され、余分なクエリに費用がかかります。

+0

これは最初にやったと思ったものですが、テーブルのサイズと数が非常に多いので、この追加のクエリコストを避けることを望んでいました。しかし、これはやむを得ないことであると思われる。皆さん、ありがとうございました! –

関連する問題