2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Tabular Editor 2 DocsAdvent Calendar 2022

Day 10

[Tabular Editor 2 Docs] FormatDaxの非推奨

Last updated at Posted at 2022-12-09

Tabular Editor 2 Docs

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

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

FormatDaxの非推奨

Tabular Editorで利用可能なヘルパーメソッドの1つである FormatDax メソッドはTabular Editor 2.13.0のリリースで非推奨とされました。

非推奨になった理由は、https://www.daxformatter.com/ のウェブサービスで、複数のリクエストを連続して行うと負荷が高くなり、その結果、ウェブサービス側で問題が発生するようになったからです。これは、FormatDaxメソッドがスクリプト内で呼び出されるたびにウェブリクエストを実行するためで、多くの人が以下のようなスクリプトを使用してきました。

やめてくれ!

foreach(var m in Model.AllMeasures)
{
    // DON'T DO THIS
    m.Expression = FormatDax(m.Expression);
}

これは数十のメジャーを持つ小さなモデルでは問題ありませんが、www.daxformatter.comのトラフィックを見ると、上記のようなスクリプトが数千のメジャーを持つ複数のモデルにわたって、一日に数回でも実行されていることがわかります。

この問題に対処するため、Tabular Editor 2.13.0では、上記の構文で FormatDax が連続して3回以上呼び出されると警告を表示するようにしました。さらに、それ以降の呼び出しは、各呼び出しの間に5秒の遅延を設けて、スロットルされます。

代替構文

Tabular Editor 2.13.0では、FormatDaxを呼び出す方法が2種類導入されています。上記のスクリプトは、以下のどちらかに書き換えることができます。

foreach(var m in Model.AllMeasures)
{
    m.FormatDax();
}

...いや、単に...:

Model.AllMeasures.FormatDax();

これらのアプローチは、すべての www.daxformatter.com の呼び出しを一回のリクエストにまとめます。お好みでグローバルメソッドの構文も使用できます。

foreach(var m in Model.AllMeasures)
{
    FormatDax(m);
}

...いや、単に...:

FormatDax(Model.AllMeasures);

詳細はこちら

技術的には、FormatDax は2つのオーバーロードされた拡張メソッドとして実装されています。

  1. void FormatDax(this IDaxDependantObject obj)
  2. void FormatDax(this IEnumerable<IDaxDependantObject> objects, bool shortFormat = false, bool? skipSpaceAfterFunctionName = null) となります。

上記のオーバーロード#1はスクリプトの実行が完了したとき、あるいは新しい void CallDaxFormatter() メソッドの呼び出しが行われたときに、与えられたオブジェクトをフォーマットするためキューに入ります。オーバーロード #2は、単一のWebリクエストで www.daxformatter.com を直ちに呼び出し、列挙可能なすべてのオブジェクトに対してすべてのDAX式をフォーマットします。これらのメソッドのいずれかを、適切と思われる方法で使用できます。

新しいメソッドは、文字列の引数を取らないことに注意してください。このメソッドは、提供されたオブジェクトのすべてのDAXプロパティを考慮してフォーマットします (メジャーの場合はExpressionおよびDetailRowsExpressionプロパティ、KPIの場合はStatusExpression、TargetExpression、およびTrendExpressionなどです)。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?