Compartir a través de


Definición del generador de gemelos digitales

En este artículo se proporciona un desglose de la estructura de los elementos de definición del generador de gemelos digitales.

Formatos compatibles

Los elementos de DigitalTwinBuilder admiten el formato JSON.

Elementos de definición

En esta tabla se enumeran los elementos de definición del generador de gemelos digitales.

Ruta de acceso del elemento de definición Tipo Obligatorio Descripción
definition.json DefinitionDetails (JSON) cierto Describe el LakehouseId asociado al elemento.
.platform PlatformDetails (JSON) falso Describe los detalles comunes del elemento.
EntityTypes Directorio falso Contiene una lista de archivos de tipo entidad que forman parte del elemento. Cada archivo de tipo de entidad (JSON) describe los detalles del tipo de entidad.
EntityTypeRelationships Directorio falso Contiene una lista de archivos de relación de tipo de entidad que forman parte del elemento. Cada archivo de relación de tipo de entidad (JSON) describe los detalles de la relación de tipo de entidad.
ContextualizationOperations Directorio falso Contiene una lista de archivos de operación de contextualización que forman parte del elemento. Cada archivo de operación de contextualización (JSON) describe los detalles de la operación de contextualización.
MappingOperations Directorio falso Contiene una lista de archivos de operación de asignación que forman parte del elemento. Cada archivo de operación de asignación (JSON) describe los detalles de la operación de asignación.

Ejemplo de definición

{
  "parts": [
    {
      "path": "definition.json",
      "payload": "ew0KICAibGFrZWhvdXNlSWQiOiAiYjliNWQzNmYtNDQ0NS00MDNiLWFjODctMDE2YjFjZDIwMjExIg0KfQ==",
      "payloadType": "InlineBase64"
    },
    {
      "path": ".platform",
      "payload": "ZG90UGxhdGZvcm1CYXNlNjRTdHJpbmc=",
      "payloadType": "InlineBase64"
    }
  ]
}

Ejemplo de definición con partes de definición opcionales

