翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Keyspaces で CQL SELECT ステートメントを使用してテーブルからデータを読み取る
「Amazon Keyspaces テーブルにデータを挿入してロードする」セクションでは、SELECT ステートメントを使用してテーブルにデータを正しく追加できたことを確認しました。このセクションでは、SELECT を使用して特定の列を表示し、特定の条件を満たす行のみを表示する方法について詳しく説明します。
SELECT ステートメントの一般的な形式は次のとおりです。
SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;
テーブル内のすべてのデータを選択する
最も単純な形式の SELECT ステートメントにより、テーブル内のすべてのデータが返されます。
重要
このコマンドを実行するとテーブル内のすべてのデータが返されるため、通常、本番環境でこのコマンドを実行することはベストプラクティスではありません。
テーブルのすべてのデータを選択するには
-
を開き AWS CloudShell 、次のコマンドを使用して Amazon Keyspaces に接続します。
us-east-1は実際のリージョンに置き換えてください。cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl -
次のクエリを実行します。
SELECT * FROM catalog.book_awards ;column_listにワイルドカード文字 (*) を使用するとすべての列が選択されます。ステートメントの出力は、次の例のようになります。year | award | category | rank | author | book_title | publisher ------+------------------+-------------+------+--------------------+-----------------------+--------------- 2020 | Wolf | Non-Fiction | 1 | Wang Xiulan | History of Ideas | AnyPublisher 2020 | Wolf | Non-Fiction | 2 | Ana Carolina Silva | Science Today | SomePublisher 2020 | Wolf | Non-Fiction | 3 | Shirley Rodriguez | The Future of Sea Ice | AnyPublisher 2020 | Kwesi Manu Prize | Fiction | 1 | Akua Mansa | Where did you go? | SomePublisher 2020 | Kwesi Manu Prize | Fiction | 2 | John Stiles | Yesterday | Example Books 2020 | Kwesi Manu Prize | Fiction | 3 | Nikki Wolf | Moving to the Chateau | AnyPublisher 2020 | Richard Roe | Fiction | 1 | Alejandro Rosalez | Long Summer | SomePublisher 2020 | Richard Roe | Fiction | 2 | Arnav Desai | The Key | Example Books 2020 | Richard Roe | Fiction | 3 | Mateo Jackson | Inside the Whale | AnyPublisher
列のサブセットを選択する
列のサブセットをクエリするには
-
を開き AWS CloudShell 、次のコマンドを使用して Amazon Keyspaces に接続します。
us-east-1は実際のリージョンに置き換えてください。cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl -
award列、category列、year列のみを検索するには、次のクエリを実行します。SELECT award, category, year FROM catalog.book_awards ;出力には、指定した列だけが、
SELECTステートメントに指定された順序で表示されます。award | category | year ------------------+-------------+------ Wolf | Non-Fiction | 2020 Wolf | Non-Fiction | 2020 Wolf | Non-Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Richard Roe | Fiction | 2020 Richard Roe | Fiction | 2020 Richard Roe | Fiction | 2020
行のサブセットを選択する
大きなデータセットをクエリする場合、特定の条件を満たすレコードのみが必要になる可能性があります。これを行うには、WHERE 句を SELECT ステートメントの最後に追加します。
行のサブセットをクエリするには
-
を開き AWS CloudShell 、次のコマンドを使用して Amazon Keyspaces に接続します。
us-east-1は実際のリージョンに置き換えてください。cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl -
特定の年 (year) の賞 (award) に関するレコードのみを取得するには、次のクエリを実行します。
SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Wolf' ;上記の
SELECTステートメントは、次の出力を返します。year | award | category | rank | author | book_title | publisher ------+-------+-------------+------+--------------------+-----------------------+--------------- 2020 | Wolf | Non-Fiction | 1 | Wang Xiulan | History of Ideas | AnyPublisher 2020 | Wolf | Non-Fiction | 2 | Ana Carolina Silva | Science Today | SomePublisher 2020 | Wolf | Non-Fiction | 3 | Shirley Rodriguez | The Future of Sea Ice | AnyPublisher
WHERE 句について
WHERE 句は、データをフィルタリングして指定の基準を満たすデータのみを返すために使用されます。指定の基準は単純条件または複合条件になります。
WHERE 句で条件を使用する方法
-
単純条件 — 単一の列。
WHERE column_name=value次の条件のいずれかを満たしていれば
WHERE句の単純条件を使用できます。-
この列は、テーブルの唯一のパーティションキー列です。
-
WHERE句の条件の後にALLOW FILTERINGを追加します。ALLOW FILTERINGを使用すると、特に、複数に分割された大規模なテーブルでは、パフォーマンスの一貫性が失われる可能性がありますので注意が必要です。
-
-
複合条件 — 複数の単純条件を
ANDによって結合したもの。WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...次の条件のいずれかを満たしていれば
WHERE句の複合条件を使用できます。-
WHERE句では、テーブルのパーティションキーの列を使用できますが、それらの列を全部含めるか、一部だけを含める必要があります。WHERE句で一部の列だけを使用する場合は、パーティションキーの先頭列を筆頭に、左から右に連続するパーティションキー列を含めなければなりません。例えば、パーティションキー列がyear、month、awardである場合、次の列をWHERE句で使用できます。yearyearとmonthの両方year、month、awardのすべて
-
次の例で示されているように、
WHERE句の複合条件の後にALLOW FILTERINGを追加します。SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;ALLOW FILTERINGを使用すると、特に、複数に分割された大規模なテーブルでは、パフォーマンスの一貫性が失われる可能性がありますので注意が必要です。
-
試してみましょう
独自の CQL クエリを作成して、book_awards テーブルで以下の検索を実行してみましょう。
-
2020 年の Wolf 賞 (award) の受賞作品を検索し、本のタイトル (book title) と著者 (author) をランク (rank) 順に表示します。
-
2020 年のすべての賞の 1 位を表示し、その本のタイトルと賞の名前を表示します。