Ich verwende AppEngine mit der Python-Laufzeitumgebung, um ein Dashboard für mein Team zu hosten. Die Daten für das Dashboard werden in Memcache und/oder Cloud Datastore gespeichert. Neue Daten werden mithilfe der BigQuery-API in die Anwendung gezogen.Zurückgeben aller Entitäten (Daten) aus dem letzten put()
class ExampleForStackOverflow(webapp2.RequestHandler):
def get(self):
credentials = GoogleCredentials.get_application_default()
bigquery_service = build('bigquery', 'v2', credentials=credentials)
query = """SELECT field1, field2
FROM
[table_name];"""
try:
timeout = 10000
num_retries = 5
query_request = bigquery_service.jobs()
query_data = {
'query': (query),
'timeoutMs': timeout,
}
query_response = query_request.query(
projectId='project_name',
body=query_data).execute(num_retries=num_retries)
# Insert query response into datastore
for row in query_response['rows']:
parent_key = ndb.Key(MyModel, 'default')
item = MyModel(parent=parent_key)
item.field1 = row['f'][0]['v']
item.field2 = row['f'][1]['v']
item.put()
except HttpError as err:
print('Error: {}'.format(err.content))
raise err
Diese Abfragen geben eine unbestimmte Anzahl von Datensätzen zurück. Ich möchte, dass das Dashboard die Ergebnisse der Abfragen unabhängig von der Anzahl der Datensätze anzeigt, so dass die Verwendung von order() durch created und die Verwendung von fetch() zum Abrufen einer bestimmten Anzahl von Datensätzen nicht hilfreich ist.
Ist es möglich, eine Abfrage zu schreiben, um alles von der letzten Operation put() zurückzugeben?
Bisher habe ich versucht, alle Datensätze zurück, die innerhalb eines bestimmten Zeitfensters geschrieben wurden (zB How to query all entries from past 6 hours (datetime) in GQL?)
Das ist nicht für mich auf eine zuverlässige Art und Weise funktioniert, weil jeder so oft die cron-Job, der Abfragen denn die neuen Daten werden fehlschlagen, so dass mir ein leeres Diagramm verbleibt, bis der Cron-Job am nächsten Tag ausgeführt wird.
Ich brauche eine belastbare Abfrage, die immer Daten zurückgibt. Danke im Voraus.
Vorfahr Abfrage ist nur eine Abfrage, in der Sie einen Vorfahren Schlüssel angeben, die in Ihnen Fall ist der gemeinsame übergeordnete Schlüssel: –
'query = MyModel.query (Vorgänger = ndb.Key (MyModel, 'default')). order (-MyModel.created)' –
Danke, Dan! Ich schätze es. – afed