DataGrip 2021.3 の新機能

DataGrip 2021.3 がリリースされました! 2021 年で 3 回目となるメジャーアップデートでは、さまざまな機能改善が行われています。 その内容を詳しく見てみましょう!

データエディター

集計

範囲選択したセルを集計する Aggregate(集計)ビューを表示する機能を追加しました。 データ管理に役立ち、余計なクエリを書く手間を省ける待望の機能です! この機能追加により、データエディターに Excel や Google スプレッドシートにより近い性能と使いやすさが備わりました。

ビューで表示するセル範囲を選択し、右クリックして Show Aggregate View(集計ビューの表示)を選択してください。

機能の要約:

  • Aggregate(集計)ビューは Value(値)ビューと同じパネルに表示され、それぞれに独自のタブが用意されています。 このパネルはデータエディターの下に移動できます。
  • 歯車アイコンを使って、このビューから集計を表示または非表示にできます。
  • 集計もエクストラクターと同様にスクリプトになっています。 そのため、デフォルトで組み込まれている 9 つのスクリプトとは別に独自のスクリプトを作成して共有することができます。
  • 集計スクリプトとエクストラクターには互換性があります。 以前にエクストラクターを使用して 1 つの値のみを取得していた場合、それを Aggregators(アグリゲーター)フォルダーにコピーして集計に使用できるようになりました。 Extractors(エクストラクター)フォルダーと同様に、このフォルダーも Scratches and consoles / Extensions / Database Tools and SQL(スクラッチとコンソール / 拡張機能 / データベースツールと SQL)にあります。

1 つの集計値がステータスバーに表示され、どの値(和、平均値、中央値、最小値、最大値など)に指定するかを選択できます。

ツリーノードのテーブルビュー

任意のスキーマノードで F4 を押すと、そのノードの内容がテーブルビューで表示されます。 例えば、スキーマ内のすべてのテーブルをテーブルビューで表示できます。

 

または、テーブルの列をテーブルビューで表示できます。

このビューを使用して、列の表示または非表示、多彩な形式でのデータエクスポート、およびテキスト検索を行なうことができます。 さらに重要なことに、以下のナビゲーションアクションを使用することも可能です。

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

個別分割

エディターを分割してもう一度同じテーブルを開くと、2 つのデータエディターが完全に別々のウィンドウに表示されます。 そのため、それぞれに異なるフィルターやソートオプションを設定して、データの比較と操作を行えます。 以前はフィルターとソート順が連動していたため、あまり満足できるものではありませんでした。

カスタムフォント

カスタムフォント

データ表示専用のフォントは、Database | Data views | Use custom font から選択できます。

複数値を指定した外部キーへの移動

複数値を指定した外部キーへの移動

データエディターでは、複数の値を選択して関連データに移動できるようになりました。

デフォルトのソート設定

デフォルトのソート設定

テーブルのデフォルトのソート方法を、ORDER BY または client-side に定義できます。後者は新しいクエリを実行せず、現在のページのみでソートを実行します。 この設定は、Database | Data views | Sorting | Sort via ORDER BY にあります。

バイナリデータの表示モード

バイナリデータの表示モード

16 バイトデータがデフォルトで UUID として表示されるようになりました。 また、バイナリデータの表示方法をデータエディターの列でカスタマイズできるようになりました。

filter {} と sort {} の補完

filter {}sort {} の補完 MongoDB

MongoDB コレクションでデータをフィルタリングする際に、コード補完を使用できるようになりました。

VCS でのデータベース管理

DDL データソースと実際のデータソースのマッピング

このリリースは、実際のデータソースに基づいて DDL データソースを生成する機能を導入した過去のリリースを必然的に引き継いでいます。 このリリースでは、このワークフローが完全にサポートされています。 以下の操作を実行できます。

  • 実際のデータソースから DDL データソースを生成する: 2021.2 の発表をご覧ください。
  • DDL データソースを実際のデータソースにマッピングします。
  • これらのデータソースの比較と同期を双方向で行います。

