Avro 日期和时间与 BigQuery 的兼容性吗?

2023-11-21

BigQuery 通常在加载 Avro 数据方面做得很好,但“bq load”在处理时间戳和使用 Avro 逻辑类型属性的其他日期/时间字段时遇到很多麻烦。

  1. 当 BigQuery TIMESTAMP 将 Avro 类型 timestamp-millis 的数据解释为微秒时间戳(相差 1000)时,我的数据会被破坏。
  2. 可加载到 TIMESTAMP 中的时间戳微整数在 BigQuery DATETIME 中变为无效。我找不到有效的解释https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
  3. ISO8601 格式的字符串无法加载到 TIMESTAMP 或 DATETIME(不兼容类型错误),但我认为如果我加载纯 JSON,BigQuery 会支持这一点。
  4. Avro“日期”类型无法加载到 DATE(也是不兼容的类型)。

我想我可以通过始终将数据加载到临时字段并使用查询来 CAST 或将它们转换为其他字段来解决这些问题,但这不能很好地扩展或支持模式演变或流。在 Avro 中使用定义良好的模式生成数据应该可以避免为不同消费者再次转换数据的额外步骤。

BigQuery 真的与 Avro 日期和时间不兼容吗? (或者我在做一些愚蠢的事情)

或者“bq load”是这里的问题吗?有没有更好的方法来加载 Avro 数据?


更新:现已支持该功能,关注issuestracker.google.com/35905894了解更多信息。

正如 Hua 所说,BigQuery 不支持 Avro 逻辑类型,但支持使用时间戳加载 Avro 数据的方法是使用 LONG Avro 类型将数据加载到具有 TIMESTAMP 列的现有 BigQuery 表中。此外,该值应该是来自 EPOCH 的微秒(而不是秒或毫秒)。例如,下面的 Avro 文件有一个 LONG 字段,其值为 1408452095000000,表示“2014-08-19 12:41:35”。

Avro 文件的架构:

% avro-tools getschema ~/dataset/simple_timestamp.avro
{
  "type" : "record",
  "name" : "FullName",
  "fields" : [ {
    "name" : "t",
    "type" : "long"
  } ]
}

将 Avro 文件加载到带有时间戳字段的表的示例:

bq mk --schema t:TIMESTAMP -t vimota.simple_timestamp
bq load --source_format=AVRO vimota.simple_timestamp ~/dataset/simple_timestamp.avro
bq head vimota.simple_timestamp:

+---------------------+
|          t          |
+---------------------+
| 2014-08-19 12:41:35 |
+---------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Avro 日期和时间与 BigQuery 的兼容性吗? 的相关文章

