翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
句で使用できます。year
year
と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 位を表示し、その本のタイトルと賞の名前を表示します。