念のために説明しておきますが、DDL データソースはある SQL スクリプトのセットに基づくスキーマを含む仮想データソースです。 これらの SQL スクリプトファイルを VCS に格納すると、バージョン管理システム(VCS)でデータソースを管理することができます。

データ構成プロパティに DDL mappings(DDL マッピング)という新しいタブを追加しました。このタブでは、どの実際のデータソースをどの DDL データソースにマッピングするかを定義できます。

これらの新機能が日常の VCS フローに実際にどのように役立つかは、こちらの記事をご覧ください。

新しい Database Diff ウィンドウ

DDL データソースと実際のデータソースを比較して同期するには、コンテキストメニューの DDL Mappings サブメニューで Apply from...Dump to... を選択します。

この新しくなったウィンドウにはより優れた UI が備わっており、右側のペインには同期を実行した後に得られる結果が明確に表示されます。

右側のペインには、発生しうる結果を色で示した凡例が表示されます。

  • 緑、斜体: オブジェクトが作成されます。
  • グレー: オブジェクトが削除されます。
  • : オブジェクトが変更されます。

結果スクリプトは Script preview タブに表示されます。この結果スクリプトは新しいコンソールで開くことも、このダイアログから実行することもできます。 このスクリプトを実行すると、右にあるデータベース(ターゲット)を左にあるデータベース(ソース)のコピーにする変更が適用されます。

Script preview タブに加えて、下のペインに Object Properties Diff タブと DDL Diff タブがあります。 これらのタブには、元のデータベースとターゲットデータベースに含まれるオブジェクトの特定バージョン間の差分が表示されます。

念のために説明しておきますが、単に 2 つのスキーマまたはオブジェクトを比較する場合は、それらを選択して Ctrl + D を押すだけです。

重要! 差分ビューアーはまだ鋭意開発中です。 各データベースには固有の機能があり、実際に同一のオブジェクトでも異なるオブジェクトとして表示されることがあるためです。 これは、型エイリアスまたは生成時にデフォルトプロパティが省略されているために発生する場合があります。 このバグに遭遇した場合は、トラッカーにご報告ください。

ファイル関連のアクション

ファイル関連のアクション

すべてのファイル関連アクションは、DDL データソース要素でも使用できます。 例えば、スキーマ要素に関連するファイルをデータベースエクスプローラーから削除、コピー、またはコミットすることが可能です。

Auto-sync

Auto-sync

このオプションが有効な場合、DDL データソースは対応するファイルへの変更に伴って自動的にリフレッシュされます。 この動作は以前からデフォルトになっていましたが、このリリースでは無効化するオプションが追加されました。

無効化するとソースファイルの変更が DDL データソースに自動的に反映されなくなるため、Refresh をクリックして変更を適用しなければならなくなります。

デフォルトのスキーマとデータベースの設定

Default schemas/databases ペインでは、データベースとスキーマの名前を定義できます。これらの名前は、DDL データソースに表示されます。 DDL スクリプトには通常は名前が含まれず、デフォルトではダミーのデータベース名とスキーマ名が使用されます。

接続

偶発的なスペース挿入の警告

User(ユーザー)または Password(パスワード)を除く値の先頭または末尾にスペースが含まれる場合に Test Connection(テスト接続)をクリックすると、DataGrip がそれを警告するようになりました。

専用データソースとしての LocalDB SQL Server

SQL Server LocalDB 独自の専用ドライバーがドライバーリストに登録されています。 つまり、LocalDB に使用すべきデータソースの種類が個別に用意されています。 これには次のようなメリットがあります。

  • LocalDB 接続をより詳細に調査できます。
  • 実行可能ファイルのパスをドライバーのオプションに一度設定するだけで、すべてのデータソースに適用されます。

Kerberos 認証 Oracle、SQL Server

Oracle と SQL Server で Kerberos 認証を使用できるようになりました。 Kerberos オプションを選択する場合は、kinit コマンドを使用して DataGrip が使用する最初の TGT(チケット認可チケット)を取得する必要があります。

DBMS_OUTPUT の有効化 Oracle、IBM Db2

