【问题标题】:BigQuery load - NULL is treating as string instead of emptyBigQuery 加载 - NULL 被视为字符串而不是空
【发布时间】:2017-09-01 13:27:43
【问题描述】:

我的要求是从不同来源(Facebook、youtube、双击搜索等)提取数据并加载到 BigQuery。当我尝试提取数据时,在某些来源中,当列为空时,我得到“NULL”。

我尝试将相同的数据加载到 BigQuery,而 BigQuery 将其视为字符串而不是 NULL(空)。

现在在加载到 BigQuery 之前替换存在 NULL 的“”(空字符串)。除了这样做之外,还有任何方法可以直接加载文件而无需任何操作(替换)。

谢谢,

【问题讨论】:

  • 你是如何加载数据的?通过命令行还是使用任何编程语言?
  • 您好,我正在使用 python API 加载到 BigQuery。
  • 您介意分享一些代码吗?这很重要,因为至少有两个 python 包用于加载数据,我只是想确保我知道你使用的是哪个。
  • 有一个加载选项可以用于这种情况:configuration.load.nullMarker cloud.google.com/bigquery/docs/reference/rest/v2/…
  • 有没有办法从 Web 控制台加载它?我的经理有时很想通过控制台加载相同的数据。

标签: google-bigquery google-cloud-platform


【解决方案1】:

源文件的文件格式是什么? CSV、新行分隔的 JSON、Avro 等?

原因是 CSV 将空字符串视为空值,而 NULL 是字符串值。因此,如果您不想在加载之前操作数据,则应将文件保存为 NLD Json 格式。

正如您提到您正在从社交媒体平台提取数据,我假设您正在使用他们的 REST API,因此您可以将这些数据保存在 NLD Json 而不是 CSV 中。

回答您的问题我们有没有办法从 Web 控制台加载它?: 是的,转到您的 bigquery 项目控制台 https://bigquery.cloud.google.com/ 并在数据集中创建表,您可以在其中指定源文件和表架构详细信息。

来自评论部分(为方便其他观众):

bq 命令中是否有任何选项可以解决这个问题?

试试这个: bq load --format=csv --skip_leading_rows=1 --null_marker="NULL" yourProject:yourDataset.yourTable ~/path/to/file/x.csv Col1:string,Col2:string,Col2:integer,Col3:string

【讨论】:

  • 感谢 Pulkit 的回复。您在 Web 控制台中说它可能,但后面的部分我没有得到。我知道如何通过 Web 控制台创建表格。是否可以选择在通过 Web 控制台上传时将 NULL 视为空而不是字符串。正如张华所说,我们在通过 API configuration.load.nullMarker 拉取时有一个选项,这样就有一个选项。
  • 我认为控制台中没有更改“configuration.load.nullMarker”的选项。它应该遵循每种文件格式的默认配置。
  • 感谢 Pulkit 的回复。 bq 命令中是否有任何选项?
  • 尝试类似:bq load --format=csv --skip_leading_rows=1 --null_marker="NULL" yourProject:yourDataset.yourTable ~/path/to/file/x.csv Col1:string,Col2:string,Col2:integer,Col3:string
  • 如果列是字符串没有任何问题。假设列是浮点数或整数,那么它会抛出错误。
【解决方案2】:

您可以考虑运行类似以下的命令: bq load --field_delimiter="\t" --null_marker="\N" --quote="" \ PROJECT:DATASET.tableName gs://bucket/data.csv.gz table_schema.json

更多详细信息可以从对“将数据从 MySQL 迁移到 BigQuery 的最佳实践”question 的回复中收集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多