Projection - Operation Add Count Attribute
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 |