属性ルールの追加 (Add Attribute Rule) (データ管理)

サマリー

データセットに属性ルールを追加します。

属性ルールは、編集操作性を強化し、データの整合性を確保するためにデータセットに追加できる、ユーザー定義のルールです。 これらのルールは、属性値を設定したり、許容されるフィーチャ構成を制限したりするために使用でき、フィーチャの編集時に適用されます。 フィーチャの編集時にルール違反が発生すると、エラー メッセージが返されます。

属性ルールの詳細

ArcGIS Arcade スクリプト言語の詳細

使用法

  • エンタープライズ ジオデータベース内のバッチ計算ルールと検証ルールは、ブランチ バージョン対応されたデータセットの検証サーバーを使用して評価されます。 これらのルール タイプを追加するには、データベース コネクションの [バージョニング タイプ][ブランチ] に設定する必要があります。

  • データセットには、GlobalID フィールドが必要です。

  • バッチ計算ルールまたは検証ルールをデータセットに追加するには、編集情報の記録を有効にする必要があります。

  • 属性ルールの定義に使用する式は、Arcade 言語で使用可能な機能性に制限されます。

  • [データベース シーケンスの作成 (Create Database Sequence)] ツールで作成されたデータベース シーケンスを参照するには、[スクリプト式] パラメーターに NextSequenceValue Arcade データ関数を使用します。

  • 既存の属性ルールを別のデータセットに割り当てるには、このツールを何度も実行する代わりに、[属性ルールのエクスポート (Export Attribute Rules)] ツールと [属性ルールのインポート (Import Attribute Rules)] ツールを使用できます。

  • 注意:

    データセットに属性ルールを追加すると、データセットのクライアントの最低バージョンは ArcGIS AllSource 2.1 となります。 すなわち、データセットは ArcMap では使用できなくなります。

パラメーター

ラベル説明データ タイプ
入力テーブル

新しいルールを適用するテーブルまたはフィーチャクラス。

Table View
名前

新しいルールの一意の名前。

String
タイプ

追加する属性ルールのタイプを指定します。

  • 計算フィーチャの属性値は、フィーチャ上に別の属性が設定されたときに自動的に設定されます。 これらのルールは、指定されたトリガー イベントに基づいて適用されます。 長期的な計算をバッチ モードで実行するように設定できます。また、これらの計算はユーザー定義の時刻に評価されます。複数の計算ルールを追加するときに、循環依存がある場合には、ルールの追加順序が重要になります。 たとえば、ルール A は Field1$feature.Field2 + $feature.Field3 の値に等しいという計算であり、ルール B は Field4$feature.Field1 + $feature.Field5 の値に等しいという計算であるとすると、計算の結果はルールの追加順序によって異なることになります。
  • 制約フィーチャに対して許容される属性構成が指定されます。 制約ルールの違反が発生した場合、エラーが生成され、フィーチャは格納されません。 たとえば、Field A の値が Field BField C の合計を下回っていなければならない場合、その制約に対する違反が発生すると、エラーが生成されます。
  • 検証バッチ検証プロセスで既存のフィーチャが識別されます。 ルールはユーザー定義の時刻に評価されます。 ルールに違反すると、エラー フィーチャが作成されます。
String
スクリプト式

ルールを定義する Arcade 式。

Calculator Expression
編集可能
(オプション)

属性値を編集できるかどうかを指定します。 属性ルールはブロックされるように構成するか、計算対象のフィールドの属性値を編集者が編集できるように構成することができます。 このパラメーターは、計算属性ルール タイプのみに適用されます。

  • オン - 属性値を編集できます。 これがデフォルトです。
  • オフ - 属性値を編集できません。

Boolean
トリガー イベント
(オプション)

属性ルールの有効化をトリガーする編集イベントを指定します。 このパラメーターは、計算ルール タイプと制約ルール タイプにのみ有効です。 [バッチ] パラメーターがオフに設定されている計算ルールの場合は、1 つ以上のトリガー イベントを指定する必要があります。 [バッチ] パラメーターがオンに設定されている計算ルールの場合は、1 つ以上のトリガー イベントを指定する必要があります。

  • 挿入このルールは新しいフィーチャの追加時に適用されます。
  • 更新このルールはフィーチャが更新されるときに適用されます。
  • 削除このルールはフィーチャが削除されるときに適用されます。
