DataGrip 2021.1 の新機能

今年初のメジャーリリースであり、DataGrip の歴史上最も注目に値するリリースとなる可能性のある 2021.1 バージョンをご紹介します。 バージョン 2021.1 が皆さんの技術的課題や不便をより多く解決できること、そして、新機能を気に入ってもらえることを期待しています。 それでは始めましょう!

権限付与用の UI

この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。

オブジェクトを変更する際に権限を編集するための UI を追加しました。

データベースエクスプローラーのユーザーに対して Cmd/Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。

コンテキストライブテンプレート

選択範囲の縮小

これは、単純なステートメントをデータベースエクスプローラーから直接生成できるソリューションです。 一般的な Live Templates(ライブテンプレート)は、単純なクエリをすばやく記述する必要のあるさまざまなケースに対応しています。 しかし、JetBrains はデータベースエクスプローラーを使用している時点ですでに目的のオブジェクトに注目している場合があることを理解しているため、対象のオブジェクトから単純なクエリを取得できる便利な仕組みを用意しています。

また、この仕組みは他の多くのツールも反復作業を削減するために利用しており、多くのユーザーにとってなじみ深いものとなっています。

こちらの短い動画で実際の動作を確認できます。

このリストにある各コードスニペットは実際にはライブテンプレートですが、選択したオブジェクトのコンテキストで生成できる特殊なものです。 例えば、「Select first N rows from a table」(テーブルから最初の N 行を選択)テンプレートを見てみましょう。

ライブテンプレートの設定ページを開き、目的のテンプレートを見つけます。

Select first N rows from a table は一般的なテンプレートのように見えます(実際、同様の使い方ができます)。 この特殊な構文をすべてのデータベースで使用することはできないため、専用のダイアレクトがテンプレートに設定されています。 主な違いは、特殊な式 dbObjectName を $table$ 変数に使用することで、このテンプレートをデータベースエクスプローラーで使用できるようにしていることです。

また、独自テンプレートの追加や既存テンプレートの編集もできます。

Settings/Preferences | Database | General では、スクリプトの生成先を現在使用中のコンソールにするか、新規コンソールにするかを選択できます。

データエディター

MongoDB のデータ編集

このバージョンでは、MongoDB の操作に必要不可欠である MongoDB コレクションのデータを編集する機能を追加しました。 ステートメントのプレビューも使用できます。

 

より柔軟な編集を行えるよう、UI からフィールドの型を変更する機能を導入しています。 この機能は、フィールドのコンテキストメニューか、値エディターのいずれかで使用できます。

ソート処理の改善

データのソート処理を改善しました。

  • 新しい ORDER BY フィールドは、WHERE フィールド(以前は フィルター と呼ばれていたもの)と同様の動きをします。使用する句を入力して、それをグリッドのクエリに適用します。
  • デフォルトの状態では、ソート処理を「重ねる」ことはできません。 データをソートしたい列名をクリックすると、他の列を条件にしたソートは無効になります。 ソート処理を重ねたい場合は、Alt キーを押したまま列名をクリックしてください。

クライアント側でソート処理を使用したい場合は(この場合、DataGrip はクエリを再実行しませんが、代わりに現在のページ内のデータをソートします)、Sort via ORDER BY(ORDER BY でソート)のチェックを外してください。

数値型の主キーを基準にした定義済みの条件を使用してテーブルを開くこともできます。 この設定は、Settings/Preferences | Database | Data Views にあります。

新しいツールバー

データエディターのツールバーを改修しました。 今後、自動トランザクションモードでは Roll-back(ロールバック)および Commit(コミット)ボタンは表示されません。代わりに、Revert changes(変更を元に戻す)および Find(検索)の 2 つのボタンが新たに追加されています。

単一行結果セットの転置

Settings/Preferences | Database | Data Views に、単一行の結果セットを常に転置するためのオプションが追加されています。

ナビゲーション

操作の単純化

ナビゲーションを単純化し、次の設定を廃止しました。

選択範囲の縮小

この設定を今まで使用したことがなく、デフォルトでチェックボックスをオンにしていた方にとっての変化は次のとおりです。2021.1 では、SQL のオブジェクトに対して Go to declaration(宣言に移動、Ctrl/Cmd+B)を呼び出すと、データベースツリーではなく DDL にジャンプするようになりました

また、Select in database tree(データベースツリーで選択)アクションのショートカットを追加しました(Windows/Linux 用は Alt+Shift+B、macOS 用は Opt+Shift+B)。

この変更は主にロジックをより単純明快にし、どの操作でも期待どおりの場所に正確に遷移できるようにすることを目的に行われました。

まとめると今回のバージョン以降、オブジェクトにカーソルを合わせた状態で次の操作を実行できます。

  • Ctrl/Cmd+B を押すと、DDL が表示されます。
  • F4 を押すと、データが表示されます。
  • Alt/Opt+Shift+B を押すと、データベースツリー内のオブジェクトがハイライトされます。