{
  "parts": [
    {
      "path": "definition.json",
      "payload": "eyAKICAiTGFrZWhvdXNlSWQiOiAiMjIzMDE0NGItZjQ4Ni04YjZmLTQ5NmMtM2U4ZTI4NzZhYTBkIiwgICAKfSA=",
      "payloadType": "InlineBase64"
    },
    {
      "path": ".platform",
      "payload": "ZG90UGxhdGZvcm1CYXNlNjRTdHJpbmc=",
      "payloadType": "InlineBase64"
    },
    {
      "path": "EntityTypes/139950578358348.json",
      "payload": "ew0KICAiSWQiOiAiMTM5OTUwNTc4MzU4MzQ4IiwNCiAgIk5hbWVzcGFjZSI6ICJ1c2VydHlwZXMiLA0KICAiQmFzZUVudGl0eVR5cGVJZCI6ICIyIiwNCiAgIk5hbWUiOiAiRXF1aXBtZW50MSIsDQogICJQcm9wZXJ0aWVzIjogWw0KICAgIHsNCiAgICAgICJJZCI6ICI5MTcxODAxMTAzMjkyNjk0NTI4IiwNCiAgICAgICJOYW1lIjogIkRpc3BsYXlOYW1lIiwNCiAgICAgICJWYWx1ZVR5cGUiOiAiU3RyaW5nIg0KICAgIH0sDQogICAgew0KICAgICAgIklkIjogIjkxNzE4MDExMDMyOTI2OTQ1MjkiLA0KICAgICAgIk5hbWUiOiAiU2VyaWFsTnVtYmVyIiwNCiAgICAgICJWYWx1ZVR5cGUiOiAiU3RyaW5nIg0KICAgIH0sDQogICAgew0KICAgICAgIklkIjogIjkxNzE4MDExMDMyOTI2OTQ1MzAiLA0KICAgICAgIk5hbWUiOiAiTWFudWZhY3R1cmVyIiwNCiAgICAgICJWYWx1ZVR5cGUiOiAiU3RyaW5nIg0KICAgIH0NCiAgXSwNCiAgIlRpbWVzZXJpZXNQcm9wZXJ0aWVzIjogW10NCn0=",
      "payloadType": "InlineBase64"
    },
    {
      "path": "EntityTypes/31864156952988.json",
      "payload": "ew0KICAiSWQiOiAiMzE4NjQxNTY5NTI5ODgiLA0KICAiTmFtZXNwYWNlIjogInVzZXJ0eXBlcyIsDQogICJCYXNlRW50aXR5VHlwZUlkIjogIjIiLA0KICAiTmFtZSI6ICJFcXVpcG1lbnQyIiwNCiAgIlByb3BlcnRpZXMiOiBbDQogICAgew0KICAgICAgIklkIjogIjIwODgyNDkzOTAwNzEwMjE1NjgiLA0KICAgICAgIk5hbWUiOiAiRGlzcGxheU5hbWUiLA0KICAgICAgIlZhbHVlVHlwZSI6ICJTdHJpbmciDQogICAgfSwNCiAgICB7DQogICAgICAiSWQiOiAiMjA4ODI0OTM5MDA3MTAyMTU2OSIsDQogICAgICAiTmFtZSI6ICJTZXJpYWxOdW1iZXIiLA0KICAgICAgIlZhbHVlVHlwZSI6ICJTdHJpbmciDQogICAgfSwNCiAgICB7DQogICAgICAiSWQiOiAiMjA4ODI0OTM5MDA3MTAyMTU3MCIsDQogICAgICAiTmFtZSI6ICJNYW51ZmFjdHVyZXIiLA0KICAgICAgIlZhbHVlVHlwZSI6ICJTdHJpbmciDQogICAgfQ0KICBdLA0KICAiVGltZXNlcmllc1Byb3BlcnRpZXMiOiBbXQ0KfQ==",
      "payloadType": "InlineBase64"
    },
    {
      "path": "EntityTypeRelationships/95745415684647936.json",
      "payload": "ew0KICAiSWQiOiAiOTU3NDU0MTU2ODQ2NDc5MzYiLA0KICAiTmFtZXNwYWNlIjogInVzZXJ0eXBlcyIsDQogICJSZWxhdGlvbnNoaXBDYXJkaW5hbGl0eSI6ICJNYW55VG9PbmUiLA0KICAiTmFtZSI6ICJjb250YWlucyIsDQogICJGaXJzdEVudGl0eVR5cGVJZCI6ICIzMTg2NDE1Njk1Mjk4OCIsDQogICJTZWNvbmRFbnRpdHlUeXBlSWQiOiAiMTM5OTUwNTc4MzU4MzQ4Ig0KfQ==",
      "payloadType": "InlineBase64"
    },
    {
      "path": "ContextualizationOperations/30f6380c-9643-4284-a5bd-f100ac08866f.json",
      "payload": "ewogICJPcGVyYXRpb25JZCI6ICIzMGY2MzgwYy05NjQzLTQyODQtYTViZC1mMTAwYWMwODg2NmYiLAogICJEaXNwbGF5TmFtZSI6ICJFcXVpcG1lbnQyX2NvbnRhaW5zX0VxdWlwbWVudDFfQ29udGV4dHVhbGl6YXRpb24iLAogICJPcGVyYXRpb25UeXBlIjogIkNvbnRleHR1YWxpemF0aW9uIiwKICAiRW50aXR5VHlwZVJlbGF0aW9uc2hpcElkIjogIjk1NzQ1NDE1Njg0NjQ3OTM2IiwKICAiSm9pbkNvbHVtbnMiOiB7CiAgICAiRmlyc3RDb2x1bW4iOiB7CiAgICAgICJFbnRpdHlJZCI6ICIzMTg2NDE1Njk1Mjk4OCIsCiAgICAgICJBdHRyaWJ1dGVOYW1lIjogIlNlcmlhbE51bWJlciIKICAgIH0sCiAgICAiU2Vjb25kQ29sdW1uIjogewogICAgICAiRW50aXR5SWQiOiAiMTM5OTUwNTc4MzU4MzQ4IiwKICAgICAgIkF0dHJpYnV0ZU5hbWUiOiAiU2VyaWFsTnVtYmVyIgogICAgfQogIH0KfQ==",
      "payloadType": "InlineBase64"
    },
    {
      "path": "MappingOperations/ce9d0ef9-d8f6-4391-9e37-8bdb91b1fc16.json",
      "payload": "ewogICJPcGVyYXRpb25JZCI6ICJjZTlkMGVmOS1kOGY2LTQzOTEtOWUzNy04YmRiOTFiMWZjMTYiLAogICJEaXNwbGF5TmFtZSI6ICJFcXVpcG1lbnQxX2VudGl0eXR5cGUiLAogICJPcGVyYXRpb25UeXBlIjogIk1hcHBpbmciLAogICJFbnRpdHlUeXBlSWQiOiAiMTM5OTUwNTc4MzU4MzQ4IiwKICAiTWFwcGluZ09wZXJhdGlvblByb3BlcnRpZXMiOiB7CiAgICAiTWFwcGluZ1R5cGUiOiAiTm9uVGltZVNlcmllcyIsCiAgICAiTWFwcGVkUHJvcGVydGllcyI6IFsKICAgICAgewogICAgICAgICJTb3VyY2VDb2x1bW4iOiAiTmFtZSIsCiAgICAgICAgIkVudGl0eVR5cGVQcm9wZXJ0eU5hbWUiOiAiRGlzcGxheU5hbWUiCiAgICAgIH0KICAgIF0sCiAgICAiUHJvY2Vzc2luZ1R5cGUiOiAiSXRlcmF0aXZlIiwKICAgICJFbnRpdHlJbnN0YW5jZUlkU2NoZW1hIjogWwogICAgICAiSWQiCiAgICBdLAogICAgIlRpbWVzZXJpZXNFbnRpdHlMaW5rUHJvcGVydGllcyI6IG51bGwKICB9LAogICJTb3VyY2VUYWJsZVByb3BlcnRpZXMiOiB7CiAgICAiU291cmNlVHlwZSI6ICJMYWtlaG91c2VUYWJsZXMiLAogICAgIldvcmtzcGFjZUlkIjogImFlMzU5YmI4LTJmZmEtNGUzZi1hMGI1LTJmOGJjZWVmNmQyOSIsCiAgICAiSXRlbUlkIjogIjU5ZTViMDk4LWYzZDMtNDViNi1hY2RkLWQ3ZjRjOTZjNmNjZCIsCiAgICAiU291cmNlVGFibGVOYW1lIjogImVudGl0eXR5cGUiLAogICAgIlNvdXJjZVNjaGVtYSI6IG51bGwKICB9LAogICJGaWx0ZXJzIjogbnVsbAp9",
      "payloadType": "InlineBase64"
    }
  ]
}

