python - Google BigQuery 从 Python 脚本执行 SQL 文件

标签 python sql pandas google-bigquery

我有一个 python 文件,它使用 datalab.bigquery 来执行写出的 SQL 查询。但是,我将此 SQL 查询保存在同一个 GitHub 存储库中,因此我想知道是否有一种方法可以运行 github SQL 文件,而无需复制和粘贴查询。

目前看起来像这样:

import datalab
import datalab.bigquery as bq
import pandas as pd 

df = bq.Query('''
                SELECT
                  CASE
                    WHEN advance_date IS NULL
                        AND release_date IS NULL
                        AND resale_close_date IS NULL
                            THEN TRUE
 ...
 '''_.to_dataframe()

这工作正常,但是当对 SQL 脚本进行更新时,它们不会反射(reflect)在该 python 脚本中,这会产生问题。我希望它调用保存在 Github 存储库中的 SQL 查询。有没有办法做到这一点?就像 df = bq.execute(sql_file.sql).to_dataframe() 一样。

最佳答案

您可以使用包含 SQL 脚本的 Github 代码片段的“原始”页面,并检查该页面以获取脚本。

例如,假设我想要这个脚本 [1] (在您的情况下,它将是 SQL 脚本),我单击“RAW”按钮并保存 URL。然后,您可以通过使用 requests 在 Python 中查看该 URL 中的内容:

import requests

raw=<URL OF YOUR SQL SCRIPT>
#In my case it would be
#raw="https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/appengine/standard/bigquery/main.py"
r=requests.get(raw).text
df=bq.Query(r).to_dataframe()

如果我理解正确,那就是你想要的:D。

关于python - Google BigQuery 从 Python 脚本执行 SQL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940352/

相关文章:

python - 提取字符串并将其从提取的列 pandas 中删除

python scipy spearman相关性

python - 将元素 append 到 numpy 数组中每个箭头的末尾

sql - 为什么 WHERE 和 HAVING 在 SQL 中作为单独的子句存在?

python - 将数据帧与 Pandas 连接后如何添加索引?

python - 如何通过使用将参数保留在同一列中的第一个和最后一个来删除 pandas df 列中的重复值

python - 从 python 中的字典获取键列表/键集的最有效方法是什么?

python - 如何在 django-allauth 中禁用密码检查

mysql - 对用户进行排名并连接表

sql - 在 Oracle SQL 表中插入值的有效方法