Options タブにあるこの新しいオプションを使うと、新しいセッションで DBMS_OUTPUT がデフォルトで有効になります。

More Options(その他のオプション)ボタン

あまり一般的でない接続オプションを構成する必要がある場合に使用できる More Options(その他のオプション)ボタンを追加しました。 現在使用できるオプションには、Snowflake 接続の Schema(スキーマ)フィールドと Role(ロール)フィールドを追加する機能と、検出可能性を高める目的で SSH と SSL を構成するための 2 つのメニュー項目があります。

エクスポートオプション

Advanced(詳細)タブに、Expert options(エクスポートオプション)リストが表示されるようになりました。 JDBC イントロスペクションプロセスを有効にするオプション(使用する前にサポートにお問い合わせください!)のほか、以下のデータベース固有のオプションを使用できます。

  • Oracle: 増分イントロスペクションの無効化、LONG 値の取得、サーバーオブジェクトのイントロスペクション
  • SQL Server: 増分イントロスペクションの無効化
  • PostgreSQL(および類似データベース): 増分イントロスペクションの無効化、pgdatabase へのクエリ内での xmin の不使用
  • SQLite: REGEXP 関数の登録
  • MYSQL: ソースコードに対する SHOW/CREATE の使用
  • ClickHouse: sessionid の自動割り当て

イントロスペクション

イントロスペクションレベル Oracle

Oracle ではデータベースとスキーマ数が多い場合に DataGrip のイントロスペクションが長時間かかるという問題が発生していました。 イントロスペクションは、オブジェクト名やソースコードといったデータベースのメタデータを取得するプロセスです。 これは、DataGrip が高速なコーディング支援、ナビゲーション、および検索を提供する上で必要なメタデータです。

Oracle システムカタログの処理はかなり低速であり、ユーザーに管理者権限がない場合はイントロスペクションがさらに低速になっていました。 私たちはメタデータを取得するクエリを最適化できるよう最善を尽くしましたが、何事にも限界はあります。

しかし、ほとんどの日常業務や効果的なコーディング支援については、オブジェクトソースを読み込む必要がないことに気が付きました。 多くの場合、適切なコード補完とナビゲーションを提供するにはデータベースオブジェクト名があれば十分です。 そこで、Oracle データベースのイントロスペクションに 3 つのレベルを導入することにしました。

  • レベル 1: インデックス列の名前とプライベートパッケージ変数を除くすべてのサポート対象オブジェクトの名前とシグネチャ。
  • レベル 2: ソースコードを除くすべて
  • レベル 3: すべて

イントロスペクションの速度はレベル 1 が最も速く、レベル 3 が最も遅くなります。

イントロスペクションのレベルは、コンテキストメニューを使用して適宜切り替えられます。

イントロスペクションのレベルは、スキーマまたはデータベース全体に設定できます。 スキーマのイントロスペクションレベルはデータベースから継承されますが、個別に設定することも可能です。

イントロスペクションのレベルは、データソースアイコンの横にカプセル剤のようなアイコンで示されます。 カプセル剤が一杯になるほど、レベルが高くなります。 青色のアイコンはイントロスペクションのレベルが直接設定されていることを示し、グレーのアイコンは継承されていることを示します。

リンクサーバーとデータベースリンクからデータソースへのマッピング SQL Server、Oracle

SQL Server のリンクサーバーまたは Oracle のデータベースリンクを既存のデータソースにマッピングできます。

外部オブジェクトがデータソースにマッピングされると、その外部オブジェクトを使用してクエリのコード補完と解決が行われます。

システムスキーマとテンプレートデータベースを非表示 PostgreSQL

これまでは内部システムスキーマ(pg_toastpg_temp など)とテンプレートデータベースはスキーマリストから非表示にされていました。 今回のリリースでは、Schemas タブの対応するオプションを使用してこれらのスキーマを表示できるようになりました。

ストリームのサポート Snowflake

ストリームがテーブルとビューに加えて、データベースビューでも表示されるようになりました。

分散テーブル ClickHouse

