Overview
AddCountAttribute is a projection operation that adds a user-specified count attribute to the final resolved entity. It is recommended but not required to be used with an ArrayExpansion operation to provide the ArrayExpansion a count attribute that represents the total number of expanded elements. AddCountAttribute can also be used by itself.
The created count attribute will have the trait is.linkedEntity.array.count. This trait indicates that the attribute holds a count.
Note: you can access the API reference for this operation on this link.
Examples
The examples below refer to the Person entity as defined here.
{
"entityName": "Person",
"hasAttributes": [
{
"name": "name",
"dataType": "string"
},
{
"name": "age",
"dataType": "integer"
},
{
"name": "address",
"dataType": "string"
},
{
"name": "phoneNumber",
"dataType": "string"
},
{
"name": "email",
"dataType": "string"
}
]
}
Using the AddCountAttribute operation on an entity attribute
If we have an entity attribute, we can use AddCountAttribute to add a count attribute.
{
"name": "PersonInfo",
"entity": {
"source": "Person",
"operations": [
{
"$type": "addCountAttribute",
"countAttribute": {
"name": "someCount",
"dataType": "integer"
}
}
]
}
}
The resulting resolved PersonInfo entity typed attribute is:
| PersonInfo |
|---|
| name |
| age |
| address |
| phoneNumber |
| someCount |
Using the AddCountAttribute operation when extending an entity
If we have an entity that extends another entity, we can use AddCountAttribute to add a Count attribute.
Given an entity, NewPerson, that extends from the Person entity:
{
"entityName": "NewPerson",
"extendsEntity": {
"source": "Person",
"operations": [
{
"$type": "addCountAttribute",
"countAttribute": {
"name": "someCount",
"dataType": "integer"
}
}
]
}
}
The resulting resolved NewPerson entity is:
| NewPerson |
|---|
| name |
| age |
| address |
| phoneNumber |
| someCount |
Using the AddCountAttribute operation combined with an ArrayExpansion
We can use an AddCountAttribute operation after an ArrayExpansion operation to add a Count attribute alongside the expanded attributes.
{
"name": "PersonInfo",
"entity": {
"operations": [
{
"$type": "addCountAttribute",
"countAttribute": {
"name": "personCount",
"dataType": "integer",
"description": "Person array elements count"
}
}
],
"source": {
"operations": [
{
"$type": "renameAttributes",
"renameFormat": "{m}_{o}"
}
],
"source": {
"operations": [
{
"$type": "arrayExpansion",
"startOrdinal": 1,
"endOrdinal": 2
}
],
"source": "Person"
}
}
}
}
The resulting resolved PersonInfo entity typed attribute is:
| PersonInfo |
|---|
| name_1 |
| age_1 |
| address_1 |
| phoneNumber_1 |
| email_1 |
| name_2 |
| age_2 |
| address_2 |
| phoneNumber_2 |
| email_2 |
| personCount |