BigQuery 读取问题:未显示实际结果

Posted

技术标签:

【中文标题】BigQuery 读取问题:未显示实际结果【英文标题】:BigQuery read issue: not showing the actual result 【发布时间】:2020-02-21 17:41:29 【问题描述】:

我使用 Cloud DataprepBigQuery 中加载了一个未压缩的 CSV 文件。执行查询以进行分析时,数据未正确返回值。

例如,我的表中有数据tab_statusas shown here。当我这样做时:

SELECT * FROM tab_status

它显示所有值。但是,如果我查询值:

SELECT * FROM tab_status trim(lower(Status)) like '%active%'

它返回 null 并且没有给出任何结果。

我检查了大于字符串长度的长度(shown here):

SELECT DISTINCT trim(lower(Status)), length(trim(lower(Status))) FROM tab_status

现在,当我从 BigQuery 导出数据并在 Sublime 文本编辑器中打开它时,它会显示如下不同的格式:

6630 5f0a 0061 0063 0074 0069 0076 0065
000a 0068 0065 006c 0064 000a 0062 006f
0075 006e 0063 0065 0064 000a 0075 006e
0073 0075 0062 0073 0063 0072 0069 0062
0065 0064 000a 

谁能建议如何在 BigQuery 中处理这些数据,因为它在预览中正确显示。如何查询价值?有没有可用的转换/功能?

【问题讨论】:

很可能您加载了某种 unicode 或 bytestring,但并不清楚 utf-8 文本。 是的,我想是的。由于它在 bigquery 中正确加载,有什么方法可以读取/处理 dat Ain bigquery 吗?任何内置功能/转换? 一个更新。在旧 UI 中,我没有在数据中找到问题,但在新 UI 中,我可以找到一些垃圾数据。我尝试使用 bigquery REGEXP_REPLACE(status, r'([^\pASCII]+)', '') 删除 � 但它没有用。如果我使用 select REGEXP_REPLACE('�a�c�t�i�v�e�', r'([^\pASCII]+)', '') 那么它会给我活动但选择不同的 REGEXP_REPLACE( status, r'([^\pASCII]+)', '') 来自 tab_status 不起作用 您能否显示tab_status 的完整架构,包括每列的数据类型和模式? 【参考方案1】:

您的数据似乎是用 unicode 编码的。 BigQuery expects UTF-8 bytes。非 UTF8 字节基本上是使用 UTF-8 解码的,因此不能传达真正的含义。在将数据加载到 Bigquery 之前,您应该将数据转换为 UTF-8 字节。

我不确定您是如何生成数据的,但 here is a *** 线程解释了如何使用 Python 脚本将数据转换为 UTF-8。

【讨论】:

以上是关于BigQuery 读取问题:未显示实际结果的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache Beam 以 CSV 格式将 BigQuery 结果写入 GCS

连接 BigQuery 和 Google 表格 - 日期参数问题

如何关联多个 BigQuery 数组字段?

将 10 MB 数据上传到 Bigquery

数据流 BigQuery 读取未返回正确的数据类型

BigQuery 未准确返回结果