DefinitionDetails

Propiedad Tipo Obligatorio Descripción
LakehouseId GUID cierto Identificador de elemento del lago principal que existe en el área de trabajo.

El lakehouse no se puede eliminar si DigitalTwinBuilder todavía existe.

Ejemplo de archivo de definición

{ 

  "LakehouseId": "2230144b-f486-8b6f-496c-3e8e2876aa0d"   

} 

PlatformDetails

El elemento de la plataforma es un archivo que contiene la información de metadatos del entorno.

Directorio EntityTypes: archivo EntityType

El nombre del archivo EntityType es el identificador de tipo de entidad.

Propiedad Tipo Obligatorio Descripción
Id BigInt cierto Identificador único del tipo de entidad. Este valor siempre es mayor que 10 000.
Namespace cuerda / cadena cierto Espacio de nombres del tipo de entidad. Valor permitido: usertypes.
BaseEntityTypeId BigInt cierto Identificador único del tipo de entidad base.
Name cuerda / cadena cierto Nombre del tipo de entidad.
Properties EntityTypeProperty[] cierto Lista de propiedades de tipo de entidad.
TimeseriesProperties EntityTypeProperty[] cierto Lista de propiedades de tipo de entidad.

EntityTypeProperty

Propiedad Tipo Obligatorio Descripción
Id largo cierto Identificador único de la propiedad de tipo de entidad.
Name cuerda / cadena cierto Nombre de la propiedad de tipo de entidad.
ValueType cuerda / cadena cierto Describe el tipo de valor de la propiedad de tipo de entidad. Valores permitidos: BigInt, Float, Double, String, Bool, DateTime.

Ejemplo de archivo EntityType

{
  "Id": "139950578358348",
  "Namespace": "usertypes",
  "BaseEntityTypeId": "2",
  "Name": "Equipment1",
  "Properties": [
    { "Id": "9171801103292694528", "Name": "DisplayName", "ValueType": "String" },
    { "Id": "9171801103292694529", "Name": "SerialNumber", "ValueType": "String" },
    { "Id": "9171801103292694530", "Name": "Manufacturer", "ValueType": "String" }
  ],
  "TimeseriesProperties": []
}

