我有一系列的python脚本,它们使用通过oauth2client库通过json服务帐户密钥文件授权的gspread库从Google Sheets提取数据:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scopes = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name(gcp_config_yaml_path,scopes)
client = gspread.authorize(creds)
cur = config['tables_to_load'][i]
sheet = client.open_by_url(cur['spreadsheet_url']).worksheet(cur['sheet_name'])
df=pd.DataFrame(sheet.get_all_records())
我需要使用Google Cloud Composer将其转换为Airflow DAG,并且我想利用Airflow(https://cloud.google.com/composer/docs/how-to/managing/connections#creating_a_connection_to_another_project)的连接功能。
我已经上传了json密钥文件对象,并在Airflow UI中创建了连接对象(在“#2创建新连接”的步骤“ d-iv”中使用选项“ i”),并且能够使用以下代码在我的代码中引用该对象:
client = BaseHook.get_connection('google_cloud_default')
但是那是我所能达到的。每次尝试在连接中调用参数时,都会收到一个错误消息,指出该参数不存在(keyfile_json,keyfile_dict,作用域,keyfile_path,客户端,电子表格等),并且似乎找不到任何文档。对象中应使用哪些属性:(https://airflow.readthedocs.io/en/latest/_api/airflow/gcp/hooks/base/index.html#airflow.gcp.hooks.base.CloudBaseHook)。
任何对在GCP Cloud Composer Airflow环境中授权Google表格连接方法的见解都将带来巨大的帮助!
非常感谢!