我在测试对 bigquery 寄予厚望的 yaml 时遇到了麻烦。我遵循了官方文档并得到了这段代码
import os
import great_expectations as ge
datasource_yaml = """
name: my_bigquery_datasource
class_name: Datasource
execution_engine:
class_name: SqlAlchemyExecutionEngine
connection_string: bigquery://<GCP_PROJECT_NAME>/<BIGQUERY_DATASET>
data_connectors:
default_runtime_data_connector_name:
class_name: RuntimeDataConnector
batch_identifiers:
- default_identifier_name
default_inferred_data_connector_name:
class_name: InferredAssetSqlDataConnector
include_schema_name: true
"""
context = ge.get_context()
context.test_yaml_config(datasource_yaml)
该代码有效,但需要花费很多时间。我做了深度调试,发现问题是它想在 bigquery 中检索项目的所有数据集以及所有数据集中的所有表。我们有 200 多个数据集和数千个表。我还没有找到一种方法来过滤我需要的唯一数据集或更具体地说是表格。我认为 connection_string 应该这样做,但没有。
在我的深度调试中,得到了inferred_asset_sql_data_connector.py
模块。我看到它应该过滤 schema_name 问题是它总是无。并且不知道如何将它作为我想要的数据集传递。
我也按照本指南进行了自省,但遇到了其他错误。
如果我将 SimpleSqlalchemyDatasource 作为 class_name 我会收到以下错误。而且我不知道如何在期望很高的情况下为 sqlalchemy 中的 bq 初始化引擎。