なお、この変更によって、これまで使い慣れた操作が利用できなくなる可能性があるため、以前の操作感を維持できる方法を用意しています。 いくつかのヒントをご紹介します。

  • 便利なキーマップのカスタマイズ方法をマスターしましょう。 Ctrl/Cmd+B を使用してデータベースエクスプローラーを開きたい場合は、単純に Select in database tree(データベースツリーで選択)のショートカットを再マッピングしてください。
  • SQL で使用されているオブジェクトが未作成の状態で Ctrl/Cmd+B または Ctrl/Cmd+Click を押すと CREATE definition が開く動作を気に入っている場合は、前述のヒントで書いた再マッピングを実行した後に Go to declaration からこれらのショートカットを除去しないでください。
  • Prefer data editor over DDL editor(DDL エディターよりもデータエディターを優先する)設定にチェックを入れておらず、ダブルクリックで DDL を開く動作を気に入っている場合は、レジストリキー: database.legacy.navigate.to.code.from.tree の値を変更することで、この動作を復元することができます。 当社が把握しているデータによると、このようなフローで作業しているユーザーはごく少数です。 また、オブジェクトの DDL を開くショートカットを使用することをお勧めします。

この新しいフローで対応できないユースケースがある場合は、お知らせください。

接続

Azure MFA のサポート

Azure Active Directory の双方向認証がサポートされています。 この認証を有効にすると、ブラウザーを自動的に開いてログインできます。

Redshift 2.x のドライバー

このバージョンから、DataGrip のユーザーは Redshift 2.x の JDBC ドライバーを使用できるようになりました。 最も重要な機能強化は、クエリのキャンセル機能です。

Google BigQuery の完全サポート

Google BigQuery ダイアレクトのサポートは、旧リリースで追加されていました。 このリリースでは、このサポートを拡張しました。その結果、データベースのイントロスペクションとコード生成が適切に動作するようになり、JDBC ドライバーの機能に依存しなくなりました。

CockroachDB ダイアレクトのサポート

CockroachDB スクリプトの編集や同データベースの SQL クエリを記述すると、コードが適切にハイライトされ、クエリを実行する前にエラーが表示されるようになりました。 この対応は、今後のリリースで CockroachDB の完全サポートを行うための最初の一歩となるものです。

接続ウィンドウに関する改善

接続ウィンドウを改修し、よりわかりやすくしました。

  • ドライバーとデータソースを 2 つのタブに分けて表示するようにしました。 これにより、経験豊富なユーザーにドライバーのリストを煩わしく感じさせず、初心者がドライバーとデータソースを混同するのを防いでいます。
  • 各ドライバーのページに、Create data source(データソースの作成)ボタンを実装しました。
  • Test Connection(接続のテスト)ボタンをフッターに移動し、従来の General および SSH/SSL タブだけでなく、データソースのプロパティからも使用できるようにしました。
  • DDL データソースのプロパティページには、ダイアレクトを選択するためのドロップダウンリストを実装しました。

URL フィールドを展開できるようになったため、長い URL を楽に扱えるようになりました。

データベースエクスプローラー

選択範囲の縮小

データソースのコピーと貼り付けが簡単に

データソースのコピーと貼り付けの機能は、かなり前に導入されていました。 しかし、2021.1 からは世界一有名なショートカット(Ctrl/Cmd+C/V/X)でデータソースのコピー、切り取り、貼り付けを行えるようになりました。

  • データソースをコピーすると、クリップボードにコピーされた XML をメッセンジャーで共有することができます。 また、Paste(貼り付け)アクションを使用して別の場所から XML コードを貼り付けることもできます。
  • データソースの切り取りと貼り付けを 1 つのプロジェクトの中で行った場合は、単に移動されるだけです。パスワードは要求されません。 ただし、その他すべてのケースではパスワードが要求されます。
  • Cut(切り取り)は Ctrl/Cmd+Z で取り消すことができます。

新しいレイアウト

データベースエクスプローラーのデフォルトレイアウトを変更し、重要でないオブジェクトを専用ノードの下に表示するようにしました。 ユーザーはテーブル、ビュー、ルーチンの操作にほとんどの時間を費やしていますが、ユーザー、ロール、表領域、外部データラッパー、その他多くのオブジェクトの表示はあまり優先度が高くありません。 そのため、これらの従属的なオブジェクトを Server Objects(サーバーオブジェクト)および Database Objects(データベースオブジェクト)の 2 つのノードの下に隠しました。

 

旧レイアウトに戻したい場合は、歯車アイコンの下にある設定で Group Database and Schemas(データベースとスキーマをグループ化)を選択するだけです。

自動生成されたオブジェクトの非表示 Oracle

Oracle を使用している場合、以下のような自動生成されたオブジェクトをツリーに表示するかどうかを切り替えるオプションが表示されます。

  • マテリアライズドビューログ
  • マテリアライズドビューを構成するテーブル
  • セカンダリテーブル

新しい種類のオブジェクト SQLite

SQLite で関数、モジュール、仮想列に対してイントロスペクションを実行できます。

サポート対象外のデータベースに関する改善

