使用BigQuery测试BigQuery

bqqtest的Python项目详细描述


测试BigQuery查询的工具

可以测试查询逻辑到BigQuery

Basic Usage

Simple

frombqqtestimportQueryTestfromgoogle.cloudimportbigquery# expectedexpected_schema=[{"name":"name","type":"STRING","mode":"NULLABLE"},{"name":"value","type":"INT64","mode":"NULLABLE"},]expected_datum=[["abc",100],["bbb",333]]expected={"schema":expected_schema,"datum":expected_datum}# actualtarget_schema=[{"name":"name","type":"STRING","mode":"NULLABLE"},{"name":"value","type":"INT64","mode":"NULLABLE"},]target_datum=[["abc",100],["bbb",333]]tables={"test.target_table":{"schema":target_schema,"datum":target_datum}}eval_query={"query":"SELECT * FROM test.target_table","params":[]}qt=QueryTest(bigquery.Client(),expected,tables,eval_query)success,diff=qt.run()success# True

Group By

frombqqtestimportQueryTestfromgoogle.cloudimportbigquery# expectedexpected_schema=[{"name":"item","type":"STRING","mode":"NULLABLE"},{"name":"total","type":"INT64","mode":"NULLABLE"},]expected_datum=[["abc",300],["bbb",333]]expected={"schema":expected_schema,"datum":expected_datum}# actualtarget_schema=[{"name":"item","type":"STRING","mode":"NULLABLE"},{"name":"value","type":"INT64","mode":"NULLABLE"},]target_datum=[["abc",100],["bbb",333],["abc",200]]tables={"test.target_table":{"schema":target_schema,"datum":target_datum}}eval_query={"query":"SELECT item, SUM(value) AS total FROM test.target_table GROUP BY item","params":[],}qt=QueryTest(bigquery.Client(),expected,tables,eval_query)success,diff=qt.run()success# True

Multi Table

frombqqtestimportQueryTestfromgoogle.cloudimportbigquery# expectedexpected_schema=[{"name":"item","type":"STRING","mode":"NULLABLE"},{"name":"value","type":"INT64","mode":"NULLABLE"},]expected_datum=[["abc",100],["bbb",333],["xxxx",888],["zzzz",999]]expected={"schema":expected_schema,"datum":expected_datum}# actualtarget_schema=[{"name":"item","type":"STRING","mode":"NULLABLE"},{"name":"value","type":"INT64","mode":"NULLABLE"},]target_datum1=[["abc",100],["bbb",333]]target_datum2=[["xxxx",888],["zzzz",999]]tables={"test.table1":{"schema":target_schema,"datum":target_datum1},"test.table2":{"schema":target_schema,"datum":target_datum2},}eval_query={"query":"SELECT * FROM `test.table1` UNION ALL SELECT * FROM `test.table2`","params":[],}qt=QueryTest(bigquery.Client(),expected,tables,eval_query)success,diff=qt.run()success# True

特征

see also https://qiita.com/tamanobi/items/9434ca0dbd5f0d3018d9

  • 使用WITH临时生成BigQuery中未保存的测试数据。
    • BigQuery是以保存的数据扫描量和API请求数收费的,所以可以抑制费用进行单元测试。
    • 费用详情请参阅BigQuery的官方文档
  • 测试不需要重写查询
    • 在库内部,重写目标表格的Identifier以替换表格

注意

直接向BigQuery发行查询。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSwing:如何读取组件下面的图形信息?   JAVAutil。scanner Java scanner为什么跳过代码中的nextLine()?   html如何在jsp文件中使用内联java比较器?   编组时单个元素组的java JAXB元素包装器   java如何使SeleniumWebDriver动态选择客户端证书,而无需直观地检测弹出窗口   java定位服务。FusedLocationApi。getLastLocation(mGoogleApiClient)获取null   java如何快速创建指向Eclipse中元素的Javadoc链接?   如何使用Java语言填充MS Word模板?   java 安卓应用程序不显示来自服务器的值   java有没有办法解决这个问题:第45行第7列path$处的预期名称。客户端[0]。服务   java如何使用ASM仅从switch中删除break语句?   java LOOK else if语句:我把它放在哪里   无效的Java语句   java输出不应包含0值   java遇到意外文本时要抛出什么异常?   java如何将文本文件数组中的数字添加到2d int数组中?   java如何从列表中的对象访问属性?   对象的oop锁方法(Java)   java字符串连接concat()和+运算符的有效使用