String
エラー番号
(オプション)

このルールの違反が発生した場合に返されるエラー番号。 この値は一意である必要はないので、複数のルールで同じカスタム エラー番号が返される可能性があります。

このパラメーターは、制約ルール タイプと検証ルール タイプに必須です。 計算ルール タイプではオプションです。

String
エラー メッセージ
(オプション)

このルールの違反が発生した場合に返されるエラー メッセージ。 違反の発生時に編集者がその違反を理解できるように、わかりやすいメッセージを使用することをお勧めします。 メッセージは 256 文字以下に制限されています。

このパラメーターは、制約ルール タイプと検証ルール タイプに必須です。 計算ルール タイプではオプションです。

String
説明
(オプション)

新しい属性ルールの説明。 説明は 256 文字以下に制限されています。

String
サブタイプ
(オプション)

データセットにサブタイプが含まれる場合にルールが適用されるサブタイプ。

String
フィールド
(オプション)

ルールの適用先となる既存のフィールドの名前。 このパラメーターは、計算属性ルール タイプのみに適用されます。

String
アプリケーション評価から除外
(オプション)

編集をワークスペースに適用する前にアプリケーションがルールをローカルで評価するかどうかを指定します。

すべてのクライアントが使用可能なルールをすべて実行する能力を持つわけではないので、作成者はクライアント評価から特定のルールを除外できます。 たとえば、(データがオフラインである、サイズ、セキュリティなどの理由で) すべてのクライアントで使用可能なわけではないデータを参照するルールが存在する可能性があります。また、ユーザーやコンテキストに依存するルールが存在することもあります (つまり、データ コレクション アプリの軽量フィールドの更新では、追加のユーザー入力または知識を必要とするルールは実行されませんが、ArcGIS AllSource などのクライアントがサポートしている場合があります)。

このパラメーターは、[バッチ] パラメーターがオンの場合、検証ルール タイプと計算ルールのタイプには適用されません。

  • オン - クライアント評価からルールが除外されます。
  • オフ - クライアント評価からルールが除外されません。 これがデフォルトです。

注意:

ArcGIS Pro 2.4 以前では、このパラメーターは [サーバーのみ] とラベルが付けられていました。

Boolean
バッチ
(オプション)

該当するルールの評価をバッチ モードで実行するかどうかを指定します。

  • オン - 該当するルールの評価は、検証を実行することで、後からバッチ モードで実行されます。
  • オフ - 該当するルールの評価は、バッチ モードで実行されません。 挿入、更新、削除、または編集操作で該当するルールを評価するタイミングの決定にトリガー イベントが使用されます。 これがデフォルトです。

計算ルールは、オンまたはオフにすることができます。 このパラメーターでは、検証ルールは常にオンになり、制約ルールは常にオフになります。

Boolean
重要度
(オプション)

エラーの重要度。

1 ~ 5 の範囲内の値を選択して、ルールの重要度を定義できます。 値 1 は最も重要度が高いことを示し、値 5 は最も重要度が低いことを示します。 たとえば、特定の属性ルールの重要度を低くして、データ生成ワークフローの実行中のエラーを無視するように設定したり、収集されたデータの正確度に合わせてエラーを修正する必要がある高い重要度を設定したりすることができます。

このパラメーターは、検証ルールにのみ適用されます。

Long
タグ
(オプション)

一連のタグを使用して、ルール (検索およびインデックス作成用) をデータ モデルの機能要件に対応付ける方法として解釈します。

String

派生した出力

ラベル説明データ タイプ
追加する属性ルール

追加した属性ルールが反映された入力テーブル。

Table View

arcpy.management.AddAttributeRule(in_table, name, type, script_expression, {is_editable}, {triggering_events}, {error_number}, {error_message}, {description}, {subtype}, {field}, {exclude_from_client_evaluation}, {batch}, {severity}, {tags})
名前説明データ タイプ
in_table

