如何检查 BigQuery 中是不是存在数据集?

Posted

技术标签:

【中文标题】如何检查 BigQuery 中是不是存在数据集?【英文标题】:How to check if a dataset exists in BigQuery?如何检查 BigQuery 中是否存在数据集? 【发布时间】:2020-04-29 13:50:16 【问题描述】:

我们可以按如下方式启动 BigQuery 数据集:

dataset_ref = self.client.dataset(dataset_id=self.dataset_id)
dataset = bigquery.Dataset(dataset_ref)

如何检查此数据集是否已存在?当我查看数据集的属性时,它们似乎与存在的集合和不存在的集合重叠。

【问题讨论】:

试试if dataset.createdif dataset.created is not None googleapis.dev/python/bigquery/latest/generated/… 该选项存在延迟。基本上,填充该值最多需要几秒钟,如果不是几分钟的话。 您能否尝试创建数据集并捕获已存在的异常? 是的,除了Conflict(来自google.api_core.exceptions import Conflict),我可以捕捉到它,但我希望有一个更优雅的解决方案。此外,当您深入了解 google.cloud.bigquery.dataset 时,我没有看到任何有用的方法。 else dataset._properties.get("creationTime") 可能会为您节省几毫秒的时间。 【参考方案1】:

docs 建议使用get_dataset 来确定数据集是否存在。

from google.cloud.exceptions import NotFound

dataset_id = "pigs_in_space"

try:
    client.get_dataset(dataset_id)  # Make an API request.
    print("Dataset  already exists".format(dataset_id))
except NotFound:
    print("Dataset  is not found".format(dataset_id))

【讨论】:

这行得通,但问题是每次调用时都会记录一个错误。【参考方案2】:

您可以使用 create_dataset 函数中的 exists_ok 参数忽略该错误。

# create dataset if not exists

self.client.create_dataset(dataset_id=self.dataset_id, exists_ok=True)

我在 Google 的 bigquery API repo 中找到了它。

【讨论】:

以上是关于如何检查 BigQuery 中是不是存在数据集?的主要内容,如果未能解决你的问题,请参考以下文章

如何在合并数据集之前检查行是不是存在(SQL Server)

检查 Airflow 中是不是存在 Bigquery 分区

Kaggle *** BigQuery 数据集的更新频率如何?

如何检查某个程序集是不是存在?

检查 Google BigQuery 是不是使用 GCS 存储桶或任何其他存储

打开“Sheet1$”的行集失败。检查对象是不是存在于数据库中