随机推荐

  • 如何在 C# 应用程序中调用 Perl 脚本?

    我想捕获 Perl 程序的输出并在 C Windows 窗体上的文本框中显示输出数据 屏幕上的字符串 这是我的主要 C 代码 public partial class frmMain Form private Process myProce
  • 有没有办法在 JavaScript 中模拟点击警报?

    我有一个带有 iframe 的页面 其源页面位于单独的域中 源页面有时会生成警报 当它这样做时 它会停止正在执行的操作 直到用户单击警报的 确定 我想要做的是以编程方式单击此警报上的 确定 以便源页面可以恢复有用 这可能吗 JavaScri
  • 如何使用Python内置函数odeint求解微分方程?

    我想用给定的初始条件求解这个微分方程 3x 1 y 3x 2 y 6x 8 y 0 y 0 2 y 0 3 答案应该是 y 2 exp 2 x x exp x 这是我的代码 def g y x y0 y 0 y1 y 1 y2 6 x 8
  • 获取 Java lambda 表达式的封闭类

    我有一个采用功能参数的方法 例如ARunnable 由于它是一个库方法 我希望它使用从功能参数派生的记录器 呼唤getClass功能参数对于普通类来说效果很好 我可以getEnclosingClass对于嵌套类或匿名类 但如果它是一个 la
  • 在 Doctrine 事件监听器中获取用户

    当我注册一个新的质粒实体时 我想给他一个自动名称 例如 p0001 p0002 p0003 为此 我需要在数据库中选择特定用户的最后一个质粒实体 获取其 autoName 然后使用先前的名称来定义新名称 但是 当我在侦听器中注入 token
  • 是否有任何 Windows 模拟器可用于测试 iPhone 应用程序?

    是否有任何 Windows 模拟器可供我在 Windows XP 上测试 仅测试 我的 iPhone 应用程序 感谢和问候 Khushi 不需要 iPhone 模拟器作为 iPhone SDK 的一部分提供 该 SDK 仅适用于基于 Int
  • 使用 C# 从 DataTable 创建 HTML

    我需要能够将 HTML 数据传递到 Outlook 如下所示 MailMessage message new MailMessage message Body myBody 最初 我认为我可以将纯文本传递给它并使用PadLeft像这样 so
  • Scala:泛型类型的方法重载

    在 C 中 我可以重载泛型类型的方法 如下例所示 http ideone com QVooD using System using System Collections Generic public class Test public st
  • TensorFlow 中的步骤和纪元有什么区别?

    在大多数模型中 都有一个steps参数表示运行数据的步骤数 但我发现在大多数实际使用中 我们还执行拟合函数 Nepochs 运行 1000 步 1 epoch 和运行 100 步 10 epoch 有什么区别 实践中哪一种更好 连续的纪元之
  • 如何在C#中清除Cursor.Clip并允许光标再次自由移动?

    我正在尝试将光标锁定到表单中 这是针对鼠标储物柜应用程序的 我正在尝试处置光标 以便它将重置Cursor Clip当他们解锁它时 到目前为止我有 Cursor Clip new Rectangle x 8 y 30 Size Width 1
  • 如何判断一个字符串是英语还是波斯语?

    我在表单中有 edittext 我希望当用户将文本输入到 edittext 中时 我的程序可以检测到 edittext 中插入了哪种语言 有没有办法确定字符串是英语还是波斯语 我找到了阿拉伯语的代码 public static boolea
  • 将日期截断为会计年度

    以下数据库视图将日期截断为会计年度 4 月 1 日 CREATE OR REPLACE VIEW FISCAL YEAR VW AS SELECT CASE WHEN to number to char SYSDATE MM lt 4 TH
  • eclipse,新的android应用程序项目,“下一步按钮”在需要项目名称的部分被禁用

    我想开始为android编程 所以我下载了Eclipse并在其上安装了ADT插件并下载了Android SDK 现在 当我想在 文件 gt 新建 gt Android应用程序项目 中创建一个新的android项目时 它会将我引导到一个需要
  • 在 Python 中求解线性整数方程组

    我正在寻找一种用 Python 求解线性方程组的方法 特别是 我正在寻找大于全零的最小整数向量并求解给定的方程 例如 我有以下等式 and want to solve In this case the smallest integer ve
  • 如何为 UIWebView 实现 NTLM 身份验证?

    我有一个用例UIWebView可能需要连接受 NTLM 保护的 Web 服务器 我还有一个用例 我已经拥有要传递的凭据 因此 我不强迫用户输入它们 而是如何与UIWebView UPDATE 使用此方法here当您执行简单的 GET 请求时
  • 使用 JavaScript 将文本截断为特定大小 (8 KB)

    我正在使用ZemantaAPI 每次调用最多接受 8 KB 的文本 我正在使用 JavaScript 从网页中提取要发送到 Zemanta 的文本 因此我正在寻找一个可以将我的文本截断为 8 KB 的函数 Zemanta 应该自行执行此截断
  • 是否可以在内存中保留空间以减少加载时间? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想使用 spacy 作为 NLP 来提供在线服务 每次用户发出请求时 我都会调用脚本 my script py 开头为 from spacy en import English nl
  • 如何查看 Fortify 安全编码规则的所有规则?

    我想查看 Fortify 安全编码规则的具体规则 Fortify 默认使用的规则 因为我想编写一份有关 Fortify 使用的所有规则的报告 我试图看到他们C Program Files Fortify Software HP Fortif
  • 为什么我不能将数据集传递给函数?

    我正在使用该包glmulti将模型拟合到多个数据集 如果我一次适合一个数据集 一切都会正常 例如 output lt glmulti y x1 x2 data dat fitfunction lm 工作得很好 但是 如果我创建一个像这样的包
  • Avro 日期和时间与 BigQuery 的兼容性吗?

    BigQuery 通常在加载 Avro 数据方面做得很好 但 bq load 在处理时间戳和使用 Avro 逻辑类型属性的其他日期 时间字段时遇到很多麻烦 当 BigQuery TIMESTAMP 将 Avro 类型 timestamp m