Amazon Keyspaces の CQLSELECTステートメントを使用してテーブルからデータを読み取る - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Keyspaces の CQLSELECTステートメントを使用してテーブルからデータを読み取る

Amazon Keyspaces テーブルへのデータの挿入とロード」セクションでは、SELECT ステートメントを使用してテーブルにデータを正しく追加できたことを確認しました。このセクションでは、SELECT を使用して特定の列を表示し、特定の条件を満たす行のみを表示する方法について詳しく説明します。

SELECT ステートメントの一般的な形式は次のとおりです。

SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;

テーブル内のすべてのデータを選択する

最も単純な形式の SELECT ステートメントにより、テーブル内のすべてのデータが返されます。

重要

実稼働環境では、通常、このコマンドを実行することはベストプラクティスではありません。これは、テーブル内のすべてのデータが返されるためです。

テーブルのすべてのデータを選択するには
  1. を開きます。 AWS CloudShell および は、次のコマンドを使用して Amazon Keyspaces に接続します。必ず を更新してください。us-east-1 独自の リージョンを使用します。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 次のクエリを実行します。

    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

列のサブセットを選択する

列のサブセットをクエリするには
  1. を開きます。 AWS CloudShell および は、次のコマンドを使用して Amazon Keyspaces に接続します。必ず を更新してください。us-east-1 独自の リージョンを使用します。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 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 ステートメントの最後に追加します。

行のサブセットをクエリするには
  1. を開きます。 AWS CloudShell および は、次のコマンドを使用して Amazon Keyspaces に接続します。必ず を更新してください。us-east-1 独自の リージョンを使用します。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 特定の年の報酬のレコードのみを取得するには、次のクエリを実行します。

    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、、 awardの場合monthWHERE句で次の列を使用できます。

      • year

      • year AND month

      • year AND month AND award

    • 次の例で示されているように、WHERE 句の複合条件の後に ALLOW FILTERING を追加します。

      SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;

      ALLOW FILTERING を使用すると、特に、複数に分割された大規模なテーブルでは、パフォーマンスの一貫性が失われる可能性がありますので注意が必要です。

試してみましょう

独自のCQLクエリを作成して、book_awardsテーブルから以下を検索します。

  • 2020 Wolf 賞の勝者を見つけ、本のタイトルと作成者をランク順に表示します。

  • 2020 年のすべての賞の初等賞品の勝者を表示し、本のタイトルと賞名を表示します。