Registering a Virtual Attribute


A virtual attribute is calculated based on one or more parameters, including model attributes, attributes provided by data sources, and constants.


Virtual attributes can be flexibly applied to scenarios where existing attributes cannot meet the requirements. For example, when you need to query the installed capacity of distributed sites in a region, you can configure a virtual attribute Installed Capacity of Distributed Sites with the expression denoting the attribute value is the installed capacity if the site is distributed, otherwise it is 0. Based on this virtual attribute, Common Data Service can query the installed capacity of distributed sites in the region by aggregating the site data to the region data.


Only by registering virtual attributes in Common Data Service can these attributes be queried through Common Data Service APIs. You can register virtual attributes in batches by uploading a template file.

Note

  • A virtual attribute is not saved in the model, nor does it require storage. It is calculated in real time by Common Data Service during query. Therefore, virtual attributes can only be used in lightweight calculation scenarios.
  • Common Data Service supports querying virtual attributes, as well as the attributes on the models mapped with registered object types.

Prerequisites


You need to be assigned the required asset permission and operation permission, and a menu group containing the Virtual Attributes menu. If not assigned, contact the application administrator.

Procedure


  1. Select Business Object Elements > Virtual Attributes from the left navigation pane.

  2. Select the Public Attributes or Private Attributes tab according to the effective scope of the target attribute, and click Import. For more information about the difference between public and private attributes, see Public/Private Attributes.

  3. Click Download in the pop-up window and choose to download an Excel and a JSON template file.

  4. Enter the following information in the template file.


    Field Name Identifier Required/Optional Description
    Attribute attribute Required The identifier of the attribute, which needs to be unique under the same object type within the same (public/private) effective scope.
    Attribute Chinese/English/Japanese/Spanish Name zh_CN/en_US/ja_JP/es_ES English and Chinese names are required The attribute name in different languages.
    Object Type Identifier mdmType Required The identifier of the object type that the attribute belongs to. You can go to Business Object Types to view the object type identifier.
    Object Type Name mdmTypeName Optional The name of the object type that the attribute belongs to. You can go to Business Object Types to view the object type name.
    MDM Aggregation Methods mdmAggMethods Optional Specify how the data is aggregated when multiple objects are queried. Use these aggregation methods: sum, avg, max, min.
    Expression expression Required The format of the expression differs depending on how the attribute is generated. See Virtual Attribute Expression Examples.
    foreignKey foreignKey Optional If the attribute data is returned based on a dimension table, fill in the identifier of the model attribute used to query the dimension table.
    Is I18n Supported extract18n Optional Fill in Y if internationalization is supported in the query results and fill in N if not.
    Enumerate enumerate Optional If the attribute is enumerated, describe the supported enumeration values.
    Unit units Optional Fill in the unit of the attribute data by referring to EnOS Built-in Units.
    Data Type dataType Required The data type of the attribute. Use these data types: Int, Double, String.
    Is Sortable sortable Optional Fill in Y if the query results can be sorted in ascending/descending order and fill in N if not.
    Filters filters Optional Specify how the data in the query results is filtered. Use these filters: in, ==, !=, >, >=, <, <=. Separate multiple filters by commas, for example, ==,in.
    Application Dependency applicationDependency Optional The application that the attribute depends on. Separate multiple applications by commas.
    Application Version Dependency applicationVersionDependency Optional The application version that the attribute depends on. Separate multiple versions by commas.

    Note

    The “Org ID”, “Org Name”, “Related Source API”, “Updated On”, and “Updated By” fields in the template file can be left blank and will be filled by the system after upload.

  5. Click Upload in the pop-up window. Select the filled template file and click OK. When you register a private attribute, if the identifier in the file is the same as a registered public attribute identifier, the system will return the private attribute when the duplicate identifier is passed in to query the attribute.

Virtual Attribute Expression Examples


A virtual attribute can be generated in the following methods.

  • Configure an expression based on model attributes.
  • Associate the attribute with a dimension table.


Both of the above methods require configuring expressions. The table below lists the typical examples of attribute expressions.


Attribute Generation Method Expression Syntax Attribute Example Expression Example Expression Description
Configuring an expression based on model attributes Use this format to reference a model attribute: Attribute[‘ModelAttributeIdentifier’] Safe Operation Days #{(T(System).currentTimeMillis() - new java.text.SimpleDateFormat(‘yyyy-MM-dd’).parse(Attribute[‘safeOpStartDay’]).getTime()) / (24 * 60 * 60 * 1000)} Subtract the safe operation start time from the current system time and convert the result into days
Associating with a dimension table Use this format to associate a dimension table: #{Dimension[‘DataSourceAPIKey@@DimensionTableIdentifier@@AttributeField’]} Province #{Dimension[‘SolarAPI@@siteAttributes@@province_name_i18n’]} Use the province_name_i18n field in the siteAttributes dimension table provided by the Solar API as the Province attribute


Results


Once registered, the attribute appears in the attribute list. You can view its details and perform the following actions on it.

  • Edit the virtual attribute: Click Export, modify the template file as required, and import the modified file. The attributes with the same identifiers will overwrite the existing attributes, and the attributes with different identifiers will be added.

  • Delete the virtual attribute: Click Delete Delete of the target attribute. Deleted attributes cannot be restored.

    Note

    If the business object type that the attribute belongs to has been deleted, you need to contact the system administrator to delete this attribute.