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

サマリー

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

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

属性ルールの詳細

Arcade スクリプト言語の詳細

使用法

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

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

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

  • 属性ルールを追加するには、データセットの排他ロックが必要です。 データセットへのアクティブな接続はサービスを停止させる可能性があるため、すべて閉じる必要があります。

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

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

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

  • 注意:

    データセットに属性ルールを追加すると、データセットのクライアントの最低バージョンは ArcGIS Pro 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
トリガー イベント
(オプション)

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

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

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

このパラメーターは、制約ルールと整合チェック ルールに必須です。 計算ルールではオプションです。

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

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

このパラメーターは、制約ルールと整合チェック ルールに必須です。 計算ルールではオプションです。

String
説明
(オプション)

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

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

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

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

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

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

編集を適用する前にルールを評価から除外するかどうかを指定します。 すべてのクライアントが使用可能なルールをすべて実行する能力を持つわけではないので、シンプル クライアントのみに適用されるルールをフラグ付けすることができます。 たとえば、(データがオフライン状態にあるか、サイズやセキュリティなどの理由で) すべてのクライアントが使用できるようになっているわけではないデータを参照しているルールが存在しているか、ユーザーやコンテキストに依存するルールが存在していることがあります (つまり、ArcGIS Collector の軽量フィールドの更新では、追加のユーザー入力や知識を必要とするルールは実行されませんが、ArcGIS Pro などのクライアントではサポートされている場合があります)。 このパラメーターは、[バッチ] パラメーターがオンの場合、整合チェック ルールと計算ルールには適用されません。

  • オン - クライアント評価からルールが除外されます。
  • オフ - すべてのクライアントに対してルールが実行されます。 これがデフォルトです。

注意:

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,...]
(オプション)

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

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

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

このパラメーターは、制約ルールと整合チェック ルールに必須です。 計算ルールではオプションです。

String
error_message
(オプション)

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

このパラメーターは、制約ルールと整合チェック ルールに必須です。 計算ルールではオプションです。

String
description
(オプション)

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

String
subtype
(オプション)

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

String
field
(オプション)

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

String
exclude_from_client_evaluation
(オプション)

編集を適用する前にルールを評価から除外するかどうかを指定します。 すべてのクライアントが使用可能なルールをすべて実行する能力を持つわけではないので、シンプル クライアントのみに適用されるルールをフラグ付けすることができます。 たとえば、(データがオフライン状態にあるか、サイズやセキュリティなどの理由で) すべてのクライアントが使用できるようになっているわけではないデータを参照しているルールが存在しているか、ユーザーやコンテキストに依存するルールが存在していることがあります (つまり、ArcGIS Collector の軽量フィールドの更新では、追加のユーザー入力や知識を必要とするルールは実行されませんが、ArcGIS Pro などのクライアントではサポートされている場合があります)。 このパラメーターは、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.AddAttributeRule_management(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.AddAttributeRule_management(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.AddAttributeRule_management(in_table, name, rule_type, 
                                  script_expression, "", "", 
                                  error_number, error_message, 
                                  description, subtype, "", "", 
                                  batch, severity, tags)

環境

特殊なケース

ライセンス情報

  • Basic: No
  • Standard: Yes
  • Advanced: Yes

関連トピック