新しいルールを適用するテーブルまたはフィーチャクラス。

Table View
name

新しいルールの一意の名前。

String
type

追加する属性ルールのタイプを指定します。

  • CALCULATIONフィーチャの属性値は、フィーチャ上に別の属性が設定されたときに自動的に設定されます。 これらのルールは、指定されたトリガー イベントに基づいて適用されます。 長期的な計算をバッチ モードで実行するように設定できます。また、これらの計算はユーザー定義の時刻に評価されます。複数の計算ルールを追加するときに、循環依存がある場合には、ルールの追加順序が重要になります。 たとえば、ルール A は Field1$feature.Field2 + $feature.Field3 の値に等しいという計算であり、ルール B は Field4$feature.Field1 + $feature.Field5 の値に等しいという計算であるとすると、計算の結果はルールの追加順序によって異なることになります。
  • CONSTRAINTフィーチャに対して許容される属性構成が指定されます。 制約ルールの違反が発生した場合、エラーが生成され、フィーチャは格納されません。 たとえば、Field A の値が Field BField C の合計を下回っていなければならない場合、その制約に対する違反が発生すると、エラーが生成されます。
  • VALIDATIONバッチ検証プロセスで既存のフィーチャが識別されます。 ルールはユーザー定義の時刻に評価されます。 ルールに違反すると、エラー フィーチャが作成されます。
String
script_expression

ルールを定義する Arcade 式。

Calculator Expression
is_editable
(オプション)

属性値を編集できるかどうかを指定します。 属性ルールはブロックされるように構成するか、計算対象のフィールドの属性値を編集者が編集できるように構成することができます。 このパラメーターは、計算属性ルール タイプのみに適用されます。

  • EDITABLE属性値を編集できます。 これがデフォルトです。
  • NONEDITABLE属性値を編集できません。
Boolean
triggering_events
[triggering_events,...]
(オプション)

属性ルールの有効化をトリガーする編集イベントを指定します。 このパラメーターは、計算ルール タイプと制約ルール タイプにのみ有効です。 batch パラメーターが NOT_BATCH に設定されている計算ルールの場合は、1 つ以上のトリガー イベントを指定する必要があります。 batch パラメーターが BATCH に設定されている計算ルールには、トリガー イベントが適用されません。

  • INSERTこのルールは新しいフィーチャの追加時に適用されます。
  • UPDATEこのルールはフィーチャが更新されるときに適用されます。
  • DELETEこのルールはフィーチャが削除されるときに適用されます。
String
error_number
(オプション)

このルールの違反が発生した場合に返されるエラー番号。 この値は一意である必要はないので、複数のルールで同じカスタム エラー番号が返される可能性があります。

このパラメーターは、制約ルール タイプと検証ルール タイプに必須です。 計算ルール タイプではオプションです。

String
error_message
(オプション)

このルールの違反が発生した場合に返されるエラー メッセージ。 違反の発生時に編集者がその違反を理解できるように、わかりやすいメッセージを使用することをお勧めします。 メッセージは 256 文字以下に制限されています。

このパラメーターは、制約ルール タイプと検証ルール タイプに必須です。 計算ルール タイプではオプションです。

String
description
(オプション)

新しい属性ルールの説明。 説明は 256 文字以下に制限されています。

String
subtype
(オプション)

データセットにサブタイプが含まれる場合にルールが適用されるサブタイプ。

String
field
(オプション)

ルールの適用先となる既存のフィールドの名前。 このパラメーターは、計算属性ルール タイプのみに適用されます。

String
exclude_from_client_evaluation
(オプション)

編集をワークスペースに適用する前にアプリケーションがルールをローカルで評価するかどうかを指定します。

すべてのクライアントが使用可能なルールをすべて実行する能力を持つわけではないので、作成者はクライアント評価から特定のルールを除外できます。 たとえば、(データがオフラインである、サイズ、セキュリティなどの理由で) すべてのクライアントで使用可能なわけではないデータを参照するルールが存在する可能性があります。また、ユーザーやコンテキストに依存するルールが存在することもあります (つまり、データ コレクション アプリの軽量フィールドの更新では、追加のユーザー入力または知識を必要とするルールは実行されませんが、ArcGIS AllSource などのクライアントがサポートしている場合があります)。

