跳转到主要内容

轻松使用pandas DataFrames的强大功能在Python中验证和测试您的Google BigQuery查询。

项目描述

BQuest Logo

BQuest

轻松使用pandas DataFrames的强大功能在Python中验证和测试您的Google BigQuery查询。

我们想感谢Mike Czech,他是bquest的原发明者!

警告

这个库仍在开发中!

在1.0版本发布之前,可能会出现破坏性更改,因此建议使用版本锁定。

CI: Overall outcome CD: gh-pages documentation PyPI version Project status (alpha, beta, stable) PyPI downloads Project license Python version compatibility Documentation: Black

概述

  • 将BQuest与您喜欢的测试框架(例如pytest)结合使用。

  • JSONpandas DataFrame创建临时测试表。

  • 在您的测试表上运行BQ配置和普通SQL查询,并检查结果。

安装

通过PyPi(标准)

pip install bquest

通过Github(最新版本)

pip install git+https://github.com/ottogroup/bquest

BQuest还需要一个专用的BigQuery数据集来存储测试表,例如。

resource "google_bigquery_dataset" "bquest" {
  dataset_id    = "bquest"
  friendly_name = "bquest"
  description   = "Source tables for bquest tests"
  location      = "EU"
  default_table_expiration_ms = 3600000
}

我们建议为bquest数据集中的表设置一个过期时间,以确保在测试执行期间删除这些测试表。

示例

给定一个pandas DataFrame

foo

weight

prediction_date

bar

23

20190301

my

42

20190301

以及其表定义

from bquest.tables import BQTableDefinitionBuilder

table_def_builder = BQTableDefinitionBuilder(GOOGLE_PROJECT_ID, dataset="bquest", location="EU")
table_definition = table_def_builder.from_df("abc.feed_latest", df)

您可以使用配置文件./abc/config.py

{
    "query": """
        SELECT
            foo,
            PARSE_DATE('%Y%m%d', prediction_date)
        FROM
            `{source_table}`
        WHERE
            weight > {THRESHOLD}
    """,
    "start_date": "prediction_date",
    "end_date": "prediction_date",
    "source_tables": {"source_table": "abc.feed_latest"},
    "feature_table_name": "abc.myid",
}

和运行器

from bquest.runner import BQConfigFileRunner, BQConfigRunner

runner = BQConfigFileRunner(
    BQConfigRunner(bq_client, bq_executor_func),
    "config/bq_config",
)

result_df = runner.run_config(
    "20190301",
    "20190308",
    [table_definition],
    "abc/config.py",
    templating_vars={"THRESHOLD": "30"},
)

来断言结果表

assert result_df.shape == (1, 2)
assert result_df.iloc[0]["foo"] == "my"

测试

对于实际的测试,bquest依赖于一个可访问的大数据查询项目,该项目可以通过gcloud客户端配置。相应的GOOGLE_PROJECT_ID从该项目中提取,并用于pandas-gbq,将临时表写入在测试之前需要预先配置的bquest数据集。

对于Github CI,我们在测试项目中配置了一个身份提供者,该提供者只允许该存储库的核心成员访问测试项目的资源。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

bquest-0.5.1.tar.gz (15.2 kB 查看哈希值)

上传时间:

构建分布

bquest-0.5.1-py3-none-any.whl (18.5 kB 查看哈希值)

上传时间: Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面