如何更改 Google BigQuery 的位置

数据挖掘 数据清理 CSV 谷歌云
2022-03-01 12:17:23

所以,我第一次尝试在我的项目中使用 Google BigQuery,我有点困惑。文档没有多大帮助,从谷歌的博客文章来看,由于当前的流行病,谷歌的所有员工似乎都走了

我在他们的澳大利亚服务器中有几个 .csv 文件,其中包含上传到谷歌云存储的未标记数字数据表。我想做的是使用 BigQuery 执行 k-means 聚类和分析变量之间的相关性。但是,我在尝试将数据传输到 BigQuery 时遇到问题。

我尝试使用“数据标签”选项卡创建一个像他们的文档建议的数据集,但它一次只能读取一个 CSV(我想将所有 CSV 合并到一个数据集中),并且似乎没有一种数据类型适合乍一看,唯一匹配的是“文本”。然而,一旦它完成了它的过程,看起来结果数据集是空的,因为原始 CSV 有数百行和数十列。我也尝试使用“表格”选项卡创建数据集,但它给了我一条错误消息,提示我需要将我的模型与我的数据放在同一区域,我看不出如何解决这个问题;它似乎给我的唯一选择似乎是“全球”和“欧盟”,所以我不确定如何将其设置为“澳大利亚”。

有没有人对如何解决这个问题有任何想法?

数据排序的匿名版本看起来像这样(但实际的 CSV 更大,有更多的行和列):

Item_ID,From_Position,To_Position,Data_One,Data_Two,Data_Three AA22DDA002,103,104.0,182.35643356,8.12345678,-2.32453256,0.03234213 AA22DDA002,104.0,105.0,483.23424678,3.34627319,-4.37600000

1个回答

根据我对 CSV 有多挑剔的经验,我强烈怀疑存在编码问题。如果遇到非法字符或无法识别,许多 CSV 阅读器只会丢弃数据。我不知道 BigQuery 在这方面做了什么,但考虑到他们在加载 CSV 文件方面的帮助,值得一试以确保您的数据是干净的,并在尝试其他任何事情之前根据 BigQuery 的需要。

限制

将 CSV 数据从 Cloud Storage 加载到 BigQuery 时,请注意以下事项:

  • CSV 文件不支持嵌套或重复数据。
  • 如果您使用 gzip 压缩 BigQuery 无法并行读取数据。将压缩的 CSV 数据加载到 BigQuery 比加载未压缩的数据要慢。
  • 您不能在同一个加载作业中同时包含压缩文件和未压缩文件。
  • 加载 CSV 或 JSON 数据时,DATE 列中的值必须使用破折号 (-) 分隔符,并且日期必须采用以下格式:YYYY-MM-DD(年-月-日)。
  • 加载 JSON 或 CSV 数据时,TIMESTAMP 列中的值必须使用破折号 (-) 分隔符作为时间戳的日期部分,并且日期必须采用以下格式:YYYY-MM-DD(年-月-日) . 时间戳的 hh:mm:ss(小时-分钟-秒)部分必须使用冒号 (:) 分隔符。

CSV 编码

BigQuery 要求 CSV 数据采用 UTF-8 编码。如果您的 CSV 文件包含以 ISO-8859-1(也称为 Latin-1)格式编码的数据,则应在加载数据时明确指定编码,以便将其转换为 UTF-8。

CSV 文件中的分隔符可以是任何 ISO-8859-1 单字节字符。要使用 128-255 范围内的字符,您必须将该字符编码为 UTF-8。BigQuery 将字符串转换为 ISO-8859-1 编码,并使用编码字符串的第一个字节将数据拆分为原始二进制状态。

BigQuery 需要UTF-8,您提供CP-1252在我看来,CP-1252 现在应该已经灭绝了。所以要么它看起来像这样,要么你有一个不太关心遵循最新标准的程序(那些存在,我每天都使用其中一个)。

此外,请确保您的本地化设置正确。一些 CSV 以;代替分隔,,一些语言环境考虑,千位分隔符,而另一些则将其视为小数分隔符。因此,请验证您的 CSV 的语言环境是否与您的架构的语言环境相同

您的默认位置可以在 .bigqueryrc 文件中设置。可以使用bq命令设置架构的位置,如下所示:

bq --location=location load \
--source_format=format \
project_id:dataset.table_name \
path_to_source \
schema

在哪里:

  • location是您所在位置的名称。--location标志是可选的。例如,如果您在东京地区使用 BigQuery,则可以将标志的值设置为asia-northeast1您可以使用.bigqueryrc 文件为该位置设置默认值
  • 格式为NEWLINE_DELIMITED_JSONCSV
  • project_id:dataset.table_name 是您的项目 ID。
  • project_id:dataset.table_name 是包含要加载数据的表的数据集。
  • project_id:dataset.table_name 是要加载数据的表的名称。
  • path_to_source 是 CSV 或 JSON 数据文件在本地计算机或 Cloud Storage 中的位置。
  • schema 是内联模式定义。

例子:

输入以下命令以从默认项目中命名myfile.csv为的本地 CSV 文件加载数据。mydataset.mytable模式是手动内联指定的。

bq load \
--source_format=CSV \
mydataset.mytable \
./myfile.csv \
qtr:STRING,sales:FLOAT,year:STRING

更多关于地点的信息


根据您提供的详细信息,您的编码和语言环境都值得怀疑。