使用PyBigquery筛选结果的SQLAlchemy联接
使用SQLAlchemy类,我试图生成一个类似使用PyBigquery筛选结果的SQLAlchemy联接,sqlalchemy,google-bigquery,pybigquery,Sqlalchemy,Google Bigquery,Pybigquery,使用SQLAlchemy类,我试图生成一个类似 SELECT DISTINCT(non_unique_key) FROM `tablename`, UNNEST(tasks_dns) AS dns WHERE create_date_utc = TIMESTAMP("2020-12-31T23:59:59") AND dns LIKE "%whatever%" 作为使用unnest()的隐式连接,我不知道如何构造我的语句 结合使用.l
SELECT
DISTINCT(non_unique_key)
FROM
`tablename`,
UNNEST(tasks_dns) AS dns
WHERE
create_date_utc = TIMESTAMP("2020-12-31T23:59:59")
AND dns LIKE "%whatever%"
作为使用unnest()的隐式连接,我不知道如何构造我的语句
结合使用.label()和移动unnest()调用,我成功地将unnest子句移动到SELECT或WHERE子句中,但没有移动到FROM中
比如说,
session.query(Table.non_unique_key).filter(func.unnest(Table.dns) != '').filter(Table.create_date == "2021-04-22")
留给我
SELECT `tablename`.`non_unique_key` AS `tablename_non_unique_key`
FROM `tablename`
WHERE unnest(`tablename`.`tasks_dns`) IS NOT NULL AND `tablename`.`create_date_utc` = %(create_date_utc_1)s
到目前为止,使用join()只会导致一些异常,比如没有列可以连接(虽然是的,但我理解这意味着什么,我不确定如何避免,因为unnest基本上是对没有列可连接的嵌套数据类型进行扩展。。这可能就是我不知道如何正确使用SQLAlchemys join()方法的原因)
这只是SQLAlchemy/BigQuery方言的问题吗?还是我只是个傻瓜?我知道方言库还很幼稚,但即使有Postgres,我也会认为这应该是一种比较常见的查询模式?经过进一步的挖掘,我已经找到了答案
Model()