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. [データベース] タブをクリックします。
  2. [SQL Query] ボックスにステートメントを入力します。(DDL ステートメントと DML ステートメントのサポートと構文については、お使いのデータベース言語のドキュメントをご覧ください)。
  3. [実行] をクリックしてステートメントを実行します。
  4. [結果] ボックスで、ステートメントが正常に実行されたことを確認します。

フォローアップ クエリを実行して、ステートメントが成功したことを確認できます。上記の例では、データベースに「Erin Looker-Docs」というユーザーを追加しました。SELECT クエリを実行して、ユーザーが正しく追加されたことを確認できます。

EXPLAIN を使用して実行プランを調べる

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

  1. Explore でクエリを実行し、[データ] 領域の [SQL] タブをクリックしてクエリの SQL コマンドを表示します。
  2. SQL コマンドの下にある [SQL Runner で説明] をクリックし、EXPLAIN 関数内の SQL Runner にクエリを読み込みます。
  3. [実行] をクリックして EXPLAIN 関数を実行します。
  4. EXPLAIN 関数の出力を表示します。

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

上の MySQL の例では、EXPLAIN 関数は、データベースがクエリを完了するために行ったステップのリストを返します。これは、クエリのパフォーマンスが低下していると思われるクエリに便利な場合があります。これは、テーブルがインデックスを使用してパフォーマンスを改善できる場合に、クエリによってデータベースがテーブル全体をスキャンする可能性があるためです。

SQL Runner で EXPLAIN を使用して SQL を最適化する方法の例については、こちらのヘルプセンター記事をご覧ください。

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

SQL Runner の [Database] タブには、データベースに関する分析情報を確認できるさまざまなツールが用意されています。

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

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

接続の歯車アイコンをクリックすると、データベース接続のその他のオプションが表示されます。

[Refresh Schemas & Tables] オプションを使用して、SQL Runner の左側のナビゲーション ペインに、データベースのスキーマとテーブルを再設定する。

[Show Processes] オプションを使用して、接続で現在実行中のクエリとプロセスに関する情報を表示します。

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

複数のデータベースをサポートする BigQuery 接続を選択すると、Looker は言語固有のオプションを歯車メニューに表示します。

[Refresh Schemas & Tables] オプションを使用して、SQL Runner の左側のナビゲーション ペインに、データベースのスキーマとテーブルを再設定する。

[一般公開プロジェクトを検索] オプションを使用して、情報スキーマに表示されない一般公開データセットを検索します。

歯車メニューは、[一般公開プロジェクトを検索] オプションと [使用可能なプロジェクトを表示] オプションを切り替えます。

歯車メニューから [使用可能なプロジェクトを表示] をクリックすると、左側のナビゲーション パネルの接続固有の BigQuery プロジェクトとテーブルに戻ります。

データベースを検索する

選択した [スキーマ] の下に検索ボックスが表示されます。この検索では、すべてのテーブルの名前と、検索ボックスで文字列を含むテーブル列が参照されます。次の図では、'airport_name'は列であり、'airport_remarks'はテーブルです。

検索結果の 1 つをクリックすると、SQL Runner でそのアイテムに移動します。

BigQuery 固有の検索オプション

複数のデータベースをサポートする BigQuery 接続を選択する場合は、[プロジェクト] セレクタから BigQuery プロジェクトを選択して、関連するデータセットとテーブルも公開する必要があります。

プロジェクトを選択したら、データセットの選択またはスキーマの検索に進むことができます。

テーブルの情報の取得

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

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

SQL Runner には、データの把握に役立つクエリがあらかじめいくつか用意されています。これらのクエリを使用するには、テーブル名またはテーブル列名の横にある歯車アイコンをクリックし、目的のクエリを選択します。[SQL Query] セクションに SQL が自動的に生成され、クエリが実行されます。

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

テーブル情報

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

  • [説明] オプションを使用して、基になるテーブルの列名とそのデータ型を表示します。
  • [Show Indexes] オプションを使用して、テーブルがインデックスに登録された方法に関する情報を取得します。
  • [Select 10] オプションを使用して、表の最初の 10 行を返します。データが実際にどのようなものかを把握するために適した方法です。
  • [Count] オプションを使用すると、データベースで単純な count(*) を実行し、テーブルの合計行数を取得します。

列情報

Looker では、列名の横にある歯車アイコンをクリックすると、次のオプションが表示されます。

  • テーブル列の歯車メニューから [最も一般的な値] オプションを使用して、そのテーブル列の最も一般的な値と、その値が列で見つかった回数のリストを表示するクエリを実行します。
  • テーブルの列歯車メニューから [Approximate Count Distinct] オプションを使用して、列内で見つかった一意の値の数のおおよそのカウントを取得します。

列のデータ型情報の取得

接続とスキーマを選択すると、そのスキーマ内のすべてのテーブルが表示されます。以下の例では、thelookdemo_db スキーマが選択されています。

  1. スキーマでテーブルを選択すると、そのテーブルの列が表示されます。
  2. 列名にカーソルを合わせると、その列のデータ型が表示されます(この場合は整数)。

各列名には、データ型を表すアイコンもあります。

事前構築済み SQL クエリの編集

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

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

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

クエリの数が 10 行に制限される前にデータが並べ替えられるため、結果には最も高いカウント値が含まれます。下のように各 id 値のカウントは 1 であるため、このテーブルの主キーは id であると考えられます。ただし、このクエリでは、テーブル内の既存の行の最大数のみを指定するため、可能な場合は、データベース レベルで primary_key も指定する必要があります。