Функция list_jobs min_creation_time error - PullRequest
0 голосов
/ 07 июня 2018

Ниже приведен мой код в фрейме Django (python 2.7) для перечисления вакансий в Bigquery.Я хочу отфильтровать только те за последние две недели, но min_creation_time в функции list_jobs () не работает и по какой-то причине выдает ошибки.Пожалуйста, предложите

from __future__ import unicode_literals
from django.shortcuts import render
import thd_gbq_tools as bq
# Create your views here.
from django.http import HttpResponse
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.client import GoogleCredentials
from google.cloud import bigquery
import uuid
import os
import logging
import time
import json
from datetime import datetime,timedelta
from django.template import loader
from django.shortcuts import render
import pandas as pd
from collections import OrderedDict
from datetime import date



def home(request):


    credentials = GoogleCredentials.get_application_default()
    # Construct the service object for interacting with the BigQuery API.
    bq_conn = build('bigquery', 'v2', credentials=credentials)



    job_query_dict = []    

    import warnings
    warnings.filterwarnings("ignore")
    ###Create the big query client
    client =bigquery.Client(project='analytics-supplychain-thd')




    ###List the jobs in the client
    jobs = client.list_jobs(all_users= True)  # API request


    for job in jobs:
        job_create_timestamp = datetime.strptime((str(job.created).replace('+','.')).split('.')[0],'%Y-%m-%d %H:%M:%S')
        job_ended_timestamp = datetime.strptime((str(job.ended).replace('+','.')).split('.')[0],'%Y-%m-%d %H:%M:%S')
        job_query_dict.append([job.job_id, job.user_email , job_create_timestamp,job_ended_timestamp, job.state])

    Table1 = sorted(job_query_dict,key=lambda x: (x[2]), reverse=True)

    return render(request, 'j2_response.html', {'Table1':Table1})

Этот код я использую для назначения параметра, который указывает последние 10 минут для min_creation_time:

from datetime import datetime,timedelta 
from datetime import date 

ten_mins_ago = datetime.utcnow() - timedelta(minutes=10)

1 Ответ

0 голосов
/ 13 июня 2018

При указании ten_mins_ago = datetime.utcnow() - timedelta(minutes=10) вы указываете, что хотите, чтобы задания BigQuery выполнялись в течение последних 10 минут.

Вы можете попробовать этот фрагмент кода, чтобы получить список заданий BigQuery, выполненных за последние 2 недели:

from google.cloud import bigquery
from datetime import datetime, timedelta
from pytz import timezone

client = bigquery.Client(project = '[YOUR_PROJECT]')
local_timezone = timezone('US/Eastern')
two_weeks_ago = datetime.utcnow() - timedelta(days = 14)
local_two_weeks = local_timezone.localize(two_weeks_ago)

for job in client.list_jobs(all_users = True, max_results = 10, min_creation_time = local_two_weeks):
    print(job.job_id, job.user_email)

Если этот фрагмент работает для вас, вы можете интегрировать его в свой код.Если вы обнаружите какие-либо ошибки, пожалуйста, укажите их, чтобы мы могли подробнее разобраться в проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...