2016-11-16 5 views
0

ベストAWS DynamoDBの - Boto3は、Python 2.7で、私はBoto3を使用しています。この時点ではDynamoDBのテーブル/構造

からのすべての属性、フィールド名、列のヘッダーを取得し、私が持っているしたいことは次のとおりです。 列ヘッダーを私の特定のDynamoDBテーブルの

現時点では、私は非常に大きなdynamoDBテーブルを扱っています。80カラムと+ 1.00000レコードです。そして、私がやったことは、これらのデータを操作することです。これを行うために、私はチャンクを利用しています。これは、私がデータテーブルから1000行ごとに取得し、それらを操作し、新しい結果をCSVに書き込むことを意味します。 (これは何らかの理由で必要です)。

私はチャンクを使用しているため、すべてのチャンクに80列が含まれているわけではありません。つまり、79または78列を含むことがあります。これは、チャンク内の特定の列に対して使用可能な値がない場合に発生します。

これは、1日の終わりには、すべてのcsvが再び連結される必要があり、したがって、各csvには同じ量の列を含める必要があるため、これは望ましくありません。

私の考えは次のとおりです。空の列を必要な列をすべて含んでいないチャンクに追加します。

しかし、私はヘッダー、属性、フィールド名が私のテーブル(または構造体)のものであることを知っています+これらの列ヘッダーは動的です。私のテーブルの/ amazon aws

からヘッダーの知識が得られるはずです(つまり、私のcsvのそれぞれに対して81列を受け取ることを意味します)。

種類は、あなたがこのように、Tableオブジェクトのattribute_definitions属性を使用して、あなたが探している情報の一部を取得することができます

+0

すべてのレコードから属性名を取得し、テーブルのすべての項目を読み取らずに照合することはできないと思います。 – notionquest

答えて

2

について:

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

変数attrsには、テーブル作成時に明示的に定義したすべての属性の辞書が含まれるようになりました。これは通常、一部のインデックスのキーとして使用される属性のみです。

しかし、DynamoDBはスキーマが少ないので、他の属性の任意の組み合わせをDynamoDBの項目に格納できます。したがって、上記のコメントのように、すべてのアイテムで使用されるすべての属性を知る唯一の方法は、すべてのアイテムを繰り返し、各アイテムに含まれる一連の属性を作成することです。

関連する問題