分散テーブルがデータベースエクスプローラーの専用のノードに配置されるようになりました。

クエリコンソール

ブール式のチェック

One of our users posted about an unfortunate situation: he executed the UPDATE query on a production database with the condition WHERE id - 3727 (instead of =) and had millions of records updated!

MySQL がこのようなクエリを許容していることにも驚きましたが、事実を受け入れるしかありません。 とはいえ、この問題に対応するインスペクションを追加しなければ DataGrip チームとは名乗れません! そこで、WHERE 句と HAVING 句のブール式チェックをご紹介します。

DataGrip は明示的にブール式でないように見える式を黄色でハイライトし、上記のようなクエリを実行する前に警告を発します。 この機能は、ClickHouse、Couchbase、Db2,H2、Hive/Spark、MySQL/MarinaDB、Redshift、SQLite、および Vertica で動作します。 その他すべてのデータベースでは、エラーとしてハイライトされます。

クエリの抽出関数

クエリをテーブル関数として抽出できるようになりました。 これを行うには、クエリを選択して Refactor メニューを呼び出し、Extract Routine を使用します。

JOIN の多重度に関するインレイヒント

この新しいインレイヒントは、JOIN 句の多重度について通知します。 1 対 1、1 対多、および多対多の 3 つのオプションから選択可能です。 無効にする場合は、Preferences | Editor | Inlay Hints | Join cardinality で設定を調整できます。

データベース名のコード補完 MongoDB

getSiblingDB を使用するとデータベース名が補完され、getCollection を使用するとコレクション名が補完されます。

また、フィールド名が getCollection で定義されたコレクションから使用された場合は補完され、解決されます。

Services ツールウィンドウ

出力のタイムスタンプをデフォルトで非表示に

こちらのリクエストに応え、タイムスタンプがデフォルトでクエリ出力に表示されなくなりました。 従来の動作に戻すには、Database | General | Show timestamp for query output で設定を変更してください。

新しいアクティブ化設定

Services ツールウィンドウは、ウィンドウモードで使用する場合はデフォルトで IDE の後ろに隠れます。 新しい設定ではクエリを実行するたびにこのウィンドウにフォーカス を渡し、クエリが完了した後に表示させることができます。

また、別のコンソールで実行時間が長いクエリが完了した後に Services ツールウィンドウの対応するタブがアクティブ化するのが嫌な場合は、Activate Services output pane for selected query console only チェックボックスをオンにしてください。

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

データインポート用の新しい UI

.csv ファイルをインポートする際、またはテーブル/結果セットをコピーする際の動作が以下のように改善されました。

  • 既存のテーブルを選択するか、新しいテーブルを作成できるようになりました。
  • インポートダイアログでターゲットスキーマを変更できます。 また、テーブルまたは結果セットをコピーする際にターゲット専用のダイアログは表示されません。
  • ターゲットは、スキーマごとにデフォルトとして保存されます。 そのため、ある特定のスキーマから別のスキーマへ定期的にコピーしている場合は、コピーするたびにターゲットを選択する必要がありません。

先頭見出し行の自動検出

CSV ファイルを開くかインポートした際、DataGrip が列の名前を含む見出しとなっている先頭行を自動的に検出するようになりました。

CSV ファイルの列の型を自動検出

DataGrip が CSV ファイルの列の型を検出できるようになりました。 この機能の主なメリットは、数値でデータをソートできるということです。 以前はテキストとして処理されていたため、ソートを直感的に行うことが困難でした。

その他

新しい Bookmarks ツールウィンドウ

これまでは Favorites(お気に入り)と Bookmarks(ブックマーク)という非常によく似た 2 つの機能がありました。 これら 2 つの違いは分かりにくいことがあったため、Bookmarks のみに絞ることにしました。 この機能のワークフローに手を加えて新しいツールウィンドウを作成しました。

今後は、(macOS では F3、Windows/Linux では F11 のショートカットを使用して)重要としてマークしたすべてのオブジェクトまたはファイルがこの新しい Bookmarks ツールウィンドウに配置されるようになります。