App Engine データストア ビューア、GQL を使用してレコード数を表示するにはどうすればよいですか? 質問する

App Engine データストア ビューア、GQL を使用してレコード数を表示するにはどうすればよいですか? 質問する

私は...するだろう考えるこれは SQL に似たものなら簡単です! 私が欲しいのは、次の GQL に相当するものです:

select count(*) from foo;

次のような答えが返ってきます:

1972 records.

そして、私はこれをウェブベースのデータストア ビューアの「コマンド ライン」から GQL で実行したいと考えています。(ご存知のとおり、一度に 20 個を表示し、「次の 20 個」を表示できるビューアです)

とにかく、それはとても簡単なことだと思いますが、正しい構文が見つからないようです。どんな助けでもいただければ幸いです。

ありがとう!

ベストアンサー1

ストレートなデータストアコンソールでは、直接これを行う方法はわかりませんでしたが、OFFSET キーワードを使用して間接的に行う方法がわかりました。

したがって、テーブルが与えられた場合、type というフィールドで "bar" という名前の値をチェックする foo を呼び出します。

SELECT * FROM foo WHERE type="bar" OFFSET 1024

(ここでは、バイナリ スタイルの「暖かい、寒い」という簡単なゲームを行います)

クエリが何も返さないとします。OFFSET を 512、次に 256、128、64 などに変更します。逆の場合も同じです。つまり、レコードが表示されなくなるまで 2048、4096、8192、16384 などと増やし、その後元に戻します。

職場で 1 つやってみました。2048 から始めて、2 つのレコードが出てきたことに気が付きました。テーブルには 2049 があります。もっと極端な場合 (3300 のレコードがあるとします)、2048 から始めて、たくさんあることに気が付き、4096 に行っても何もないことがわかります... 次に中間点 (2048 と 4096 の間の 1024 は 3072) を取り、レコードがあることがわかります... そこから前の中間点の半分 (512) を追加して 3584 になりますが、何もありません。半分 (256) 減らして 3328 になりますが、まだ何もありません。もう一度半分 (128) 減らして 3200 になると、レコードがあります。最後の値の半分 (64) まで増やすと、まだレコードがあります。さらに半分(32)上がって 3296 になります。これはまだ記録ですが、非常に小さいため、ちょうど 3300 であることが簡単にわかります。

テーブル内のレコード数を確認する場合、データストア統計と比較してこの方法の良い点は、WHERE 句で制限できることです。

おすすめ記事