SQL Runner を使用してデータベース機能を管理

SQL Runner によって、データベースに直接アクセスし、そのアクセスをさまざまな方法で活用できます。SQL Runner を使用すると、スキーマ内のテーブルの操作、SQL クエリからのアドホック Explore の使用、データに対する事前に記述された説明クエリの実行、SQL Runner の履歴の確認、結果のダウンロード、クエリの共有、派生テーブルとしての LookML プロジェクトへの追加、その他の便利なタスクを実行を容易に行うことができます。

このページでは、SQL Runner を使用してデータベース スキーマとデータを変更する方法、EXAMINE ステートメントを使用して、データベースの実行プランを表示する方法、SQL Runner を使用してデータベースに関する情報を取得する方法を説明します。詳細については、以下のその他のドキュメントのページをご覧ください。

データベースのスキーマとデータの変更

データベースでのクエリの実行に加えて、SQL Runner の [Database] タブでは、データベースでデータ定義言語(DDL)とデータ操作言語(DML)のステートメントを実行できます。SQL Runner を使用すると、スキーマの変更(作成、削除、変更など)とデータの変更(挿入、更新、削除など)を行うことができます。SQL 言語によって DDL ステートメントと DML ステートメントのサポートが異なるため、お使いのデータベースのドキュメントを参照して、サポートされているステートメントを確認してください。

Looker は、ユーザーがデータベースで実行できる SQL ステートメントの承認を制御しません。use_sql_runner 権限を持つ Looker ユーザーは SQL Runner にアクセスできますが、SQL Runner はユーザーが実行できるコマンドを制限しません。データベース管理者は、SQL Runner ユーザーがデータベース スキーマを変更できないようにするには、データベース自体のユーザー権限を構成する必要があります。

SQL Runner のデータベースで DDL ステートメントまたは DML ステートメントを実行するには、次の手順を行います。

  1. SQL Runnerに移動
  2. SQL Runner で [データベース] タブをクリックします。
  3. SQL Runner の [クエリ] ボックスに DDL ステートメントまたは DML ステートメントを入力します。(DDL と DML ステートメントのサポートと構文については、データベース言語のドキュメントをご覧ください)。
  4. [実行] をクリックして、データベースでステートメントを実行します。

ステートメントがデータベースで正常に実行されると、SQL [結果] ボックスに確認が表示されます。

EXPLAIN を使用した実行プランの調査

データベースに対して SQL クエリを実行するだけでなく、SQL Runner を使用して EXPLAIN 関数をクエリで実行できます。ほとんどの SQL 言語でサポートされている EXPLAIN 関数は、クエリにデータベースの実行プランを返します。

  1. Explore でクエリを実行し、[データ] エリアの [SQL] タブをクリックして、クエリの SQL コマンドを表示します。
  2. Explore の [SQL] タブで、[SQL Runner で説明] ボタンをクリックします。

    Looker で SQL Runner を開き、EXPLAIN 関数内にクエリを読み込みます。

  3. SQL Runner で [実行] をクリックして、EXPLAIN 関数を実行します。

  4. EXPLAIN 関数の出力を表示します。

EXPLAIN レスポンスの正確な情報と形式は言語によって異なるため、詳細については、言語のドキュメントをご覧ください。

上記の MySQL の例では、EXPLAIN 関数は、データベースがクエリを完了するために実行されたステップのリストを返します。これは、実行速度の遅いクエリに有用である場合があります。テーブルがインデックスを使用してパフォーマンスを向上できる可能性があるときに、データベースがクエリ内のテーブル全体をスキャンしていることに気付く場合があるからです。

SQL Runner で EXPLAIN を使用して SQL を最適化する詳細な例については、EXPLAIN を使用して SQL を最適化する方法のコミュニティ投稿をご覧ください。

データベースに関する情報の取得

SQL Runner の [Database] タブには、データベースに関する分析情報を得るための多くのツールが用意されています。

データベース接続情報の取得

SQL Runner で接続を選択すると、Looker は [SQL QUERY] バナーの右側にその接続のデータベース言語を表示します。[SQL Runner で開く] または [SQL Runner で説明する] を選択して SQL Runner に移動した場合、Looker は適切な接続を事前に選択し、接続のデータベース言語を表示します。

接続の歯車メニューをクリックして、データベース接続のその他のオプションを表示します。

  • [プロセスを表示] オプションを選択すると、接続で現在実行中のクエリとプロセスに関する情報が表示されます。
  • [Refresh Schemas & Tables] オプションを選択して、SQL Runner の左側のナビゲーション パネルに、データベースのスキーマとテーブルを再配置します。

BigQuery の歯車メニュー オプション

