[Tabular Editor 2 Docs] 機能概要アドバンス

# Tabular Editor 2 Docs

こちらはTabular Editor 2 Docs Advent Calendar 2022への投稿記事です。

https://qiita.com/advent-calendar/2022/tabulareditor2docs2022

2022年11月下旬ごろのDocsを日本語訳しています。
最新情報は公式ページ・公式リポジトリをご確認ください。

https://tabulareditor.com/

https://github.com/TabularEditor/TabularEditorDocs

# 高度な機能

[機能一覧](/Features-at-a-glance)の記事で紹介した機能に加えて、Tabular Editorは高度な使い方のために以下の機能をサポートしています。

## テーブルの置き換え

バージョン2.7から、テーブルを置き換えられるようになりました。テーブルをコピー（CTRL+C）し、置き換えたいテーブルを選択してからペースト（CTRL+V）します。テーブルを本当に置き換えるのか（「はい」）、新しいテーブルとして挿入するのか（「いいえ」）、または操作を完全にキャンセルするのかを確認するプロンプトが表示されます。

![image](https://user-images.githubusercontent.com/8976200/36545892-40983114-17ea-11e8-8825-e8de6fd4e284.png)

Yesを選択すると、選択したテーブルがクリップボード内のテーブルと置換されます。さらに、そのテーブルを指す、またはテーブルから指すすべてのリレーションシップは、新しいテーブルを使用するように更新されます。この操作を行うには、リレーションシップに含まれるカラムが、元のテーブルと挿入されたテーブルの両方で同じ名前とデータ型を持っている必要があります。

## ロールと行レベルのセキュリティ

バージョン2.1では、エクスプローラツリーにロールが表示されるようになりました。ツリーを右クリックして、新しいロールの作成、既存のロールの削除や複製を行うことができます。エクスプローラツリーでロールを見つけ、プロパティグリッドの「Role Members」プロパティに移動すると、各ロールのメンバーを表示および編集できます。デプロイ時に、[デプロイウィザード](/Advanced-features#deployment-wizard)はデフォルトでロールメンバーをデプロイしないので注意してください。

Tabular Editorでロールを扱う最大の利点は、各テーブルオブジェクトに「Row Level Filters」プロパティがあり、すべてのロールに対してそのテーブルで定義されたフィルターを表示および編集できることです。

![](https://raw.githubusercontent.com/otykier/TabularEditor/master/Documentation/RLSTableContext.png)

もちろん、SSMSやVisual StudioのUIと同様に、ある特定のロールの全テーブルに渡ってフィルターを表示することも可能です。

![](https://raw.githubusercontent.com/otykier/TabularEditor/master/Documentation/RLSRoleContext.png)

## テーブル・パーティションを表示

TODO

## DAX式エディター

TODO

## スクリプトエディター

TODO (For now, please view [this article](/Advanced-Scripting))

## スクリプト／オブジェクトの参照

ドラッグ＆ドロップ機能を使用し、以下の方法でオブジェクトをスクリプト出力できます。

* 1つまたは複数のオブジェクトを別のWindowsアプリケーション（テキストエディターまたはSSMS）にドラッグする ドラッグされたオブジェクトを表すJSONコードが作成されます。モデル・ノード、テーブル、ロール、またはデータ・ソースをドラッグすると、"createOrReplace" スクリプトが作成されます。

* オブジェクト（メジャー、列、テーブル）をDAX式エディターにドラッグすると、該当するオブジェクトへの完全修飾されたDAX参照が挿入されます。

* オブジェクトをAdvanced Script Editorにドラッグすると、TOMツリーを介してオブジェクトにアクセスするC#コードが挿入されます。

## デプロイメントウィザード

Tabular Editorにはデプロイメントウィザードがあり、SSDTからデプロイする場合と比較して、既存のデータベースにデプロイする場合の利点があります。デプロイ先のサーバーとデータベースを選択した後、手元のデプロイ用に以下のオプションが用意されています。

[デプロイメントウィザード](https://raw.githubusercontent.com/otykier/TabularEditor/master/Documentation/Deployment.png)

Deployment Connectionsボックスをオフにすると、ターゲットデータベース上のすべてのデータソースが変更されないことを確認します。ターゲットデータベースに存在しないデータソースを持つテーブルがモデルに含まれている場合、エラーが発生します。

同様に、"Deploy Table Partitions "を省略すると、テーブル上の既存のパーティションが変更されず、パーティション内のデータはそのまま残されます。

ロールのデプロイにチェックを入れると、ターゲットデータベース内のロールはロードしたモデルの内容を反映して更新されますが、"ロールメンバーのデプロイ "にチェックを入れないと、各ロールのメンバーはターゲットデータベース内で変更されません。

## メタデータバックアップ

ご希望により、Tabular Editorは保存（既存のデータベースに接続されている場合）またはデプロイの前に、既存のモデルメタデータのバックアップコピーを自動的に保存できます。これはバージョンコントロールシステムを使用していない場合でも、モデルの以前のバージョンにロールバックする必要がある場合に便利です。

この設定を有効にするには、"File" > "Preferences" でチェックボックスを有効にし、メタデータのバックアップを格納するフォルダーを選択します。

<img src="https://user-images.githubusercontent.com/8976200/91543926-3de69100-e91f-11ea-88de-3def2b97eae0.png" width="300" />

この設定を有効にすると、デプロイメントウィザードを使用したとき、または（ワークスペースの）データベース接続中に「保存」ボタンをクリックしたときに、既存のモデルのメタデータの圧縮（zip）バージョンがこの場所に保存されます。

## 式の修正と式の依存関係

Tabular Editorは、モデル内のすべてのメジャー、計算カラム、および計算テーブルのDAX式を継続的に解析し、これらのオブジェクトの依存関係ツリーを構築します。この依存関係ツリーは、"File" > "Preferences" で有効にすることができるFormula Fix-up機能に使用されます。式で参照されていたオブジェクトの名前が変更されると、Formula Fix-upによってメジャー、計算カラム、または計算テーブルのDAX式が自動的に更新されます。

依存関係ツリーを可視化するには、エクスプローラツリーでオブジェクトを右クリックし、"依存関係を表示... "を選択します。

![image](https://cloud.githubusercontent.com/assets/8976200/22482528/b37d27e2-e7f9-11e6-8b89-c503f9fffcac.png)

## インポート/エクスポート翻訳

エクスプローラツリーで1つまたは複数のカルチャーを選択し、右クリックして「Export Translations...」を選択すると後でTabular EditorまたはVisual Studioでインポート可能な.jsonファイルが生成されます。Import Translations...」を選択すると、対応する.jsonファイルがインポートされます。既存の翻訳を上書きするかどうかを選択できます。上書きしない場合、.jsonファイルで定義された翻訳は、指定されたカルチャーの翻訳をまだ持っていないオブジェクトにのみ適用されます。

## フォルダーシリアル化

この機能により、TFS、SubVersion、Gitなどのファイルベースのソース管理環境で、SSAS Tabular Modelsをより簡単に統合できます。File" > "Save to Folder... "を選択すると、Tabular EditorはModel.bimファイルを分解し、その内容をModel.bim内のJSONの構造に似たフォルダー構造で個別のファイルとして保存します。その後モデルを保存する際、変更されたメタデータを持つファイルのみが扱われます。つまり、ほとんどのバージョン管理システムはモデルに対して行われた変更を簡単に検出でき、単一のModel.bimファイルを扱う場合よりもソースのマージやコンフリクト処理がずっと簡単になるのです。

![image](https://cloud.githubusercontent.com/assets/8976200/22483167/5e07ad52-e7fc-11e6-890f-5c0d20fff0cb.png)

デフォルトでは、オブジェクトはもっとも低いオブジェクト・レベルまでシリアライズされます（つまり、メジャー、カラム、および階層は個別の .jsonファイルとして保存されます）。

さらに、Tabular Editorの[コマンドライン構文](xref:command-line-options)は、このフォルダー構造からモデルをロードしてデータベースに直接デプロイすることをサポートしており、継続的インテグレーションワークフローのためのビルドを簡単に自動化できるようになっています。

メタデータが個々のファイルに保存される粒度をカスタマイズしたい場合は、「ファイル」→「環境設定」で「フォルダーに保存」タブをクリックします。ここでは、JSONシリアライズする際TOMに渡されるいくつかのシリアライズ・オプションを切り替えることができる。さらに、個々のファイルが生成されるオブジェクトの種類をチェックしたり外したりすることもできます。バージョン管理のシナリオでは、1つのテーブルに関連するすべてを1つのファイルに保存したい場合がありますが、他のシナリオでは、カラムやメジャーに個別のファイルが必要な場合となります。

これらの設定は、「フォルダーに保存」機能をはじめて使用したときに、モデル上のアノテーションに保存され、モデルを読み込んでから「保存」ボタンをクリックしたときに設定が再利用されます。新しい設定を適用したい場合は、再度「ファイル > フォルダーに保存...」を使用してください。

<img src="https://cloud.githubusercontent.com/assets/8976200/25333606/30578a78-28eb-11e7-9885-0fc66f5e4046.png" width="300" />

## ユーザー設定ファイル

Tabular Editorを実行すると、いくつかの追加ファイルがディスクの様々な場所に書き込まれます。以下は、これらのファイルの説明とその内容です。

### In %ProgramData%\TabularEditor

- **BPARules.json** すべてのユーザーが利用できるベストプラクティス・アナライザーのルール。
- **TOMWrapper.dll** このファイルはTabular Editor内でスクリプトを実行する際に使用されます。また、あなたの.NETプロジェクトで.dllを参照し、ラッパーコードを利用できます。Tabular Editorをアップグレードした後、高度なスクリプトの実行に問題がある場合、このファイルを削除してTabular Editorを再起動してください。

- **Preferences.json** このファイルには、"ファイル">"環境設定 "ダイアログで設定したすべての環境設定が保存されます。

### In %AppData%\Local\TabularEditor

- **BPARules.json** 現在のユーザーのみが利用できるベストプラクティス・アナライザーのルール。
- **CustomActions.json** エクスプローラツリーの右クリックメニューやツールメニューから呼び出すことができる、カスタムスクリプトアクションです。これらのアクションは、「アドバンスト・スクリプト・エディター」タブで作成できます。

- **RecentFiles.json** 最近開いた.bimファイルのリストを保存する。このリストの直近の10項目は、「ファイル」→「最近使ったファイル」メニューに表示されます。

- **RecentServers.json** 最近開いた.bimファイルのリストを保存する。このリストの直近の10項目は、「ファイル」→「最近使ったファイル」メニューに表示されます。