NEXEL(式エディタ)
このトピックでは、DataViewでNexel計算レイヤを使用する方法について説明します。
Nexelは、スプレッドシートのようなアプリケーションの柔軟性と汎用性を、DataViewとしての多次元オブジェクトの機能と堅牢性と組み合わせています。 レポートレイヤに埋め込まれた式の幅広いライブラリを提供し、列、セルの範囲、さらには単一のセルに関する追加の計算機能を提供します。
計算ルールを定義すると、実行時またはプロシージャアクションで適用できます。
Nexelの式の有効化
Nexelの式は、計算、情報の取得、セルの内容の操作、テスト条件などを実行できる数式です。 式は常に等号(=)で始まり、次を含むデータブロックでサポートされます。
- キューブ
- アルゴリズム
- エンティティと関係
- 空のブロック
Nexelの式の結果は、レイアウト定義で生成された値と重複します。
レイアウトエディタからのNexelの式の有効化
[Nexel]メニューのブロック設定パネルで、選択されたブロックのNexelレイヤを有効にして設定できます。 有効にすると、ブロックのセルに式を伝播する方法を定義することもできます。
次の2つのオプションを使用できます。
- [最も深いエンティティの式(Deepest entity formula)](デフォルト)。ブロックの各セルには、異なる式を指定できます
- [単一の式(Single formula)。 式はブロックのすべてのセルで同じです
3番目のオプションであるテキストキューブ式は、特定の条件が満たされている場合に使用できます。 このオプションを使用すると、テキストキューブを使用してNexelの式を記述できます。 詳細については、この段落を参照してください。
有効にすると、DataViewのスライディングツールバーから次のようにして、[Nexel設定(Nexel configuration)]ページ(式エディタ)にアクセスできます。
式エディタでのNexel式の有効化
1つ以上のレイアウトブロックで、式エディタ(つまり、Nexel設定ページ)から直接Nexelを有効にすることができます。 ブロックヘッダーの左側にマウスポインタを置くだけで、Nexel[fx]アイコンが表示されます。アイコンをクリックし、ポップアップウィンドウで式タイプを設定して、Nexelを有効にします。
Nexelの式の記述
Nexelの式は、[式エディタ(Formula editor)]パネルで作成および編集できます。
新しいNexelの式を記述するには、次の手順を実行します。
- 式を追加するセルをダブルクリックします。セルが黒い枠線で強調表示され、カーソルが上の[fx]フィールドに移動します。 式を入力できるようになりました
- 式で座標を使用するセルをクリック(またはセル範囲を選択)すると、選択したセルが黒い枠線で強調表示され、式エディタによって対応する座標が式に自動的に追加されます。
- 式フィールドの直前にあるドロップダウンメニューから式を選択するか、式を手動で入力します。
- チェックアイコン(
)をクリックして、選択したセルに保存します。 保存した式は、([式エディタ(Formula editor)]パネルで)その式を含むセルをダブルクリックすることで、いつでも編集できます。 式エディタのプレビューに式の結果が表示されます。
- パネルの右下にある[保存(SAVE)]をクリックします。 式の結果がレポートに表示されます。
式エディタには、Nexelレイヤの最終結果のプレビューが表示されます。 パネル右下の[保存(SAVE)]をクリックすると、Nexelレイヤ設定がレイアウトに適用されます。
Nexelが有効なブロックでは、列ヘッダーに[fx]アイコンが表示されます。これをクリックすると、ブロック設定ポップアップウィンドウが表示されます。
セルに式が含まれている場合は、セルの隅に赤いインジケータが表示されます。 [単一の式(Single formula)]オプションが選択されている場合は、列ヘッダーの隅に赤いインジケータが表示されます。
赤いインジケータが付いているセルまたはヘッダーの上にカーソルを置くと、クイックリファレンス用の式を示すツールチップが表示されます。
Nexelスプレッドシートでは、最初の列はA、2番目の列はBのようになり、Zまで続きます。次に、Nexelは次の2つの文字を使用します。 AAからAZ、BAからBZ、同様にZZまで。
構文(単一のセル)
単一のセルを参照するNexelの式は、次の構文を使用して記述する必要があります。
=F(X)([@Block; Row; Column])
要素 | 説明 | 例 |
F(X) |
関数(オプション)。 適用する計算の種類を定義します。 省略すると、SUM演算子がデフォルトで適用されます。 |
SUM |
@Block |
ブロック識別子。 レイアウト内のブロックを前に付く@記号で識別します(@aはブロック[a]を意味します)。 詳細は、「レイアウトのデータブロックについて」を参照してください。 |
@a |
Row |
行識別子。レイアウトの行ごとに設定されたエンティティに属するメンバーのコードで識別される、DataViewの行。 絶対的な参照または相対的な参照で定義できます。たとえば、S01(Store 01のコード)または*(アスタリスク)は、式を含むセルの同じ行を示します |
S01, * |
Column |
列識別子。 レイアウトの列ごとに設定されたエンティティに属するメンバーのコードで識別される、DataViewの列。 絶対的な参照または相対的な参照で定義できます。たとえば、201901(2019年1月のコード)や*(アスタリスク)は、式を含むセルの同じ列を示します。 |
2019, * |
レポートにアイテムの説明が表示されている場合でも、行ごとや列ごとで設定されたメンバーのコードによってセルが一意に識別されます。
構文(範囲)
セル範囲を参照するNexelの式は、次の構文を使用して記述する必要があります。
=F(X)([@Block;Range(cell_1:cell_2)])
要素 | 説明 | 例 |
F(X) |
関数(オプション)。 適用する計算の種類を定義します。 省略すると、SUM演算子がデフォルトで適用されます。 |
SUM |
@Block |
ブロック識別子。 レイアウト内のブロックを前に付く@記号で識別します(@aはブロック[a]を意味します)。 詳細は、「レイアウトのデータブロックについて」を参照してください。 |
@a |
Range |
セル範囲。 範囲の左上のセルの参照と範囲の右下のセルの参照によって定義されるセル範囲。 絶対的な参照または相対的な参照で定義できます。たとえば、2;201901(メンバー2と2019年1月のコード)や*(アスタリスク)は、式を含むセルの同じ行または列を示します。 |
2;201901:4:201901 |
範囲は単一ブロックでのみ定義できます。異なるブロックに属するセルは収集できません。
1つ以上のデータピッカーをNexelの式に含めることができます。
サポートされているすべての関数の完全な説明は、Nexel Complete Function Libraryファイル(2.6Mb、PDF)にあります。
参照モード
式エディタでは、次の2つの参照モードを使用してセルを識別できます。
- [絶対的(Absolute)]。 セルは座標(レイアウトで行ごとおよび列ごとに設定されたエンティティに属するメンバーのコードによって定義される行と列)によって識別されます。
The cell in the formula is identified by the coordinates [@a;6;201802] where "@a" is the Block identifier, "6" is the code for the member "Meat/Poultry" (Entity set by row), and "201802" is the code for Q.2/2018 (Time Entity set by column). - [相対的(Relative)]。 セルは、式を含むセルの位置からのシフトによって識別されます。
式のセルは、座標[@b;+2;-1]によって識別されます。ここで、[@b]はブロック識別子、[+2]は式を含むセルの行の下の2行、[-1]は式を含むセルの列の前の1列を示します。相対的な参照を正しく機能させるには、DataViewに含まれるすべてのブロックの表示可能セルの数が同じである必要があります。 それ以外の場合は、[動的範囲(Dynamic Range)]オプションを使用して、この制限を部分的に回避することができます(詳細については、次の段落を参照してください) 。
Nexelの式は、レイアウトの後、クライアント側の操作の前に考慮されます。 Nexelの式を含む別のブロックに依存するアルゴリズムブロックを設定すると、Nexelの式の前に計算が行われ、結果が正しくない可能性があります。
相対的な参照を使用してNexelの式を含むブロックを設定した場合、ブロックの並び替えは計算の実行後に適用されるため、計算に影響しません。
式で識別されるセルは、式を含むセルの位置によって異なります。
動的範囲
[動的範囲(Dynamic Ranges)]を使用すると、関数の入力としてセルの大きなセットを選択でき、ブロックのDataViewに表示可能なセルの数が異なる場合などの制限を回避できます。
Average関数などの一部の関数は、セルの範囲にのみ適用する必要があり、それ以外の場合は意味をなしません。
ページ上部の[動的範囲(Dynamic Range)]ドロップダウンメニューでは、式に最適な範囲設定を選択できます。
動的範囲の構文には、アクションと方向という2つの属性があります。

アクション属性は、次のいずれかです。
アクション | 説明 |
None | アクションは実行されません |
Range | 選択した範囲内のすべてのセルを選択します。 |
Count | 選択した範囲内のすべてのセルをカウントします。 |
CountEx | 選択された範囲内の非ゼロの値のすべてのセルをカウントします。 |
Point | アクティブなセルの位置に従って、単一のセルを選択します。 |
アクションは方向属性と組み合わせることができます。 次のいずれかになります。
方向 | 説明 |
Whole | セルの全範囲です。 |
Up | 参照されているセル(これも含む)より上のすべてのセルです。 |
Down | 参照されているセル(これも含む)より下のすべてのセルです。 |
Left | 参照されているセル(これも含む)の左のすべてのセルです。 |
Right | 参照されているセル(これも含む)の右のすべてのセルです。 |
Vertical | 参照されているセルの列のすべてのセルです。 |
Horizontal | 参照されているセルの行のすべてのセルです。 |
Total | 参照されているセルの列のダウントータルセルです。 |
動的範囲を使用している場合、式で識別されるセルは、式を含むセルの位置、および方向の属性に依存します。

他のオブジェクトおよび機能でのNexelの動作
選択/ページャ/セレクタ
Nexelの式では、単一のセルまたはセルの範囲を参照でき、これらのセルがすべてDataViewに表示されている必要があります。 そのため、式は現在の選択外のセルを参照することは許可されません。
行を非表示にするためにフィルタを使用することが可能ですが、非表示のセルは式の実行時に考慮されます。 効果的なトラブルシューティングのためには、レイアウトエディタの[ゼロを非表示(Hide Zeroes)]オプションをオフにして、Nexelの結果をプレビューすることをおすすめします。
ドリルダウン
ドリルダウンは、[単一の式(Single formula)]構成にのみ許可されます。これらのシナリオでは、Nexelレベルはドリルされたレポートにも適用されますが、そのレベルでは修正できません。
DataViewに1つ以上の[下層エンティティ(Deeper Entities)]構成がある場合、ドリルダウンのオプションは自動的に無効になります。
フォーマットとカラーアラート
[ブロックフォーマット(Block Format)]のオプションは、Nexelの式を含むブロックにも適用できます。
カラーアラートがデータとNexelの式の計算が共存するブロックに設定されると、基礎となっている値ではなく、Nexelの式の結果によってアラートの動作が決まります。
レイアウトのアラインメント
レイアウトエディタのオブジェクトプロパティ設定でブロックのアラインメントのオプションが[垂直方向(Vertically)]に設定されている場合、Nexelはサポートされません。
新しいブロックを追加
[式エディタ(Formula editor)]から、ページの右上隅にある[+ブロック(+BLOCK)]ボタンをクリックするだけで、即座にレイアウトにブロックを追加できます。 新しいブロックは、既にNexelが有効になっているアルゴリズムです。
設定ポップアップウィンドウから、次のものを定義できます。
- ブロックの見出し
- ブロックのセルに式を伝播する方法(式タイプ)
書き込みを許可する(Allow Write in place)
データエントリアクションと同様に、Nexelの式の結果をキューブに保存できます。
これを行うには、次の条件を満たす必要があります。
- Nexelの式はキューブタイプのブロック上に作成する必要があります
- データエントリはブロック上でアクティブでなければなりません
- [書き込みを許可する(Allow Write in place)]フラグをNexelの[式エディタ(Formula editor)]でチェックする必要があります。
この場合、計算が実行されるとすぐに式の結果が保存されます。
プロシージャアクションライブラリ
現在のNexelスプレッドシートをアクションライブラリの要素として保存できます。
アクションライブラリは、Boardの各データモデルに固有のアクションのグループです。 このような要素は、カプセルプロシージャやデータベースプロシージャで使用できます。
データモデルのアクションライブラリに保存されたアクションは、別のデータモデルにコピーまたは転送できません。
アクションライブラリにNexelスプレッドシートを追加するには、フロッピーディスクアイコンをクリックし、新しいアクションの名前を入力します。 [式エディタ(Formula editor)]ページの右下にある[保存(SAVE)]をクリックします。
新しいアクションは、プロシージャ設定ページ(プロシージャデザイナー)の計算アクショングループの[Nexelライトバック(Nexel writeback)]の下にあります。
Nexelのライトバックアクションは、データエントリモードでデータを保存し、レイアウト軸に含まれていないターゲットキューブのすべての次元をページングします。 プロシージャアクションのロジックは、データフローよりも定期的なデータエントリアクションに近いため、プロシージャアクションの方がはるかに高速です。
Nexelのライトバックアクションは、キューブの物理レベルでのみデータを書き込むことができます。
プロシージャ内に保存されたNexelのライトバックアクションを使用するには、そのアクションを選択し、[設定の選択を使用(Use configuration selections)]チェックボックスをオンにします。これは、Nexelの式が保存されたときにアクティブだった選択またはページャ、あるいはその両方を使用するためです。 [設定の選択を使用(Use configuration selections)]フラグがチェックされていない場合、Nexelのライトバックアクションはプロシージャ選択を継承します。
[設定ページを使用(Use configuration pages)]オプションは現在非推奨ですが、下位互換性のために引き続き使用できます。 このオプションはデフォルトで有効になっており、計算が正しく実行されるように有効のままにしておくことをおすすめします。
既存の式をその場で編集する場合は、[編集(Edit)]ボタンをクリックすると、[式エディタ(Formula editor)]の[Nexelアクション(Nexel Action)]が開きます。
Nexelを使用して関係を管理する方法
Nexelを使用して、式の結果に基づいて2つのエンティティ間の関係を管理できます。 これにより、特定の条件が変更されたときに、2つのエンティティ間の関係を動的に変更できます。
たとえば、顧客の売上高に基づいて、顧客を次のカテゴリに集計するとします。
- 売上高が総売上高の平均を上回る顧客の場合は[高(High)]
- 売上高が総売上高の平均を下回る顧客の場合は[低(Low)]
これを行うには、ドライバとして[総売上高キューブ(Gross Sales Cube)]、およびデータエントリが有効になっている[顧客カテゴリキューブ(Customer Category Cube)]を使用してレイアウトを設定します。
式エディタで、総売上高の平均の計算を追加し、その結果を顧客の売上高値と比較します。 比較式の結果は、[H(高)]または[L(低)]となり、顧客ごとに[顧客カテゴリキューブ(Customer Category Cube)]に書き込まれます。
必要な式は次のとおりです。
=if([@a;*;*]>AVERAGE([@a;*;*;Range.Vertical]);"H | High";"L | Low")
この式の結果は次のようになります。
次のツリーは、[顧客販売カテゴリ(Customer Sales Category)]エンティティと[顧客(Customer)]エンティティの関係を示しています。
テキストキューブを使用してNexelの式を記述する方法
テキストキューブは、Nexelの式の編集に使用できます。 これは、さまざまなNexelシートで簡単に再利用できる、あらかじめパッケージ化された式スキーマを作成する場合に特に便利です。
次の条件を満たす必要があります。
- レイアウトにはブロック内のテキストキューブが必要です(非表示にすることができます)
テキストキューブの次元は、レイアウト構造(行と列)と一致している必要があります
- データ付きブロック(キューブブロック)のブロック設定パネルで、Nexelメニューの[式タイプ(Formula type)]オプションを[テキストキューブ式(Text Cube formula)]にし、[内部の式(Formulas In)]ドロップダウンメニューで式を含むテキストキューブを選択する必要があります。
DataViewの結果は次のとおりです。
クロスビュー(CrossView)
Nexelの[クロスビュー(CrossView)]機能を使用すると、画面内の複数のDataViewからデータを収集できます。 これは非常に高度な機能であり、複数のDataViewのデータを1つにまとめる場合に特に便利です。
[クロスビュー(CrossView)]を有効にするには、関数の最初の引数としてDataView識別子を追加して、通常のNexel構文を変更します。
=F(X)([#Dataview;@Block; Row; Column])
#DataView引数は、参照されるDataViewのレイアウトタイトルです。
[クロスビュー(CrossView)]機能を有効にすると、Nexelでは指定したDataViewでセル参照が検索されます。たとえば、関数でDataViewの3行目を参照すると、Nexelは参照したDataViewの3行目に移動し、範囲と式を適用します。
参照したDataViewにセル参照が存在しない場合、値は返されません。
例:
月ごとに区切られた売上データを持つDataViewと、製品ごとに区切られた売上数量を持つ別のDataViewがあり、サマリーDataViewを計算するとします。
サマリーDataViewを計算するために、[クロスビュー(CrossView)]機能で次のNexelの式を使用しました。
- For the "Total sales" row → =SUM([#TotalRevenue;@a;*;Range.Vertical])
- For the "Average Price" row → =SUM([#TotalRevenue;@a;*;Range.Vertical])/SUM([#QuantitySold;@a;*;Range.Vertical])
- For the "Max Sold" row → =MAX([#TotalRevenue;@a;*;Range.Vertical])
- For the "Min Sold" row → =MIN([#TotalRevenue;@a;*;Range.Vertical])
ご覧のように、2つのDataViewの合計値を使用して平均価格を計算し、[TotalRevenue] DataViewを使用してその他のインジケータをさまざまな式(MAX、MIN、SUM)で計算しました。
[クロスビュー(CrossView)]機能を使用する前に、画面を保存する必要があります。
詳細情報: