如何在 SQL 查询中引入 BQ 大数值比较?

Posted

技术标签:

【中文标题】如何在 SQL 查询中引入 BQ 大数值比较?【英文标题】:How to bring in BQ Big Numeric comparision in SQL Queries? 【发布时间】:2021-12-28 05:42:50 【问题描述】:

我正在尝试在 google BigQuery 中查询以下内容:

SELECT role FROM `<PROJECT>.<DATABASE>.<TABLE>` WHERE googleId = 109024200300000000000

虽然这不起作用,因为我收到了这个错误:

Invalid integer literal: 109024000000000000000 at [1:85]

我不知道如何告诉 BigQuery 这是一个大数字而不是整数。

我找到的一种方法是:

SELECT role FROM `&lt;PROJECT&gt;.&lt;DATASET&gt;.&lt;TABLE&gt;` WHERE googleId = CAST('109024002200000000000' as BIGNUMERIC) ORDER BY timeStamp DESC LIMIT 1;

但不确定这是否是最有效的方法。

【问题讨论】:

你可以使用更短的版本(没有CAST) - WHERE googleId = BIGNUMERIC '109024002200000000000' 【参考方案1】:

正如@Mikhail Berlyant 在评论中所建议的那样,您可以通过在值中包含数据类型“BIGNUMERIC”来使用较短的版本(没有 CAST),如下所示。

SELECT role FROM `<PROJECT>.<DATABASE>.<TABLE>` WHERE googleId = BIGNUMERIC '109024002200000000000'

【讨论】:

以上是关于如何在 SQL 查询中引入 BQ 大数值比较?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spark/scala 检查是不是存在大查询表

如何在bigquery中以最少的数据库命中执行多个sql

如何在不创建架构的情况下将 CSV 文件加载到 BigQuery

如何在 WHERE 子句中使用 hits.customDimensions.index 查询 GA 导出到 BQ 模式?

如何定义在子查询中引用通配符表的 BQ 视图?

在大查询中从宽到长重塑(标准 SQL)