[解決済み] DynamoDBからアイテム数を取得するには?
質問
DynamoDBのクエリでアイテム数を知りたいのですが。
DynamoDBへの問い合わせは可能ですが、「アイテムの総数」のみを知りたいのです。
例えば、MySQLで「SELECT COUNT(*) FROM ... WHERE ...」とする。
$result = $aws->query(array(
'TableName' => 'game_table',
'IndexName' => 'week-point-index',
'KeyConditions' => array(
'week' => array(
'ComparisonOperator' => 'EQ',
'AttributeValueList' => array(
array(Type::STRING => $week)
)
),
'point' => array(
'ComparisonOperator' => 'GE',
'AttributeValueList' => array(
array(Type::NUMBER => $my_point)
)
)
),
));
echo Count($result['Items']);
このコードは、全ユーザーのデータを私のポイントより高く取得します。
もし$resultのカウントが100,000であれば、$resultは大きすぎます。 また、クエリサイズの制限を超えることになります。
助けが必要です。
どのように解決するのですか?
あなたは
Select
パラメータを使用し
COUNT
をリクエストに追加します。これは、マッチしたアイテムそのものではなく、マッチしたアイテムの数を返します"。
重要
は、提起されたように
コメントでSaumitra R. Bhaveによってもたらされた
,
Query 結果セットのサイズが 1 MB より大きい場合、ScannedCount と Count は全アイテムの一部のカウントのみを表します。すべての結果を取得するために、複数の Query 操作を実行する必要があります。
.
私はPHPに詳しくないのですが、Javaで使用する方法を紹介します。そして、代わりに
Count
(これはPHPの関数だと推測されます)の上で
'Items'
を使用すると
Count
の値を使用します。
-
$result['Count']
:
final String week = "whatever";
final Integer myPoint = 1337;
Condition weekCondition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ)
.withAttributeValueList(new AttributeValue().withS(week));
Condition myPointCondition = new Condition()
.withComparisonOperator(ComparisonOperator.GE)
.withAttributeValueList(new AttributeValue().withN(myPoint.toString()))
Map<String, Condition> keyConditions = new HashMap<>();
keyConditions.put("week", weekCondition);
keyConditions.put("point", myPointCondition);
QueryRequest request = new QueryRequest("game_table");
request.setIndexName("week-point-index");
request.setSelect(Select.COUNT);
request.setKeyConditions(keyConditions);
QueryResult result = dynamoDBClient.query(request);
Integer count = result.getCount();
をエミュレートする必要がない場合は
WHERE
節をエミュレートする必要がなければ
DescribeTable
というリクエストで
の結果としてのアイテム数を見積もることができます。
指定したテーブルのアイテム数です。DynamoDBはこの値を約6時間ごとに更新します。最近の変更はこの値に反映されていない可能性があります。
また、重要な注意点として ドキュメント に書かれているように サウミトラ R. バーヴェ がこの回答に対するコメントで指摘しています。
のサイズが小さいと
Query
の結果セットのサイズが 1 MB より大きい場合。ScannedCount
とCount
は全項目の部分的なカウントを表しているに過ぎません。複数のQuery
操作を複数回行なう必要があります ( テーブル・クエリの結果をページ分割する ).
関連
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?
-
[解決済み] Mavenプラグインを1回だけ実行する?
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] 非リレーショナルデータベース設計【終了しました
-
[解決済み] なぜ、いつ、Liquibaseなのか?
-
[解決済み] データベースとファイルシステムストレージ
-
[解決済み] テーブルのネーミング。アンダースコアとキャメルケース、名前空間?単数形と複数形?
-
[解決済み] 外部キーとしてカラムを追加すると、外部キー制約で参照されるカラムが存在しないERRORが表示される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] データベースの設計に外部キーは本当に必要なのか?
-
[解決済み] データベースのインデックスはいくつあっても足りない?
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] Mavenプラグインを1回だけ実行する?
-
[解決済み] DB2とOracleから見たCLOBとBLOBの違いとは?
-
[解決済み] 非リレーショナルデータベース設計【終了しました
-
[解決済み] ソース管理からどのようにデータベースを構築するべきか?
-
[解決済み] テーブルのネーミング。アンダースコアとキャメルケース、名前空間?単数形と複数形?