BigQuery:如何在 C# 中启用标准 SQL

Posted

技术标签:

【中文标题】BigQuery:如何在 C# 中启用标准 SQL【英文标题】:BigQuery: How to enable standard SQL in C# 【发布时间】:2016-10-28 21:39:49 【问题描述】:

我一直在尝试关注文档https://cloud.google.com/bigquery/sql-reference/enabling-standard-sql,但无法在 Job.Configuration 中找到 useLegacySql 字段。我正在使用 Bigquery.v2.1.9.2.2280。

【问题讨论】:

【参考方案1】:

无需对 API 调用进行任何更改,只需尝试以“#StandardSQL”作为第一行发送您的标准 SQL 查询:

#StandardSQL
SELECT COUNT(*)
FROM `ghtorrent-bq.ght.project_languages`

【讨论】:

感谢@Felipe Hoffa,此方法有效且不需要更改作业配置。【参考方案2】:

我以前没有亲自使用过那个 API,但是你在看JobConfigurationQuery 的参考吗?它有一个UseLegacySql 属性。

【讨论】:

【参考方案3】:

如果您使用 API - 您可以使用以下方法启用标准 SQL:

将jobs.query 的useLegacySql 属性设置为false。 要了解更多信息,请参阅 Jobs: 查询主题的 useLegacySql 部分。 使用 jobs.insert 方法并将 configuration.query.useLegacySql 设置为 false。 要了解更多信息,请参阅职位主题的 configuration.query.useLegacySql 部分。

【讨论】:

感谢@MikhailBerlyant,我使用的是 BigQuery 中没有 useLegacySql 字段的旧 dll,我不愿意更新它,因为这可能会破坏我们代码的其他部分。 Felipe Hoffa 给出的解决方案似乎是一个更好的选择。

以上是关于BigQuery:如何在 C# 中启用标准 SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用标准 SQL 在 BigQuery 中透视表?

如何在 bigquery 标准 sql 中展平结构?

BigQuery 标准 SQL 如何将行转换为列

如何在 BigQuery 标准 SQL 中获取数组的切片?

如何在 BigQuery 标准 SQL 中旋转多个列

如何在 BigQuery 标准 SQL 中将时间戳转换为秒