DataGrip 2021.3 がリリースされました! 2021 年で 3 回目となるメジャーアップデートでは、さまざまな機能改善が行われています。 その内容を詳しく見てみましょう!
範囲選択したセルを集計する Aggregate(集計)ビューを表示する機能を追加しました。 データ管理に役立ち、余計なクエリを書く手間を省ける待望の機能です! この機能追加により、データエディターに Excel や Google スプレッドシートにより近い性能と使いやすさが備わりました。
ビューで表示するセル範囲を選択し、右クリックして Show Aggregate View(集計ビューの表示)を選択してください。
機能の要約:
1 つの集計値がステータスバーに表示され、どの値(和、平均値、中央値、最小値、最大値など)に指定するかを選択できます。
任意のスキーマノードで F4 を押すと、そのノードの内容がテーブルビューで表示されます。 例えば、スキーマ内のすべてのテーブルをテーブルビューで表示できます。
または、テーブルの列をテーブルビューで表示できます。
このビューを使用して、列の表示または非表示、多彩な形式でのデータエクスポート、およびテキスト検索を行なうことができます。 さらに重要なことに、以下のナビゲーションアクションを使用することも可能です。
エディターを分割してもう一度同じテーブルを開くと、2 つのデータエディターが完全に別々のウィンドウに表示されます。 そのため、それぞれに異なるフィルターやソートオプションを設定して、データの比較と操作を行えます。 以前はフィルターとソート順が連動していたため、あまり満足できるものではありませんでした。
データ表示専用のフォントは、Database | Data views | Use custom font から選択できます。
データエディターでは、複数の値を選択して関連データに移動できるようになりました。
テーブルのデフォルトのソート方法を、ORDER BY または client-side に定義できます。後者は新しいクエリを実行せず、現在のページのみでソートを実行します。 この設定は、Database | Data views | Sorting | Sort via ORDER BY にあります。
16 バイトデータがデフォルトで UUID として表示されるようになりました。 また、バイナリデータの表示方法をデータエディターの列でカスタマイズできるようになりました。
filter {}
と sort {}
の補完 MongoDB MongoDB コレクションでデータをフィルタリングする際に、コード補完を使用できるようになりました。
このリリースは、実際のデータソースに基づいて DDL データソースを生成する機能を導入した過去のリリースを必然的に引き継いでいます。 このリリースでは、このワークフローが完全にサポートされています。 以下の操作を実行できます。
念のために説明しておきますが、DDL データソースはある SQL スクリプトのセットに基づくスキーマを含む仮想データソースです。 これらの SQL スクリプトファイルを VCS に格納すると、バージョン管理システム(VCS)でデータソースを管理することができます。
データ構成プロパティに DDL mappings(DDL マッピング)という新しいタブを追加しました。このタブでは、どの実際のデータソースをどの DDL データソースにマッピングするかを定義できます。
これらの新機能が日常の VCS フローに実際にどのように役立つかは、こちらの記事をご覧ください。
DDL データソースと実際のデータソースを比較して同期するには、コンテキストメニューの DDL Mappings サブメニューで Apply from... か Dump to... を選択します。
この新しくなったウィンドウにはより優れた UI が備わっており、右側のペインには同期を実行した後に得られる結果が明確に表示されます。
右側のペインには、発生しうる結果を色で示した凡例が表示されます。
結果スクリプトは Script preview タブに表示されます。この結果スクリプトは新しいコンソールで開くことも、このダイアログから実行することもできます。 このスクリプトを実行すると、右にあるデータベース(ターゲット)を左にあるデータベース(ソース)のコピーにする変更が適用されます。
Script preview タブに加えて、下のペインに Object Properties Diff タブと DDL Diff タブがあります。 これらのタブには、元のデータベースとターゲットデータベースに含まれるオブジェクトの特定バージョン間の差分が表示されます。
念のために説明しておきますが、単に 2 つのスキーマまたはオブジェクトを比較する場合は、それらを選択して Ctrl + D を押すだけです。
重要! 差分ビューアーはまだ鋭意開発中です。 各データベースには固有の機能があり、実際に同一のオブジェクトでも異なるオブジェクトとして表示されることがあるためです。 これは、型エイリアスまたは生成時にデフォルトプロパティが省略されているために発生する場合があります。 このバグに遭遇した場合は、トラッカーにご報告ください。
すべてのファイル関連アクションは、DDL データソース要素でも使用できます。 例えば、スキーマ要素に関連するファイルをデータベースエクスプローラーから削除、コピー、またはコミットすることが可能です。
このオプションが有効な場合、DDL データソースは対応するファイルへの変更に伴って自動的にリフレッシュされます。 この動作は以前からデフォルトになっていましたが、このリリースでは無効化するオプションが追加されました。
無効化するとソースファイルの変更が DDL データソースに自動的に反映されなくなるため、Refresh をクリックして変更を適用しなければならなくなります。
Default schemas/databases ペインでは、データベースとスキーマの名前を定義できます。これらの名前は、DDL データソースに表示されます。 DDL スクリプトには通常は名前が含まれず、デフォルトではダミーのデータベース名とスキーマ名が使用されます。
User(ユーザー)または Password(パスワード)を除く値の先頭または末尾にスペースが含まれる場合に Test Connection(テスト接続)をクリックすると、DataGrip がそれを警告するようになりました。
SQL Server LocalDB 独自の専用ドライバーがドライバーリストに登録されています。 つまり、LocalDB に使用すべきデータソースの種類が個別に用意されています。 これには次のようなメリットがあります。
Oracle と SQL Server で Kerberos 認証を使用できるようになりました。 Kerberos オプションを選択する場合は、kinit コマンドを使用して DataGrip が使用する最初の TGT(チケット認可チケット)を取得する必要があります。
Options タブにあるこの新しいオプションを使うと、新しいセッションで DBMS_OUTPUT がデフォルトで有効になります。
あまり一般的でない接続オプションを構成する必要がある場合に使用できる More Options(その他のオプション)ボタンを追加しました。 現在使用できるオプションには、Snowflake 接続の Schema(スキーマ)フィールドと Role(ロール)フィールドを追加する機能と、検出可能性を高める目的で SSH と SSL を構成するための 2 つのメニュー項目があります。
Advanced(詳細)タブに、Expert options(エクスポートオプション)リストが表示されるようになりました。 JDBC イントロスペクションプロセスを有効にするオプション(使用する前にサポートにお問い合わせください!)のほか、以下のデータベース固有のオプションを使用できます。
Oracle ではデータベースとスキーマ数が多い場合に DataGrip のイントロスペクションが長時間かかるという問題が発生していました。 イントロスペクションは、オブジェクト名やソースコードといったデータベースのメタデータを取得するプロセスです。 これは、DataGrip が高速なコーディング支援、ナビゲーション、および検索を提供する上で必要なメタデータです。
Oracle システムカタログの処理はかなり低速であり、ユーザーに管理者権限がない場合はイントロスペクションがさらに低速になっていました。 私たちはメタデータを取得するクエリを最適化できるよう最善を尽くしましたが、何事にも限界はあります。
しかし、ほとんどの日常業務や効果的なコーディング支援については、オブジェクトソースを読み込む必要がないことに気が付きました。 多くの場合、適切なコード補完とナビゲーションを提供するにはデータベースオブジェクト名があれば十分です。 そこで、Oracle データベースのイントロスペクションに 3 つのレベルを導入することにしました。
イントロスペクションの速度はレベル 1 が最も速く、レベル 3 が最も遅くなります。
イントロスペクションのレベルは、コンテキストメニューを使用して適宜切り替えられます。
イントロスペクションのレベルは、スキーマまたはデータベース全体に設定できます。 スキーマのイントロスペクションレベルはデータベースから継承されますが、個別に設定することも可能です。
イントロスペクションのレベルは、データソースアイコンの横にカプセル剤のようなアイコンで示されます。 カプセル剤が一杯になるほど、レベルが高くなります。 青色のアイコンはイントロスペクションのレベルが直接設定されていることを示し、グレーのアイコンは継承されていることを示します。
SQL Server のリンクサーバーまたは Oracle のデータベースリンクを既存のデータソースにマッピングできます。
外部オブジェクトがデータソースにマッピングされると、その外部オブジェクトを使用してクエリのコード補完と解決が行われます。
これまでは内部システムスキーマ(pg_toast や pg_temp など)とテンプレートデータベースはスキーマリストから非表示にされていました。 今回のリリースでは、Schemas タブの対応するオプションを使用してこれらのスキーマを表示できるようになりました。
ストリームがテーブルとビューに加えて、データベースビューでも表示されるようになりました。
分散テーブルがデータベースエクスプローラーの専用のノードに配置されるようになりました。
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 で設定を調整できます。
getSiblingDB
を使用するとデータベース名が補完され、getCollection
を使用するとコレクション名が補完されます。
また、フィールド名が getCollection
で定義されたコレクションから使用された場合は補完され、解決されます。
こちらのリクエストに応え、タイムスタンプがデフォルトでクエリ出力に表示されなくなりました。 従来の動作に戻すには、Database | General | Show timestamp for query output で設定を変更してください。
Services ツールウィンドウは、ウィンドウモードで使用する場合はデフォルトで IDE の後ろに隠れます。 新しい設定ではクエリを実行するたびにこのウィンドウにフォーカス を渡し、クエリが完了した後に表示させることができます。
また、別のコンソールで実行時間が長いクエリが完了した後に Services ツールウィンドウの対応するタブがアクティブ化するのが嫌な場合は、Activate Services output pane for selected query console only チェックボックスをオンにしてください。
.csv ファイルをインポートする際、またはテーブル/結果セットをコピーする際の動作が以下のように改善されました。
CSV ファイルを開くかインポートした際、DataGrip が列の名前を含む見出しとなっている先頭行を自動的に検出するようになりました。
DataGrip が CSV ファイルの列の型を検出できるようになりました。 この機能の主なメリットは、数値でデータをソートできるということです。 以前はテキストとして処理されていたため、ソートを直感的に行うことが困難でした。
これまでは Favorites(お気に入り)と Bookmarks(ブックマーク)という非常によく似た 2 つの機能がありました。 これら 2 つの違いは分かりにくいことがあったため、Bookmarks のみに絞ることにしました。 この機能のワークフローに手を加えて新しいツールウィンドウを作成しました。
今後は、(macOS では F3、Windows/Linux では F11 のショートカットを使用して)重要としてマークしたすべてのオブジェクトまたはファイルがこの新しい Bookmarks ツールウィンドウに配置されるようになります。