2016-11-16 1 views
0

BestenAWS DynamoDB - erhalten Boto3 alle Attribute, Feldnamen, Spaltenüberschriften aus einer DynamoDB Tabelle/Struktur

In diesem Moment ich Boto3 in Python 2.7 und bin mit, was ich möchte, ist haben: die Spaltenüberschriften meiner spezifischen DynamoDB-Tabelle.

In diesem Moment habe ich es mit einer sehr großen dynamoDB-Tabelle zu tun, mit 80 Spalten und + 1.00O.000 Datensätzen. Und die Aufgabe, die ich habe, ist, diese Daten zu manipulieren. Dazu benutze ich Brocken. Das bedeutet, dass ich jedes Mal 1000 Zeilen aus meiner Datentabelle abrufe und sie manipuliere und das neue Ergebnis in einen CSV schreibe. (Dies ist aus bestimmten Gründen erforderlich).

Aber weil ich Chunks verwende, kann es sein, dass nicht jeder Chunk 80 Spalten enthält, was bedeutet, dass er manchmal 79 oder 78 Spalten enthalten kann. Dies geschieht, wenn für eine bestimmte Spalte in einem Chunk keine Werte verfügbar sind.

Und das ist nicht wünschenswert, weil am Ende des Tages alle diese CSV wieder miteinander verkettet werden sollte, und daher sollte jeder CSV die gleiche Anzahl von Spalten enthalten.

Also meine Idee, die ich habe: Fügen Sie leere Spalten zu den Chunk-CSV, die nicht alle erforderlichen Spalten enthält.

Aber ich muss wissen, was die Header, Attribute, Feldnamen aus meiner Tabelle (oder der Struktur) sind + Die Sache ist, diese Spaltenüberschriften sind dynamisch, es kann keine statische Liste sein headers Und es kann sein, dass plötzlich neue Datensätze mit einer eindeutigen Spalte hinzugefügt werden (was bedeutet, dass ich das nächste Mal 81 Spalten für jeden meiner CSVs erhalten würde) - Also sollte das Header-Wissen von meiner Tabelle/amazon aws

kommen

mit freundlichen Grüßen

+0

Ich denke, es ist nicht möglich, die Attributnamen aus allen Datensätzen zu erhalten und zu sortieren, ohne alle Elemente aus der Tabelle zu lesen. – notionquest

Antwort

2

Sie können einen Teil der Informationen erhalten Sie suchen, das attribute_definitions Attribut eines Table Aufgabe durch die Verwendung, wie folgt aus:

import boto3 
ddb = boto3.resource('dynamodb') 
table = ddb.Table('MyTable') 
attrs = table.attribute_definitions 

Die Variable attrs enthält jetzt ein Wörterbuch aller Attribute, die Sie beim Erstellen der Tabelle explizit definiert haben. Normalerweise sind dies nur die Attribute, die als Schlüssel in einem bestimmten Index verwendet werden.

Da DynamoDB jedoch schematisiert ist, können Sie eine beliebige Kombination anderer Attribute in einem Element in DynamoDB speichern. Wie der obige Kommentar besagt, ist die einzige Möglichkeit, alle in allen Elementen verwendeten Attribute zu kennen, die Iteration aller Elemente und das Erstellen eines Satzes von Attributen, die in jedem Element enthalten sind.