データソーステンプレート

2021.1 からはサポート対象外のデータベースのデータソースをより簡単に追加できるようになりました。 現在、AWS Athena / Informix / Presto / SAP HANA / Google Cloud Spanner その他に対応した JDBC ドライバーを提供しています。 これらのデータベースは、データベースリストの Other(その他)セクションで確認できます。

以下の改善を追加で行いました。

  • ドライバーを自分でダウンロードし、そのドライバーに合わせてデータソースを手動作成する必要がなくなりました。
  • 新しいバージョンのドライバーは DataGrip によって提供されます。
  • 一部の新しいデータベースに専用のアイコンを割り当てました。

これらのデータベースに対するサポートには制限があることにご注意ください。 サポートの可否は、主に JDBC ドライバーの機能と DataGrip の SQL エディターによる SQL:2016 ダイアレクトのサポート状況に依存しています。

クエリ解析

サポート対象外データベースを使用するための新しい設定を導入しました。 これらのデータベースを DataGrip で操作する際は、SQL:2016 ダイアレクトか Generic ダイアレクトを使用する必要があります。 GenericSQL:2016 とほぼ同じですが、DataGrip が検出したエラーをハイライトしないという点だけが異なります。

設定にアクセスするには、Settings/Preferences | Database | General | Split a script for execution in Generic and ANSI SQL dialects(Generic/ANSI SQL のダイアレクトで実行するためのスクリプトを分割)を開いてください。 以下の値を選択できます。

  • On valid ANSI SQL statements or by separator – 有効な ANSI SQL ステートメントか区切り文字で分割します。大部分のケースに適したデフォルトの設定です。 別の言い方をすれば、最善を尽くしてユーザーが実行したい内容を理解するよう努めます。
  • On ANSI SQL Statements – 従来通り、ANSI SQL ステートメントでステートメントを分割します。 このロジックは、DataGrip が SQL:2016 の文法に基づいて有効であると判断するものにのみ基づいています。
  • By statement separator – ステートメントを区切り文字で分割して抽出、実行します。 最初のオプションがうまく動作しなかった場合は、こちらを使用してください。 GenericSQL の場合、区切り文字はセミコロンです。 今後は独自の区切り文字を設定することはできませんので、ご注意ください。

以下のような問題を解決しています。

  • 多くのユーザーから CTE の実行に関する問題が報告されていました。 この問題は Generic の文法が SQL:92 から SQL:2016 にアップグレードされた際に部分的に緩和されているはずですが、On valid ANSI SQL statements or by separator オプションは今後も複雑な CTE の処理に役立ちます。 このオプションで機能する別のステートメントのとして、標準的ではない MERGE ステートメントが挙げられます。
  • On valid ANSI SQL statements or by separator オプションは、SQL:2016 の文法的にステートメントではないもの(show databases など)を実行するのにも役立ちます。

コーディング支援

CTE 使用時のあいまいな列名

あいまいな列名を報告するインスペクションが改善され、共通テーブル式(CTE)内のカラムを考慮するようになりました。

システム関数を修飾子なしで使用可能に SQL Server

システム関数とプロシージャを修飾子なしで使用している場合にエラーとしてハイライトしないようになりました。 ナビゲーションと補完がこれらに対しても機能するようになりました。

JSON Lines のサポート

Thanks to the IntelliJ Platform, DataGrip now has support for the newline-delimited JSON Lines format used for working with structured data and logs. IDE は .jsonl.jslines.ldjson.ndjson のファイルタイプを認識します。

フォントの太さを調整可能

新しいタイポグラフィ設定を使用してフォントスタイルを微調整できます。 バージョン 2021.1 では、主なフォントスタイルと太字のフォントスタイルの太さを Settings/Preferences | Editor | Fonts で選択できます。

インポート / エクスポート

ロードされていないデータに関する警告

完全にロードされていないバイナリデータをコピーすると、次のような通知が表示されます。

データを切り捨てたくない場合は、Settings/Preferences | Database | Data Views | Maximum number of bytes loaded per value で値を増やしてください。

Excel ファイルへのクエリ出力

Excel にエクスポートすると、クエリが出力ファイル内の独立したシートに埋め込まれます。

コンテキストメニューに First row is header オプションを追加

以下のように、CSV ファイルをインポートする際には最初の行がヘッダーであることを明確にするオプションをコンテキストメニューから使用できます。

ユーザーインターフェース

選択範囲の縮小

ドラッグアンドドロップによるフォルダーの接続

フォルダーをドラッグアンドドロップでプロジェクトに接続できるようになりました。

選択範囲の縮小

分割表示でのタブの最大化

エディターを縦に分割するタブが複数開いている場合、これらのタブをダブルクリックするとエディターのウィンドウを各タブに対して最大化できます。 ウィンドウをもう一度ダブルクリックすると、元のサイズに戻ります。

タブのタイトルに長い名前を使用可能に

少し前にタブの名前が短縮されました。 それでは都合の悪いユーザーもいますので、お好みの設定を行えるようにしました。