概要
データセットに属性ルールを追加します。
属性ルールは、編集操作性を強化し、データの整合性を確保するためにデータセットに追加できる、ユーザー定義のルールです。これらのルールは、属性値を設定したり、許容されるフィーチャ構成を制限したりするために使用でき、フィーチャの編集時に適用されます。フィーチャの編集時にルール違反が発生すると、エラー メッセージが返されます。
使用法
- エンタープライズ ジオデータベース内のバッチ計算ルールと整合チェック ルールは、ブランチ バージョン対応されたデータセットの整合チェック サーバーを使用して評価されます。これらのルール タイプを追加するには、データベース接続の [バージョニング タイプ] を [ブランチ] に設定する必要があります。 
- データセットには、GlobalID フィールドが必要です。 
- バッチ計算ルールまたは整合チェック ルールをデータセットに追加するには、編集情報の記録を有効にする必要があります。 
- 属性ルールを追加するには、データセットの排他ロックが必要です。データセットへのアクティブな接続はサービスを停止させる可能性があるため、すべて閉じる必要があります。 
- 属性ルールの定義に使用する式は、Arcade 言語で使用可能な機能性に制限されます。 
- [データベース シーケンスの作成 (Create Database Sequence)] ツールの [スクリプト式] パラメーターで作成されたデータベース シーケンスを参照するには、Arcade データ関数 NextSequenceValue を使用します。 
- 既存の属性ルールを別のデータセットに割り当てるには、このツールを何度も実行する代わりに、[属性ルールのエクスポート (Export Attribute Rules)] ツールと [属性ルールのインポート (Import Attribute Rules)] ツールを使用できます。 
メモ:
データセットに属性ルールを追加すると、データセットのクライアントの最低バージョンは ArcGIS Pro 2.1 となります。これは、そのデータセットが ArcMap で使用できなくなることを意味します。
構文
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 | 追加する属性ルールのタイプを指定します。 
 | String | 
| script_expression | ルールを定義する Arcade 式。 | Calculator Expression | 
| is_editable (オプション) | 属性値を編集できるかどうかを指定します。属性ルールはブロックされるように構成するか、計算対象のフィールドの属性値を編集者が編集できるように構成することができます。このパラメーターは、計算属性ルール タイプのみに適用されます。 
 | Boolean | 
| triggering_events [triggering_events,...] (オプション) | 属性ルールの有効化をトリガーする編集イベントを指定します。このパラメーターは、計算ルール タイプと制約ルール タイプにのみ有効です。[バッチ] パラメーターがオフ (Python では batch = "NOT_BATCH") に設定されている計算ルールの場合は、1 つ以上のトリガー イベントを指定する必要があります。[バッチ] パラメーターがオン (Python では batch = "BATCH") に設定されている計算ルールには、トリガー イベントが適用されません。 
 | 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 の場合、整合チェック ルールと計算ルールには適用されません。 
 | Boolean | 
| batch (オプション) | 該当するルールの評価をバッチ モードで実行するかどうかを指定します。 
 計算ルールは、BATCH または NOT_BATCH にすることができます。このパラメーターでは、整合チェック ルールは常に BATCH になり、制約ルールは常に NOT_BATCH になります。 バッチ ルールは、ブランチ バージョン対応が有効になっているデータにのみ使用できます。 | Boolean | 
| severity (オプション) | エラーの重要度。 1 ~ 5 の範囲内の値を選択して、ルールの重要度を定義できます。値 1 は最も重要度が高いことを示し、値 5 は最も重要度が低いことを示します。たとえば、特定の属性ルールの重要度を低くして、データ生成ワークフローの実行中のエラーを無視するように設定したり、収集されたデータの正確度に合わせてエラーを修正する必要がある高い重要度を設定したりすることができます。 このパラメーターは、整合チェック ルールにのみ適用されます。 | Long | 
| tags [tags,...] (オプション) | 一連のタグを使用して、ルール (検索可能およびインデックス作成可能) をデータ モデルの機能要件に対応付ける方法として解釈します。複数のタグを入力するには、各タグをセミコロンで区切ります (例: Tag1;Tag2;Tag3)。 | String | 
派生した出力
| 名前 | 説明 | データ タイプ | 
| out_table | 追加した属性ルールが反映された入力テーブル。 | テーブル ビュー | 
コードのサンプル
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)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)整合チェック ルールを 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: いいえ
- Standard: はい
- Advanced: はい