轻松使用pandas DataFrames的强大功能在Python中验证和测试您的Google BigQuery查询。
项目描述
BQuest
轻松使用pandas DataFrames的强大功能在Python中验证和测试您的Google BigQuery查询。
我们想感谢Mike Czech,他是bquest的原发明者!
警告
这个库仍在开发中!
在1.0版本发布之前,可能会出现破坏性更改,因此建议使用版本锁定。
概述
将BQuest与您喜欢的测试框架(例如pytest)结合使用。
从JSON或pandas 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 查看哈希值)
关闭
bquest-0.5.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 10b104028b64ff7b8de4852c014075b6e31bf3a970049a46ff9fbc7e0927db62 |
|
MD5 | 4ac49698615b6af7bafae14dc3d0b529 |
|
BLAKE2b-256 | 13c76bcf30bb34f2eb2e0712f16ce17f47f3d825ec68ca5f257dfa2f753c6e78 |
关闭
bquest-0.5.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4ac0a27349e6d8804cd2f40b9bf2b5954339b0e4ae2d7c879647dc7af2d6b090 |
|
MD5 | 5d2990ac3eab48c5fb6cb30f1bb93b76 |
|
BLAKE2b-256 | b87be3872e82d66ed89112cbd80b8c10a9fdca308a0529427ec7e91a09e841b5 |