Directorio EntityTypeRelationships: archivo EntityTypeRelationship

El nombre del archivo EntityTypeRelationship es el identificador de relación de tipo de entidad.

Propiedad Tipo Obligatorio Descripción
Id BigInt cierto Identificador único de la relación de tipo de entidad. Su valor siempre es mayor que 10 000.
Namespace cuerda / cadena cierto Espacio de nombres de la relación de tipo de entidad. Valor permitido: usertypes.
RelationshipCardinality BigInt cierto Cardinalidad de relación de la relación de tipo de entidad. Valores permitidos: ManyToOne, OneToMany.
Name cuerda / cadena cierto Nombre de la relación de tipo de entidad.
FirstEntityTypeId BigInt cierto Identificador único del primer tipo de entidad que existe en el área de trabajo.
SecondEntityTypeId BigInt cierto Identificador único del segundo tipo de entidad que existe en el área de trabajo.

Ejemplo de archivo EntityTypeRelationship

{
  "Id": "95745415684647936",
  "Namespace": "usertypes",
  "RelationshipCardinality": "ManyToOne",
  "Name": "contains",
  "FirstEntityTypeId": "31864156952988",
  "SecondEntityTypeId": "139950578358348"
}

ContextualizationOperations directory: ContextualizationOperation file

El nombre del archivo ContextualizationOperation es el identificador de la operación de contextualización. Una contextualizaciónOperation se puede ejecutar mediante un artefacto DigitalTwinBuilderFlow .

Propiedad Tipo Obligatorio Descripción
OperationId GUID cierto Identificador único de la operación de contextualización.
DisplayName cuerda / cadena cierto Nombre para mostrar de la operación de contextualización.
OperationType cuerda / cadena cierto Tipo de operación. Valor permitido: Contextualization.
EntityTypeRelationshipId cuerda / cadena cierto Identificador único de la relación de tipo de entidad que existe en el área de trabajo.
JoinColumns JoinColumnsConfiguration cierto Detalles de combinación de tipos de entidad.

JoinColumnsConfiguration

Propiedad Tipo Obligatorio Descripción
FirstColumn JoinColumn cierto Detalles de combinación del primer tipo de entidad que existe en el área de trabajo.
SecondColumn JoinColumn cierto Detalles de combinación del segundo tipo de entidad que existe en el área de trabajo.

JoinColumn

Propiedad Tipo Obligatorio Descripción
EntityId BigInt cierto Identificador único del tipo de entidad.
AttributeName cuerda / cadena cierto Nombre de atributo del tipo de entidad.

Ejemplo de archivo de operación de contextualización

{
  "OperationId": "30f6380c-9643-4284-a5bd-f100ac08866f",
  "DisplayName": "Equipment2_contains_Equipment1_Contextualization",
  "OperationType": "Contextualization",
  "EntityTypeRelationshipId": "95745415684647936",
  "JoinColumns": {
    "FirstColumn": {
      "EntityId": "31864156952988",
      "AttributeName": "SerialNumber"
    },
    "SecondColumn": {
      "EntityId": "139950578358348",
      "AttributeName": "SerialNumber"
    }
  }
}

Directorio MappingOperations: Archivo MappingOperation

El nombre del archivo MappingOperation es el identificador de la operación de asignación. Una mappingOperation se puede ejecutar mediante un artefacto DigitalTwinBuilderFlow .

Propiedad Tipo Obligatorio Descripción
OperationId GUID cierto Identificador único de la operación de asignación.
DisplayName cuerda / cadena cierto Nombre para mostrar de la operación de asignación.
OperationType cuerda / cadena cierto Tipo de operación. Valor permitido: Mapping.
EntityTypeId cuerda / cadena cierto Identificador único del tipo de entidad que existe en el área de trabajo.
MappingOperationProperties MappingOperationProperties cierto Modelo que contiene las propiedades de una operación de asignación.
SourceTableProperties SourceTableProperties cierto Propiedades de la tabla de origen.
Filters FilterOperationNode cierto Filtrar objeto usado para filtrar los datos de origen de la tabla. Valores permitidos: FilterOperationNode puede ser NULL si no hay ningún filtro que se aplique o, de lo contrario, puede ser comparisonFilterOperationNode o LogicalFilterOperationNode.