このパラメーターは、batch パラメーター値が BATCH の場合、検証ルール タイプと計算ルール タイプには適用されません。

  • EXCLUDEクライアント評価からルールが除外されます。
  • INCLUDEクライアント評価からルールが除外されません。 これがデフォルトです。
Boolean
batch
(オプション)

該当するルールの評価をバッチ モードで実行するかどうかを指定します。

  • BATCH該当するルールの評価は、検証を実行することで、後からバッチ モードで実行されます。
  • NOT_BATCH該当するルールの評価は、バッチ モードで実行されません。 挿入、更新、または削除操作で該当するルールを評価するタイミングの決定にトリガー イベントが使用されます。 これがデフォルトです。

計算ルールは、BATCH または NOT_BATCH にすることができます。 このパラメーターでは、検証ルールは常に BATCH になり、制約ルールは常に NOT_BATCH になります。

Boolean
severity
(オプション)

エラーの重要度。

1 ~ 5 の範囲内の値を選択して、ルールの重要度を定義できます。 値 1 は最も重要度が高いことを示し、値 5 は最も重要度が低いことを示します。 たとえば、特定の属性ルールの重要度を低くして、データ生成ワークフローの実行中のエラーを無視するように設定したり、収集されたデータの正確度に合わせてエラーを修正する必要がある高い重要度を設定したりすることができます。

このパラメーターは、検証ルールにのみ適用されます。

Long
tags
[tags,...]
(オプション)

一連のタグを使用して、ルール (検索およびインデックス作成用) をデータ モデルの機能要件に対応付ける方法として解釈します。 複数のタグを入力するには、各タグをセミコロンで区切ります (例: Tag1;Tag2;Tag3)。

String

派生した出力

名前説明データ タイプ
out_table

追加した属性ルールが反映された入力テーブル。

Table View

コードのサンプル

AddAttributeRule の例 1 (Python ウィンドウ)

GasPipes フィーチャクラスの labeltext フィールドを計算する計算ルールを追加します。

'''****************************************************************************
Name:        AddAttributeRule_example1.py
Description: This script adds a calcualtion rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "calculateRuleLabel"
script_expression = 'if ($feature.material == 5) {return "Plastic"} else {return "Other"}'
triggering_events = "INSERT;UPDATE"
description = "Populate label text"
subtype = "Coated Steel"
field = "labeltext"

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, "CALCULATION", script_expression, "EDITABLE", triggering_events, "", "", description, subtype, field)
AddAttributeRule の例 2 (Python ウィンドウ)

GasPipes フィーチャクラスの動作圧属性を 300 に制限する制約ルールを追加します。

'''****************************************************************************
Name:        AddAttributeRule_example2.py
Description: This script adds a constraint rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "constraintRuleOP"
script_expression = '$feature.OPERATINGPRESSURE < 300'
triggering_events = "INSERT;UPDATE"
description = "Operating pressure must be less than 300"
subtype = "ALL"
error_number = 2001
error_message = "Invalid operating pressure. Must be less than 300."

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, "CONSTRAINT", script_expression, "EDITABLE", triggering_events, error_number, error_message, description, subtype)
AddAttributeRule の例 3 (Python ウィンドウ)

検証ルールを GasPipes フィーチャクラスに追加して、作動圧力が 300 を上回る既存のフィーチャにマークを付けます。

'''****************************************************************************
Name:        AddAttributeRule_example3.py
Description: This script adds a validation rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "validationRuleMaxOP"
rule_type = "VALIDATION"
script_expression = "$feature.OPERATINGPRESSURE < 300"
error_number = 3001
error_message = "Maximum operating pressure exceeded"
description = "Validation rule: max operating pressure value"
subtype = "Coated Steel"
batch = "BATCH"
severity = 3
tags = "OP;MAXOP"

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, rule_type, 
                                  script_expression, "", "", 
                                  error_number, error_message, 
                                  description, subtype, "", "", 
                                  batch, severity, tags)

関連トピック