計算列を定義して計算を自動化する
計算列を使用して、ビジネス プロセスで使用される手動の計算を自動化することができます。
たとえば、営業担当者は営業案件の売上高の期待値を知ることが必要になる場合があります。この期待値は、営業案件からの売上見込みに確率を乗じて得られた値に基づきます。 または、受注が $500 より大きい場合、値引きを自動的に適用することを望みます。 計算列には、単純な数学演算や greater than または if-else などの条件付き演算から得られた値を含めることができます。 これらのすべてを、コードを記述することなく、Power Apps を使用して実行できます。
機能
- 計算列は、現在のテーブルまたは親テーブルの列を使用します。
- この式のサポートは、条件 セクションと アクション セクションにある、現在のテーブルと、関連付けられている親テーブル列で使用できます。 組み込みの関数には次のものがあります。
ADDHOURS、ADDDAYS、ADDWEEKS、ADDMONTHS、ADDYEARS、SUBTRACTHOURS、SUBTRACTDAYS、SUBTRACTWEEKS、SUBTRACTMONTHS、SUBTRACTYEARS、DIFFINDAYS、DIFFINHOURS、DIFFINMINUTES、DIFFINMONTHS、DIFFINWEEKS、DIFFINYEARS、CONCAT、TRIMLEFT、TRIMRIGHT。 詳細: Functions 構文 - リッチな条件サポートにより、分岐や複数の条件を指定できます。 論理演算子には、AND と OR 演算子が含まれます。
- ビジュアル編集機能によって、最近のユーザー インターフェイスと Intellisense がアクションセクションに組み込まれます。
- 計算列と、フォーム、ビュー、グラフ、およびレポートとのシームレスな統合がリアルタイムで使用できます。
- ユーザー定義コントロールを使用するように計算列を構成できます。
シナリオ
- 売上高の期待値: 確率を乗じた売上見込み
- 純資産: 特定の取引先企業に対する負債を差し引いた資産
- 労務費: 40 時間までの基本給に時間外手当てを加算
- 取引先担当者番号: 取引先企業または取引先担当者に基づいた営業案件に対する電話番号
- 潜在顧客スコア: 特定の潜在顧客の質を把握できる単一列
- フォローアップ期日: 重要度に基づき指定した日数で活動をフォローアップ
重要
計算列を作成するには、フィールドのセキュリティ プロファイル テーブル に対する書き込み特権が必要です。 計算列が計算でセキュアな列を使用する場合、ユーザーがアクセス許可のないデータにアクセスできないようにするために、計算列のセキュリティの設定も検討する必要があります。 セキュリティで保護された列を計算で使用する計算列を作成すると、計算列エディターは警告を発して、計算列のセキュリティ設定を勧めます。 詳細: アクセスを制御する列レベルのセキュリティ。
計算をサポートする列タイプ
- テキスト
- 選択肢
- はい/いいえ
- 整数
- 10 進数
- 通貨型
- 日付と時刻
計算列を作成する
Power Apps にサインイン
左のナビゲーション ウィンドウから、ソリューションを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
対象のテーブルがあるアンマネージド ソリューションを開きます。
列 領域を選択し、コマンド バーで 新しい列 を選択します。
表示名、名前、データ型 など、列に情報を入力します。
データ型が 計算をサポートする列タイプ の場合、動作 ドロップダウン リストから 計算済み を選択して、列を計算列にすることができます。
ドロップダウン リスト配下に 保存と編集 リンクが表示されます。 それを選択します。
新しい列が保存されます。 列 リストから、前の手順で保存した列を開きます。
列の編集 ウィンドウの 動作 ドロップダウン リストで 編集 を選択します。
計算列の定義エディターで、新しい計算列が作成されましたが、数式が設定されていないことに注意してください。 計算列の定義は、条件 と アクション の 2 つのセクションで構成されます。
- 条件セクションで、条件を追加を選択してテーブル、列、演算子、タイプ、および値を指定します。 テーブル のドロップダウン ボックスで、現在のテーブルまたは関連テーブルを選択できます。 列 ドロップダウン ボックスで、テーブルのすべての使用できる列を選択できます。 選択する演算子に基づいて、種類と値を指定する必要があります。
AND
またはOR
演算子を使用して、複数の条件を指定できます。 条件の指定が終了したら、 チェックマークを選択します。 - 条件を指定した後、アクション セクションでアクションの追加を選択して、計算列の数式を提供します。 アクションの指定が終了したら、 チェックマークを選択します。
注意
自分のアクション内で検索行のデータも使用できます。 最初に検索列を選択してから期間を入力する必要があります。 その後に、関連テーブルで使用できる列を 1 つ選択できます。 たとえば、
<LookupFieldName>.<RelatedFieldName>
の場合は、以下を選択できます:ParentAccountId.AccountNumber
。列レベル セキュリティは関連するテーブルでは無視されるため、アクセスされた列に機密データが含まれている場合は、計算列もセキュリティ保護するよう提案するようにしてください。
- 条件セクションで、条件を追加を選択してテーブル、列、演算子、タイプ、および値を指定します。 テーブル のドロップダウン ボックスで、現在のテーブルまたは関連テーブルを選択できます。 列 ドロップダウン ボックスで、テーブルのすべての使用できる列を選択できます。 選択する演算子に基づいて、種類と値を指定する必要があります。
計算列定義エディターで、保存して閉じるを選択します。
使用例
計算列の例をより詳細に見てみましょう。
営業案件の売上高の期待値
この例では、営業案件テーブルの列を使用して、営業案件の確率に基づいた売上高の期待値を計算します。 営業案件テーブルの列エディターで、売上高の期待値 という名前の列を作成し、その列の種類を 計算 として、そのデータの種類を 通貨 として指定します。
計算列定義エディターの 条件 セクションで、営業案件を Status = Open を使用して指定します。 アクションでは、数式は、営業案件の確率を乗じた営業案件売上見込みに基づいて、売上高の期待値を計算します。 次のスクリーンショットに、売上高の期待値の計算列を定義する方法を順を追って説明しています。
営業案件の条件の設定:
売上高の期待値の数式の指定:
全体:
営業案件のフォローアップ日付
この例では、営業案件の発生した潜在顧客の列を使用して、営業案件の追跡に適切な日付を計算します。
営業案件テーブルの列エディターで、フォローアップ日 という名前の列を作成し、その列の種類を 計算 として、そのデータ型を 日付と時間 として指定します。
計算列定義エディターの 条件 セクションで、潜在顧客の購入の概算時間とその推測値の 2 つの条件を指定します。
アクション では、2 つの数式を指定します。
- 緊急の案件に対して 1 週間でフォローアップ
- 営業案件がすぐに発生しそうにない場合には 1 ヶ月後にフォローアップ。
次のスクリーンショットに、フォローアップ日の計算フィールドを定義する方法を順を追って説明しています。
元の潜在顧客に次の 2 つの条件を設定:
1 週間でフォローアップする数式を指定:
1 ヶ月でフォローアップする数式を指定:
全体:
行作成からの日数
この例では、DIFFINDAYS 関数を使用して、行を作成した時点から現在の日付までの差を日数で計算します。
日数で計算した差 という名前の新しい整数列を作成します。
差を日数で計算する公式の提供
全体:
関数の構文
次のテーブルに、計算列の ACTION セクションで提供される関数の構文を示します。
ヒント
関数名は大文字で指定されます。
関数の構文 | 説明 | 返り値の種類 |
---|---|---|
ADDDAYS (整数、日時) | 特定の日時に指定された日数を加算した新しい日時を返します。 | 日付と時間 |
ADDHOURS (整数、日時) | 特定の日時に指定された時間数を加算した新しい日時を返します。 | 日付と時間 |
ADDMONTHS (整数、日時) | 特定の日時に指定された月数を加算した新しい日時を返します。 | 日付と時間 |
ADDWEEKS (整数、日時) | 特定の日時に指定された週数を加算した新しい日時を返します。 | 日付と時間 |
ADDYEARS (整数、日時) | 特定の日時に指定された年数を加算した新しい日時を返します。 | 日付と時間 |
SUBTRACTDAYS (整数、日時) | 特定の日時から指定された日数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTHOURS (整数、日時) | 特定の日時から指定された時間数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTMONTHS (整数、日時) | 特定の日時から指定された月数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTWEEKS (整数、日時) | 特定の日時から指定された週数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTYEARS (整数、日時) | 特定の日時から指定された年数を減算した新しい日時を返します。 | 日付と時間 |
DIFFINDAYS (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を日数で返します。 両方の日付と時刻が同じ日に入れば、その差は 0 になります。 | 整数 |
DIFFINHOURS (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を時間で返します。 | 整数 |
DIFFINMINUTES (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を分の単位で返します。 | 整数 |
DIFFINMONTHS (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を月数で返します。 両方の日付と時刻が同じ月に収まれば、その差は 0 になります。 | 整数 |
DIFFINWEEKS (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を週数で返します。 両方の日付と時刻が同じ週に収まれば、その差は 0 になります。 | 整数 |
DIFFINYEARS (日付と時刻、日付と時刻) | 2 つの 日付と時刻 列間の差を年数で返します。 両方の日付と時刻が同じ年に収まれば、その差は 0 になります。 | 整数 |
CONCAT (単一行のテキスト、単一行のテキスト、… 単一行のテキスト) | 複数の文字列を連結した結果の文字列を返します。 | 文字列 |
TRIMLEFT (1 行テキスト、整数) | 最初の N 文字なしの指定された文字列のコピーを含む文字列を返します。 | 文字列 |
TRIMRIGHT (1 行テキスト、整数) | 最後の N 文字なしの指定された文字列のコピーを含む文字列を返します。 | String |
注意
すべての DIFF 機能では、最初の 日付と時刻 列と 2 番目の 日付と時刻 列の動作が、ユーザー ローカル、日付のみ、または タイム ゾーン非依存 のいずれかと同じであることが要求されます。 2 番目の列の動作が最初の列の動作と一致しない場合、2 番目の列を現在の関数で使用できないことを示すエラー メッセージが表示されます。 詳細: 日時の列の動作と形式。
注意
計算列で日付値として 01/01/2015 などの日付を入力することはできません。 日付と日時の値は、別の日時列を使用してのみ設定または比較することができます。
CONCAT 関数では、複数の 1 行テキスト、1 行テキストを含むテーブル列、またはその両方の組み合わせとして文字列を使用できます。 例: CONCAT (FirstName、LastName、「管理者である」。)。 リテラル文字列に引用符が含まれる場合は、次のようにバックスラッシュ (\) エスケープ文字を各引用符より前にします: This string contains the \"quotation marks.\"
これにより、文字列内の引用符が文字列を区切る特殊文字として扱われなくなります。
次の例は、TRIMLEFT 関数と TRIMRIGHT 関数の使用方法を示しています。 これらには、TRIMLEFT 関数と TRIMRIGHT 関数によって返される最初の文字列と結果文字列が含まれています。
TRIMLEFT ("RXX10-3456789", 3) は文字列 10-3456789
を返す
TRIMRIGHT ("20-3456789RXX, 3") は文字列20-3456789
を返す
考慮事項
計算列を使用するときは、次の特定の要件と制限に注意ください。
保存されたクエリ、グラフ、ビジュアル化には、固有の計算属性を最大 50 まで含めることができます。
計算列の値は、タイル ビューまたはテーブルのメイン フォームで、Outlook Client Offline モードには表示されません。
連鎖した計算列の最大数は 5 です。
計算列は自己参照したり、サイクリック チェーンを使用することはできません。
複数条件節の条件演算子の 1 つを変更すると、すべての条件演算子がその条件に更新されます。 たとえば、
IF (x > 50) OR (y ==10) OR (z < 5)
の節で、OR
演算子をAND
演算子に変更すると、その節に含まれるすべてのOR
演算子がAND
演算子に変更されます。<LookupFieldName>.<FieldName>
などの親テーブルへの検索列を介して、親列にアクセスできます。 これは、取引先企業または取引先担当者となる顧客のような複数テーブルの検索列に対しては適用できません。 ただし、一部のテーブルには、ParentAccountid.
<FieldName>
、またはParentContactid.
<FieldName>
などの、特定のテーブルに対する個別の検索列が含まれます。並べ替えは、次の場所では無効です。
- 親行の列を含む計算列。
- 論理列 ([住所] 列など) を含む計算列
- 他の計算列を含む計算列。
Now()
関数を含む計算列。
計算列は 2 つのテーブルのみまたがることができます。
- 計算列には、別のテーブル (現在のテーブルと親行の 2 つのテーブルにまたがる) の列を含めることができます。
- 計算列には、異なるテーブルの別の列も含んでいる別のテーブルからの計算列 (3 つのテーブルにまたがる) を含めることはできません:
(現在のテーブル) 計算列 ← (親行) 計算列 1 ← (親行) 計算列 2。
計算列でワークフローまたはプラグインをトリガーすることはできません。
既存の単純な列を計算列に変更することはできません。 現在のアプリケーションが JavaScript またはプラグインを使用して列を計算している場合、計算列機能を使用するには、新しい列を作成する必要があります。
重複データ検出ルールは計算列でトリガーされません。
ロールアップは、他の計算列のすべての列が現在のテーブルにある場合も、他の計算列を使用する計算列を参照できません。
通貨計算列が関連テーブルの通貨列に依存する場合、システムは対応する基本通貨列の値を使用して計算を実行します。 これは、為替レートの値と通貨の値がテーブル レコードごとに異なる可能性があるためです。 たとえば、計算列を考えてみましょう -
Account Revenue
にOpportunity
表を見て、Account
テーブル上でAnnual Revenue
通貨欄に依存しているAccount Revenue
を考慮して、Account Revenue
が次のように説明されている通り計算されます。'Account Revenue' = ['Annual Revenue (Base)' * 'Exchange Rate on Opportunity table record']
または'Account Revenue' = [('Annual Revenue' / 'Exchange Rate on Account table record') * 'Exchange Rate on Opportunity table record']
参照
列を作成、編集する
値を集約するロールアップ列を定義する
ビデオ: ロールアップ列と計算列
コードを使用した数式列、計算列、ロールアップ列
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。