我正在嘗試將 csv 檔案從 Google Cloud Storage (GCS) 上傳到 BigQuery (BQ) 并自動檢測架構。
我試圖做的是啟用自動檢測模式并在“要跳過的標題行”選項中輸入要跳過的行數。我有 6 行,其中包含有關我需要跳過的資料的描述性資訊。第 7 行是我的實際標題行。
根據谷歌的檔案:https://cloud.google.com/bigquery/docs/schema-detect#auto-detect:
“欄位型別基于具有最多欄位的行。因此,只要每個列/欄位中至少有一行資料具有值,自動檢測就應該按預期作業。 ”
我的 CSV 的問題是,在行中有空值的意義上,上述條件不滿足。
此外,我的 CSV 包含許多不包含任何數值的行,我認為這為 Google 的架構自動檢測增加了額外的復雜性。
自動檢測未檢測到正確的列名或正確的欄位型別。所有欄位型別都被檢測為字串和列名,分配如下: string_field_0 , string_field_1 , string_field_3 ,...等。它還將我的 CSV 的列名作為一行資料傳遞。
我想知道我可以做些什么來正確將此 CSV 上傳到 BQ,并跳過前導不需要的行并具有正確的架構(欄位名稱和欄位型別)。
uj5u.com熱心網友回復:
您可以嘗試使用bigquery-schema-generator等工具從 csv 檔案生成架構,然后在bq load作業中使用它。
uj5u.com熱心網友回復:
在閱讀了一些檔案之后,特別是CVS 標題部分,我認為您所觀察到的是預期的行為。
另一種方法是手動指定資料的架構。
uj5u.com熱心網友回復:
通過在要跳過的行數中包含我在 csv 中的實際標題行來解決這個問題。
我實際上需要跳過 6 行。第 7 行是我的標題(列名)。我在標題行中輸入 6 以跳過。
當我輸入 7 而不是 6 時,自動正確檢測到架構。
另外,我意識到在谷歌檔案中的這句話中:“欄位型別基于具有最多欄位的行。因此,只要至少有一行資料具有以下值,自動檢測就應該按預期作業每列/欄位。”,空值被認為是值,因此這實際上并沒有導致上傳到 BQ 的問題。
希望這可以幫助面臨同樣問題的人!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/455924.html
