BigQuery:自动化作业中要求的凭据

时间:2018-09-18 05:17:56

标签: google-bigquery

我有一个python应用程序/作业正在将数据框推入BigQuery。但是,该作业失败了,因为显然是在要求提供凭据,如下所示:

  

请访问此URL以授权此应用程序:

由于这是一项自动化工作,因此我无法单击链接并提交代码。还有其他方法可以通过授权吗?

我已经在我的环境变量/ bashrc中设置了服务帐户密钥。

代码

from datetime import timedelta
import pandas as pd
from io import StringIO
from azure.storage.blob import BlockBlobService


class Transmitter:

    def __init__(self):
            self.blob_service = BlockBlobService(account_name='xxxx',
                                                 account_key='xxxxxxxxxxxxx')
            self.dataset_id = 'xxxx'
            self.jobQuery = "select JobID, EmailName from xxxxx group by JobID, EmailName"
            self.keyDf = pd.read_csv('jobKeys.csv')

    def toBigQJobs(self):

        jDf = pd.read_gbq(self.jobQuery, project_id='xxxx', dialect='standard')

        jDf['Type'] = 'C'
        jDf['Category'] = 'other'
        for index, row in jDf.iterrows():
            for indexA, rowA in self.keyDf.iterrows():
                    if rowA['Key'] in row['EmailName']:
                            jDf.loc[index, 'Category'] = rowA['Category']
                            jDf.loc[index, 'Type'] = rowA['Type']
                            break

        jDf.to_gbq(destination_table='xxxx', project_id='xxxx',
                    if_exists='replace')

if __name__ == '__main__':

    objTransmitter = Transmitter()

    objTransmitter.toBigQJobs()

1 个答案:

答案 0 :(得分:0)

解决方案:通过os.environ添加环境变量,它可以正常工作。