複数のデータベースをサポートする BigQuery 接続を選択すると、Looker の歯車メニューに方言固有のオプションが表示されます。メニュー項目は、現在選択されているオプションに応じて、[使用可能なプロジェクトを表示] と [一般公開プロジェクトを検索] に切り替わります。

  • [Refresh Schemas & Tables] を選択して、SQL Runner の左側のナビゲーション パネルに、データベースにあるスキーマとテーブルを再配置します。
  • 使用可能なプロジェクトが表示されたら、[一般公開プロジェクトを検索] の歯車メニュー オプションがあります。情報スキーマに表示されない一般公開データセットを検索するには、このオプションを選択します。
  • 一般公開プロジェクトが表示されている場合は、歯車メニューに [使用可能なプロジェクトを表示] オプションがあります。このオプションを選択すると、SQL Runner の左側のナビゲーション パネルで、表示が接続固有の BigQuery プロジェクトとテーブルに戻ります。

データベースの検索

SQL Runner では、選択したスキーマ(または Google BigQuery 接続の場合はデータセット)の下に検索ボックスが表示されます。

この SQL Runner 検索では、検索ボックス内の文字列を含むすべてのテーブルとテーブル列の名前がブラウジングされます。次の図では、「airport_name」が列、「airport_remarks」がテーブルです。

検索結果の 1 つをクリックして、SQL Runner 内のその項目に移動します。

テーブルの情報の取得

デフォルトでは、接続とスキーマを選択すると、SQL Runner はすべてのテーブル情報をプリロードします。多数のテーブルや非常に大きなテーブルがある接続の場合は、管理者が [Connections] ページで [SQL Runner Precache] オプションを選択解除することで、この動作を無効にできます。

SQL Runner の左側のナビゲーション パネルを使用して、接続内のスキーマとテーブルを移動できます。接続とスキーマを選択すると、そのスキーマ内のすべてのテーブルが表示されます。テーブル名をクリックすると、そのテーブル内のフィールドが表示されます。

SQL Runner には、データの理解に役立ついくつかの事前作成済みクエリがあります。これらのクエリを使用するには、テーブルまたはテーブル列の名前の横にある歯車アイコンをクリックし、目的のクエリを選択します。Looker では、[SQL Query] セクションに SQL が自動的に生成され、クエリが実行されます。

使用できるクエリは、データベース言語によって異なります。

テーブル情報

テーブル名の横にある歯車をクリックすると、次のオプションが表示されます。

  • テーブルの検索: 新しいブラウザタブが開き、テーブルの Looker Explore が表示されます。
  • 説明: 基礎となるテーブルの列名とそのデータ型を表示できます。
  • インデックスの表示: テーブルのインデックス作成方法に関する情報を表示します。
  • 10 件を選択: テーブルの最初の 10 行のクエリを返します。これは、データの実際の様子を理解するのに良い方法です。
  • カウント: テーブルの合計行数を取得する単純な count(*) クエリを返します。

列情報

テーブル名をクリックすると、テーブル内の列が表示されます。列名の横にある歯車をクリックすると、次のオプションが表示されます。

  • 最も一般的な値: テーブル列で最も一般的な値と、その値がその列で検出された回数を返します。
  • Approximate Count Distinct: 列にある一意の値の数の近似カウントを表示します。

列のデータ型情報の取得

SQL Runner を使用して列のデータ型情報を取得するには、次の手順を行います。

  1. SQL Runner で、[接続] プルダウンからデータベース接続を選択します。
  2. [スキーマ] プルダウンからスキーマを選択します。(BigQuery 接続の場合は、[プロジェクト] と [データセット] を選択します。)
  3. SQL Runner では、そのスキーマ内のテーブルのリストをデータベースに表示します。テーブルをクリックすると、そのテーブル内の列が表示されます。
  4. 各列名には、データ型を表すアイコンがあります。列名にカーソルを合わせると、その列のデータの種類が表示されます。

事前ビルド済み SQL クエリの編集

[Query] 領域で、テーブルとフィールドの歯車メニューから選択したプリセットの SQL クエリを含む、任意の SQL クエリを編集できます。

たとえば、SQL Runner の [Count] クエリを使用して、データベースの基本的なカウント コマンドを読み込み、SQL クエリを編集できます。そのため、public.users テーブルの id 列が主キーであると考える場合は、次のようにカウントクエリを編集して、重複値がないことを確認します。

SELECT id ,COUNT(*)
FROM public.users
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10

クエリは 10 行に制限される前のカウントで並べ替えられるため、結果には最も高いカウント値が含まれます。このクエリによって id 値ごとに 1 のカウントが返される場合、id がこのテーブルの主キーになると考えられます。ただし、このクエリでは、クエリの実行時にテーブル内の行のみが指定されます。データベースへの今後の挿入が、id を主キーとしての資格を失わせる可能性があるため、主キーが確実に一意になるようにデータベースの制限を実装することをおすすめします。