TableOperations クラス
テーブル レベルのメタデータ操作の名前空間。
client.tables経由でアクセスされます。 Dataverse テーブルの作成、削除、検査、一覧表示、および列の追加と削除を行う操作を提供します。
例:
client = DataverseClient(base_url, credential)
# Create a table
info = client.tables.create(
"new_Product",
{"new_Price": "decimal", "new_InStock": "bool"},
solution="MySolution",
)
# List tables
tables = client.tables.list()
# Get table info
info = client.tables.get("new_Product")
# Add columns
client.tables.add_columns("new_Product", {"new_Rating": "int"})
# Remove columns
client.tables.remove_columns("new_Product", "new_Rating")
# Delete a table
client.tables.delete("new_Product")
メソッド
| add_columns |
既存のテーブルに 1 つ以上の列を追加します。 例:
|
| create |
指定した列を含むカスタム テーブルを作成します。 |
| create_alternate_key |
テーブルに代替キーを作成します。 代替キーを使用すると、アップサート操作で、プライマリ GUID ではなく 1 つ以上の列でレコードを識別できます。 作成後、キーはインデックス作成のためにキューに入れられます。その status は、インデックスの準備ができたら、 |
| create_lookup_field |
単純なルックアップ フィールド リレーションシップを作成します。 これは、既存のテーブルにルックアップ フィールドを追加する一般的なケースの create_one_to_many_relationship をラップする便利なメソッドです。 |
| create_many_to_many_relationship |
テーブル間に多対多リレーションシップを作成します。 この操作により、多対多リレーションシップと交差テーブルが作成され、リレーションシップが管理されます。 |
| create_one_to_many_relationship |
テーブル間に一対多リレーションシップを作成します。 この操作により、参照元テーブルにリレーションシップとルックアップ属性の両方が作成されます。 |
| delete |
スキーマ名でカスタム テーブルを削除します。 Warnung この操作は元に戻すことができないので、 テーブルをテーブル定義と共に使用します。 例:
|
| delete_alternate_key |
メタデータ ID で代替キーを削除します。 Warnung アップサート操作で使用されている代替キーを削除すると、 これらの操作が失敗する原因となります。 この操作は元に戻すことができません。 例:
|
| delete_relationship |
メタデータ ID でリレーションシップを削除します。 Warnung リレーションシップを削除すると、関連付けられている参照属性も削除されます 一対多リレーションシップの場合は 〗。 この操作は元に戻すことができません。 例:
|
| get |
テーブルが存在する場合は、その基本的なメタデータを取得します。 例:
|
| get_alternate_keys |
テーブルに定義されているすべての代替キーを一覧表示します。 |
| get_relationship |
スキーマ名でリレーションシップ メタデータを取得します。 例:
|
| list |
Dataverse 環境内のすべての非プライベート テーブルを一覧表示します。 既定では、 例:
|
| list_columns |
テーブルのすべての属性 (列) 定義を一覧表示します。 例:
|
| list_relationships |
環境内のすべてのリレーションシップ定義を一覧表示します。 例:
|
| list_table_relationships |
特定のテーブルのすべてのリレーションシップを一覧表示します。
例:
|
| remove_columns |
テーブルから 1 つ以上の列を削除します。 例:
|
add_columns
既存のテーブルに 1 つ以上の列を追加します。
例:
created = client.tables.add_columns(
"new_MyTestTable",
{"new_Notes": "string", "new_Active": "bool"},
)
print(created) # ['new_Notes', 'new_Active']
add_columns(table: str, columns: Dict[str, Any]) -> List[str]
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
|
columns
必須
|
列スキーマ名 (カスタマイズ プレフィックス付き) の型へのマッピング。 サポートされている型は、 createの場合と同じです。 |
返品
| 型 | 説明 |
|---|---|
|
作成された列のスキーマ名。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが存在しない場合。 |
create
指定した列を含むカスタム テーブルを作成します。
create(table: str, columns: Dict[str, Any], *, solution: str | None = None, primary_column: str | None = None, display_name: str | None = None) -> TableInfo
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
カスタマイズ プレフィックスを持つテーブルのスキーマ名 (例: |
|
columns
必須
|
列スキーマ名 (カスタマイズ プレフィックス付き) の型へのマッピング。 サポートされる型には、 |
|
solution
必須
|
新しいテーブルを所有する必要があるオプションのソリューション固有の名前。 省略すると、既定のソリューションにテーブルが作成されます。 |
|
primary_column
必須
|
カスタマイズ プレフィックス (例: |
|
display_name
必須
|
テーブルの人間が判読できる表示名 (例: |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
solution
|
規定値: None
|
|
primary_column
|
規定値: None
|
|
display_name
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
|
例外
| 型 | 説明 |
|---|---|
|
テーブルの作成が失敗した場合、またはテーブルが既に存在する場合。 |
例
単純な列を含むテーブルを作成します。
from enum import IntEnum
class ItemStatus(IntEnum):
ACTIVE = 1
INACTIVE = 2
result = client.tables.create(
"new_Product",
{
"new_Title": "string",
"new_Price": "decimal",
"new_Status": ItemStatus,
},
solution="MySolution",
primary_column="new_ProductName",
display_name="Product",
)
print(f"Created: {result['table_schema_name']}")
create_alternate_key
テーブルに代替キーを作成します。
代替キーを使用すると、アップサート操作で、プライマリ GUID ではなく 1 つ以上の列でレコードを識別できます。 作成後、キーはインデックス作成のためにキューに入れられます。その status は、インデックスの準備ができたら、 "Pending" から "Active" に移行します。
create_alternate_key(table: str, key_name: str, columns: List[str], *, display_name: str | None = None, language_code: int = 1033) -> AlternateKeyInfo
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
|
key_name
必須
|
新しい代替キーのスキーマ名 (例: |
|
columns
必須
|
キーを構成する列論理名の一覧 (例: |
|
display_name
必須
|
キーの表示名。 指定されていない場合は、デフォルトは |
|
language_code
必須
|
ラベルの言語コード。 既定値は 1033 (英語) です。 |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
display_name
|
規定値: None
|
|
language_code
|
規定値: 1033
|
返品
| 型 | 説明 |
|---|---|
|
新しく作成された代替キーのメタデータ。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが存在しない場合。 |
|
|
Web API 要求が失敗した場合。 |
例
アップサート用の単一列代替キーを作成します。
key = client.tables.create_alternate_key(
"new_Product",
"new_product_code_key",
["new_productcode"],
display_name="Product Code",
)
print(f"Key ID: {key.metadata_id}")
print(f"Columns: {key.key_attributes}")
create_lookup_field
単純なルックアップ フィールド リレーションシップを作成します。
これは、既存のテーブルにルックアップ フィールドを追加する一般的なケースの create_one_to_many_relationship をラップする便利なメソッドです。
create_lookup_field(referencing_table: str, lookup_field_name: str, referenced_table: str, *, display_name: str | None = None, description: str | None = None, required: bool = False, cascade_delete: str = 'RemoveLink', solution: str | None = None, language_code: int = 1033) -> RelationshipInfo
パラメーター
| 名前 | 説明 |
|---|---|
|
referencing_table
必須
|
ルックアップ フィールドを持つテーブルの論理名 (子テーブル)。 |
|
lookup_field_name
必須
|
ルックアップ フィールドのスキーマ名 (例: |
|
referenced_table
必須
|
参照されているテーブルの論理名 (親テーブル)。 |
|
display_name
必須
|
ルックアップ フィールドの表示名。 既定値は参照先のテーブル名です。 |
|
description
必須
|
ルックアップ フィールドの説明 (省略可能)。 |
|
required
必須
|
参照が必要かどうか。 既定値は |
|
cascade_delete
必須
|
動作 ( |
|
solution
必須
|
リレーションシップを追加するソリューションの一意の名前 (省略可能)。 |
|
language_code
必須
|
ラベルの言語コード。 既定値は 1033 (英語) です。 |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
display_name
|
規定値: None
|
|
description
|
規定値: None
|
|
required
|
規定値: False
|
|
cascade_delete
|
規定値: RemoveLink
|
|
solution
|
規定値: None
|
|
language_code
|
規定値: 1033
|
返品
| 型 | 説明 |
|---|---|
|
|
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
例
単純なルックアップ フィールドを作成します。
result = client.tables.create_lookup_field(
referencing_table="new_order",
lookup_field_name="new_AccountId",
referenced_table="account",
display_name="Account",
required=True,
cascade_delete=CASCADE_BEHAVIOR_REMOVE_LINK,
)
print(f"Created lookup: {result.lookup_schema_name}")
create_many_to_many_relationship
テーブル間に多対多リレーションシップを作成します。
この操作により、多対多リレーションシップと交差テーブルが作成され、リレーションシップが管理されます。
create_many_to_many_relationship(relationship: ManyToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
パラメーター
| 名前 | 説明 |
|---|---|
|
relationship
必須
|
多対多リレーションシップを定義するメタデータ。 |
|
solution
必須
|
リレーションシップを追加するソリューションの一意の名前 (省略可能)。 |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
solution
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
|
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
例
多対多のリレーションシップを作成する: 従業員 <-> プロジェクト:
from PowerPlatform.Dataverse.models import (
ManyToManyRelationshipMetadata,
)
relationship = ManyToManyRelationshipMetadata(
schema_name="new_employee_project",
entity1_logical_name="new_employee",
entity2_logical_name="new_project",
)
result = client.tables.create_many_to_many_relationship(relationship)
print(f"Created: {result.relationship_schema_name}")
create_one_to_many_relationship
テーブル間に一対多リレーションシップを作成します。
この操作により、参照元テーブルにリレーションシップとルックアップ属性の両方が作成されます。
create_one_to_many_relationship(lookup: LookupAttributeMetadata, relationship: OneToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
パラメーター
| 名前 | 説明 |
|---|---|
|
lookup
必須
|
参照属性を定義するメタデータ。 |
|
relationship
必須
|
リレーションシップを定義するメタデータ。 |
|
solution
必須
|
リレーションシップを追加するソリューションの一意の名前 (省略可能)。 |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
solution
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
|
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
例
一対多リレーションシップを作成する: Department (1) -> Employee (N):
from PowerPlatform.Dataverse.models import (
LookupAttributeMetadata,
OneToManyRelationshipMetadata,
Label,
LocalizedLabel,
CascadeConfiguration,
)
from PowerPlatform.Dataverse.common.constants import (
CASCADE_BEHAVIOR_REMOVE_LINK,
)
lookup = LookupAttributeMetadata(
schema_name="new_DepartmentId",
display_name=Label(
localized_labels=[
LocalizedLabel(label="Department", language_code=1033)
]
),
)
relationship = OneToManyRelationshipMetadata(
schema_name="new_Department_Employee",
referenced_entity="new_department",
referencing_entity="new_employee",
referenced_attribute="new_departmentid",
cascade_configuration=CascadeConfiguration(
delete=CASCADE_BEHAVIOR_REMOVE_LINK,
),
)
result = client.tables.create_one_to_many_relationship(lookup, relationship)
print(f"Created lookup field: {result.lookup_schema_name}")
delete
スキーマ名でカスタム テーブルを削除します。
Warnung
この操作は元に戻すことができないので、
テーブルをテーブル定義と共に使用します。
例:
client.tables.delete("new_MyTestTable")
delete(table: str) -> None
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
例外
| 型 | 説明 |
|---|---|
|
テーブルが存在しない場合、または削除が失敗する場合。 |
delete_alternate_key
メタデータ ID で代替キーを削除します。
Warnung
アップサート操作で使用されている代替キーを削除すると、
これらの操作が失敗する原因となります。 この操作は元に戻すことができません。
例:
client.tables.delete_alternate_key(
"new_Product",
"12345678-1234-1234-1234-123456789abc",
)
delete_alternate_key(table: str, key_id: str) -> None
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
|
key_id
必須
|
削除する代替キーのメタデータ GUID。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが存在しない場合。 |
|
|
Web API 要求が失敗した場合。 |
delete_relationship
メタデータ ID でリレーションシップを削除します。
Warnung
リレーションシップを削除すると、関連付けられている参照属性も削除されます
一対多リレーションシップの場合は 〗。 この操作は元に戻すことができません。
例:
client.tables.delete_relationship(
"12345678-1234-1234-1234-123456789abc"
)
delete_relationship(relationship_id: str) -> None
パラメーター
| 名前 | 説明 |
|---|---|
|
relationship_id
必須
|
リレーションシップ メタデータの GUID。 |
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
get
テーブルが存在する場合は、その基本的なメタデータを取得します。
例:
info = client.tables.get("new_MyTestTable")
if info:
print(f"Logical name: {info['table_logical_name']}")
print(f"Entity set: {info['entity_set_name']}")
get(table: str) -> TableInfo | None
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 ( |
返品
| 型 | 説明 |
|---|---|
|
テーブル メタデータ。テーブルが見つからない場合は |
get_alternate_keys
テーブルに定義されているすべての代替キーを一覧表示します。
get_alternate_keys(table: str) -> List[AlternateKeyInfo]
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
返品
| 型 | 説明 |
|---|---|
|
代替キー メタデータ オブジェクトの一覧。 代替キーが定義されていない場合は空の場合があります。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが存在しない場合。 |
|
|
Web API 要求が失敗した場合。 |
例
代替キーを一覧表示し、その状態を出力します。
keys = client.tables.get_alternate_keys("new_Product")
for key in keys:
print(f"{key.schema_name}: {key.status}")
get_relationship
スキーマ名でリレーションシップ メタデータを取得します。
例:
rel = client.tables.get_relationship("new_Department_Employee")
if rel:
print(f"Found: {rel.relationship_schema_name}")
get_relationship(schema_name: str) -> RelationshipInfo | None
パラメーター
| 名前 | 説明 |
|---|---|
|
schema_name
必須
|
関係のスキーマ名。 |
返品
| 型 | 説明 |
|---|---|
|
リレーションシップ メタデータ。見つからない場合は |
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
list
Dataverse 環境内のすべての非プライベート テーブルを一覧表示します。
既定では、 IsPrivate eq falseするすべてのテーブルが返されます。 結果をさらに絞り込むには、省略可能な OData $filter 式を指定します。
式は、IsPrivate eq falseを使用して既定の and 句と組み合わされます。
例:
# List all non-private tables
tables = client.tables.list()
for table in tables:
print(table["LogicalName"])
# List only tables whose schema name starts with "new_"
custom_tables = client.tables.list(
filter="startswith(SchemaName, 'new_')"
)
# List tables with only specific properties
tables = client.tables.list(
select=["LogicalName", "SchemaName", "EntitySetName"]
)
list(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
パラメーター
| 名前 | 説明 |
|---|---|
|
filter
必須
|
オプションの OData |
|
select
必須
|
応答に含めるプロパティ名の省略可能なリスト (OData |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
filter
|
規定値: None
|
|
select
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
EntityDefinition メタデータ ディクショナリの一覧。 |
list_columns
テーブルのすべての属性 (列) 定義を一覧表示します。
例:
# List all columns on the account table
columns = client.tables.list_columns("account")
for col in columns:
print(f"{col['LogicalName']} ({col.get('AttributeType')})")
# List only specific properties
columns = client.tables.list_columns(
"account",
select=["LogicalName", "SchemaName", "AttributeType"],
)
# Filter to only string attributes
columns = client.tables.list_columns(
"account",
filter="AttributeType eq 'String'",
)
list_columns(table: str, *, select: List[str] | None = None, filter: str | None = None) -> List[Dict[str, Any]]
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 ( |
|
select
必須
|
|
|
filter
必須
|
省略可能な OData |
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
select
|
規定値: None
|
|
filter
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
生属性メタデータ ディクショナリの一覧。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが見つからない場合。 |
|
|
Web API 要求が失敗した場合。 |
list_relationships
環境内のすべてのリレーションシップ定義を一覧表示します。
例:
# List all relationships
rels = client.tables.list_relationships()
for rel in rels:
print(f"{rel['SchemaName']} ({rel.get('@odata.type')})")
# Filter by type
one_to_many = client.tables.list_relationships(
filter="RelationshipType eq Microsoft.Dynamics.CRM.RelationshipType'OneToManyRelationship'"
)
# Select specific properties
rels = client.tables.list_relationships(
select=["SchemaName", "ReferencedEntity", "ReferencingEntity"]
)
list_relationships(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
パラメーター
| 名前 | 説明 |
|---|---|
|
filter
必須
|
省略可能な OData |
|
select
必須
|
|
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
filter
|
規定値: None
|
|
select
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
生のリレーションシップ メタデータ ディクショナリの一覧。 |
例外
| 型 | 説明 |
|---|---|
|
Web API 要求が失敗した場合。 |
list_table_relationships
特定のテーブルのすべてのリレーションシップを一覧表示します。
EntityDefinitions({id})/OneToManyRelationships、EntityDefinitions({id})/ManyToOneRelationships、およびEntityDefinitions({id})/ManyToManyRelationshipsのクエリを実行して、特定のテーブルの一対多、多対一、多対多のリレーションシップを結合します。
例:
# List all relationships for the account table
rels = client.tables.list_table_relationships("account")
for rel in rels:
print(f"{rel['SchemaName']} -> {rel.get('@odata.type')}")
list_table_relationships(table: str, *, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
|
filter
必須
|
各サブ要求に適用される省略可能な OData |
|
select
必須
|
|
キーワードのみのパラメーター
| 名前 | 説明 |
|---|---|
|
filter
|
規定値: None
|
|
select
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
一対多、多対一、多対多のリレーションシップ メタデータ ディクショナリの組み合わせリスト。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルが見つからない場合。 |
|
|
Web API 要求が失敗した場合。 |
remove_columns
テーブルから 1 つ以上の列を削除します。
例:
removed = client.tables.remove_columns(
"new_MyTestTable",
["new_Notes", "new_Active"],
)
print(removed) # ['new_Notes', 'new_Active']
remove_columns(table: str, columns: str | List[str]) -> List[str]
パラメーター
| 名前 | 説明 |
|---|---|
|
table
必須
|
テーブルのスキーマ名 (例: |
|
columns
必須
|
削除する列スキーマ名または列スキーマ名の一覧。 カスタマイズ プレフィックス (例: |
返品
| 型 | 説明 |
|---|---|
|
削除された列のスキーマ名。 |
例外
| 型 | 説明 |
|---|---|
|
テーブルまたは指定された列が存在しない場合。 |