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 ステートメントを実行するには、次の手順を行います。
- SQL Runnerに移動
- SQL Runner で、[データベース] タブをクリックします。
- SQL ランナーの [クエリ] ボックスに DDL ステートメントまたは DML ステートメントを入力します。(DDL と DML ステートメントのサポートと構文については、データベース言語のドキュメントをご覧ください)。
- [実行] をクリックしてデータベースでステートメントを実行します。
データベースでステートメントが正常に実行されると、SQL の [結果] ボックスに確認メッセージが表示されます。
EXPLAIN
を使用した実行プランの調査
データベースに対して SQL クエリを実行するだけでなく、SQL Runner を使用して EXPLAIN
関数をクエリで実行できます。ほとんどの SQL 言語でサポートされている EXPLAIN
関数は、クエリにデータベースの実行プランを返します。
- Explore からクエリを実行し、[データ] 領域の [SQL] タブをクリックして、クエリの SQL コマンドを表示します。
Explore の [SQL] タブで、[SQL Runner での説明] ボタンをクリックします。
Looker によって SQL Runner が開き、
EXPLAIN
関数内でクエリが読み込まれます。SQL ランナーで、[実行] をクリックして
EXPLAIN
関数を実行します。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 は適切な接続を事前に選択し、接続のデータベース言語を表示します。
接続の歯車メニューをクリックして、データベース接続のその他のオプションを表示します。
- [Show Processes] オプションを選択して、接続で現在実行中のクエリとプロセスに関する情報を表示します。
- [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 テーブル: 新しいブラウザタブを開き、テーブルの Looker Explore を開きます。
- Describe: 基になるテーブルの列名とそのデータ型を表示します。
- Show Indexes: テーブルのインデックス登録方法に関する情報を表示します。
- 10 行を選択: テーブルの最初の 10 行のクエリを返します。これは、データが実際にどのように見えるかを把握するのに適しています。
- Count: テーブルの総行数を取得する単純な
count(*)
クエリを返します。
列情報
テーブル名をクリックすると、テーブル内の列が表示されます。列名の横にある歯車アイコンをクリックすると、Looker では次のオプションが表示されます。
- 最も一般的な値: そのテーブル列について最も一般的な値のクエリと、その値が列内で検出された回数の数を返します。
- 近似カウントの個別: 列内で検出された一意の値の数の概数が表示されます。
列のデータ型情報の取得
SQL Runner を使用して列のデータ型情報を取得するには、次の手順を行います。
- SQL Runner で、[接続] プルダウンからデータベース接続を選択します。
- [スキーマ] プルダウンからスキーマを選択します。(BigQuery 接続の場合は、[プロジェクト] と [データセット] を選択します。)
- SQL Runner では、そのスキーマ内のテーブルのリストをデータベースに表示します。テーブルをクリックすると、そのテーブルの列が表示されます。
- 各列名には、データ型を表すアイコンがあります。列名にカーソルを合わせると、その列のデータ型が表示されます。
事前ビルド済み 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
を主キーとしての資格を失わせる可能性があるため、主キーが確実に一意になるようにデータベースの制限を実装することをおすすめします。