bigquery中设置search_path的等效语句是什么?

时间:2019-06-19 05:22:23

标签: google-bigquery

我想知道在bigquery中将search_path设置为架构的等效语句。

在Redshift中,我们使用set search_path设置为schema_name; 在SQL Server中,我们使用语句USE Schema_name;

有人能让我知道在bigquery中怎么做

我在文档中找不到很多东西。

2 个答案:

答案 0 :(得分:2)

很显然,USE语句没有直接的等效项!

同时,在Jobs.insert API中–用户可以设置一个可选的defaultDataset属性,以指定用于查询中不合格表名的默认数据集。

enter image description here

注意:在上面的示例中,projectId是可选的,因此仍然不涵盖不合格的数据集名称的行为

您可以检查此属性是否在首选客户端库中实现

从用户界面开始-在BigQuery用户界面中(无论是经典的还是新的),此功能看起来都未实现/未使用–而是当前项目用于限定不合格的dataset.table引用,但无法设置要解析的默认数据集不合格的表引用,而是“在请求中未设置默认数据集时缺少数据集。”出现错误消息

enter image description here

enter image description here

因此,正如您所看到的,当功能可用时–客户端可以使用/实现它或忽略它

作为示例-Goliath(BigQuery Explorer,Bigtens工具的Potens.io套件的一部分)根据当前项目和活动数据集设置默认数据集。

例如,在以下屏幕快照中-航班数据集处于活动状态,因此消息“ 未找到:在美国位置未找到表cloud-training-demos:demos.xxx

enter image description here

如果将活动数据集更改为 demos ,则会显示以下消息:“ 未找到:在美国位置未找到表cloud-training-demos:demos.xxx

enter image description here

答案 1 :(得分:1)

使用BigQuery时不支持SQL关键字USE,支持的SQL查询语法包含在本文档中[1]。 也是此处支持的旧式语法[2]。

由于查询BigQuery数据集需要引用与该数据集关联的项目,因此不使用项目名称就无法直接引用该数据集,因此BigQuery中没有等效于USE [schema]的项目。通过其中一个客户端库查询数据集需要使用[project_name]。[dataset]。[table]表示法。

[1] https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#using-clause [2] https://cloud.google.com/bigquery/docs/reference/legacy-sql#functions