Создать / заменить таблицу больших запросов новой, созданной облачной функцией - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь получить таблицу из BQ, преобразовать ее в df, применить к ней изменения, а затем загрузить ее обратно в BQ, заменив прежнюю версию.

Эта функция предназначена для работы в качестве облачной функции Google. Учетная запись службы, которую использует GCS, обладает всеми правами доступа, необходимыми для доступа к BQ.

Я использовал это до сих пор, но он не работает:

ВЫДЕРЖКА СТОЛ DFP ИЗ БК

import google.cloud.bigquery as bigquery
import pandas_gbq as pd

def execute_function(request):

    #Defines Client access & Project to be accessed
    client = bigquery.Client()

    SQL = """
    SELECT LINE_ITEM_NAME, TOTAL_LINE_ITEM_LEVEL_CLICKS
    FROM `DATASET.table_imported` 
    WHERE DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
    AND LINE_ITEM_TYPE = 'PRICE_PRIORITY'
    ORDER BY TOTAL_LINE_ITEM_LEVEL_CLICKS  DESC
    LIMIT 1000"""

    query_job = client.query(SQL)

    dfp = query_job.result()

    ### CREATE WRONG NAMING TABLE SORTED BY CLICKS DESCENDING

    dfp = dfp.to_dataframe()

    dfp.columns = ['li_name', 'clicks_number']

    dfp.set_index('li_name', drop = False, inplace = True)

    wrong_naming = pd.DataFrame()
    li_names = []
    clicks_numbers = []

    #Adds line items that have names with number of fields not equal to 7 only if not already present
    for row in range(len(dfp)):
        if len(dfp.iloc[row, 0].split('_')) != 7 and dfp.iloc[row, 0] not in li_names:
            li_names.append(dfp.iloc[row, 0])
            clicks_numbers.append(dfp.iloc[row, 1])

    #Adds created lists to wrong_naming dataframe
    wrong_naming['li_name'] = li_names
    wrong_naming['clicks_number'] = clicks_numbers

    ### EXPORT / SAVE TABLE TO GBQ

    wrong_naming.to_gbq('DATA_LAKE_MODELING_US.wrong_naming', 
                        if_exists='replace')

Но хотя он работал, когда я запускал код в локальной системе, в облаке это не так.

Вот сообщение об ошибке, которое я получаю: «Ошибка: не удалось обработать запрос»

Есть идеи, как мне это решить?

...