MappingOperationProperties

Propiedad Tipo Obligatorio Descripción
MappingType cuerda / cadena cierto Valores permitidos: non-timeseries, timeseries.
MappedProperties SourceColumnDefinition[] cierto Asignaciones de columnas de la tabla de origen a la tabla de destino.
ProcessingType cuerda / cadena cierto Indica el tipo de procesamiento de la operación de asignación. Valores permitidos: iterative, incremental.
EntityInstanceIdSchema cadena[] cierto Se aplica a las propiedades no timeseries. Lista de cadenas que representan las columnas de origen que componen el identificador único de una entidad.
TimeseriesEntityLinkProperties TimeseriesEntityLinkProperties cierto Se aplica a las propiedades de serie temporal. Propiedad de columna de origen usada para vincular la entidad a los datos de serie temporal.

SourceColumnDefinition

Propiedad Tipo Obligatorio Descripción
SourceColumn cuerda / cadena cierto El nombre de la columna de origen.
EntityTypePropertyName cuerda / cadena cierto Nombre personalizado asignado por el cliente a la propiedad de tipo de entidad.

TimeseriesEntityLinkProperties

Propiedad Tipo Obligatorio Descripción
EntityProperty cuerda / cadena cierto Propiedad de entidad utilizada para vincular la entidad a los datos de timeseries.
TimeseriesProperty cuerda / cadena cierto Columna de datos de timeseries que coinciden con los valores de la propiedad de entidad.

SourceTableProperties

Propiedad Tipo Obligatorio Descripción
SourceType cuerda / cadena cierto Valor permitido: LakehouseTables.
WorkspaceId GUID cierto Área de trabajo donde se encuentra el lago del cliente.
ItemId GUID cierto ArtifactId del lakehouse del cliente.
SourceTableName cuerda / cadena cierto Nombre de la tabla de datos ingerida.
SourceSchema cuerda / cadena cierto Esquema de la tabla de datos ingerida.

ComparisonFilterOperationNode

Propiedad Tipo Obligatorio Descripción
type cuerda / cadena cierto Tipo de operación de filtro. Valor permitido: comparison.
SourceColumn cuerda / cadena cierto Nombre de columna de origen de los datos que se filtran.
ComparisonOperatorKind cuerda / cadena cierto Representa el tipo de operador de comparación del nodo. Valores permitidos: Ge, Gt, Le, Lt, Eq, NotEq, Contains, NotContains, IsNull, IsNotNull.
Value cuerda / cadena cierto Valor usado para filtrar.
ValueType cuerda / cadena cierto Tipo del valor usado para filtrar. Valores permitidos: BigInt, Float, Double, String, Bool, DateTime.

LogicalFilterOperationNode

Propiedad Tipo Obligatorio Descripción
type cuerda / cadena cierto Tipo de operación de filtro. Valor permitido: logical.
LogicalOperatorKind cuerda / cadena cierto Representa el tipo de operador lógico del nodo. Valores permitidos: And, Or.
FilterOperations FilterOperationNode[] cierto Filtrar las operaciones usadas por el operador lógico.

Ejemplo de archivo MappingOperations

{
  "OperationId": "ce9d0ef9-d8f6-4391-9e37-8bdb91b1fc16",
  "DisplayName": "Equipment1_entitytype",
  "OperationType": "Mapping",
  "EntityTypeId": "139950578358348",
  "MappingOperationProperties": {
    "MappingType": "NonTimeSeries",
    "MappedProperties": [
      {
        "SourceColumn": "Name",
        "EntityTypePropertyName": "DisplayName"
      }
    ],
    "ProcessingType": "Iterative",
    "EntityInstanceIdSchema": ["Id"],
    "TimeseriesEntityLinkProperties": null
  },
  "SourceTableProperties": {
    "SourceType": "LakehouseTables",
    "WorkspaceId": "ae359bb8-2ffa-4e3f-a0b5-2f8bceef6d29",
    "ItemId": "59e5b098-f3d3-45b6-acdd-d7f4c96c6ccd",
    "SourceTableName": "entitytype",
    "SourceSchema": null
  },
  "Filters": {
    "type": "comparison",
    "SourceColumn": "Name",
    "ComparisonOperatorKind": "Contains",
    "Value": "abc",
    "ValueType": "String"
  }
}