U bent hier:
computeExpression-transformatie
Met de computeExpression-transformatie kunt u afgeleide velden aan een gegevensset toevoegen. De waarden voor afgeleide velden worden niet geëxtraheerd uit de invoergegevensbron. In plaats daarvan genereert CRM Analytics de waarden met een SAQL-expressie, die gebaseerd kan zijn op een of meer velden vanuit de invoergegevens of andere afgeleide velden. U kunt bijvoorbeeld een expressie gebruiken om een waarde aan een veld toe te wijzen, tekstvelden aaneen te voegen of mathematische berekeningen uit te voeren op numerieke velden.
De computeExpression- en computeRelative-transformatie lijken op elkaar, maar kennen één belangrijk verschil. De computeExpression-transformatie voert berekeningen uit op basis van andere velden binnen dezelfde rij. De computeRelative-transformatie voert berekeningen uit op basis van de vorige en volgende waarden van hetzelfde veld in andere rijen.
Denk aan de volgende richtlijnen bij het maken van een computeExpression-transformatie.
- U kunt alleen de volgende SAQL-operatoren en -functies in de expressie opnemen:
- Meervoudige-waardenvelden worden niet ondersteund. De gegevensstroom mislukt als u opnemen een veld met meervoudige waarden opneemt in de parameter SAQL-expressie.
- De waarden van het afgeleide veld moeten overeenkomen met het opgegeven type. Stel het type van het afgeleide veld bijvoorbeeld in op Tekst als de waarden tekenreeksen zijn.
- CRM Analytics berekent de waarden van de afgeleide velden in de volgorde waarin ze in de JSON worden genoemd. Dus, als u een afgeleid veld maakt op basis van andere afgeleide velden in dezelfde computeExpression-transformatie, moeten de ingevoerde afgeleide velden als eerste worden genoemd. Derived_A moet bijvoorbeeld vóór Derived_B worden genoemd in de volgende JSON-snippet van computeExpression-transformatie:
"CreateDerivedFields": { "action": "computeExpression", "parameters": { "source": "sourceNode", "mergeWithSource": false, "computedFields": [ { "name": "Derived_A", "type": "Text", "label": "Derived Field A", "saqlExpression": "\"hello \""}, { "name": "Derived_B", "type": "Text", "label": "Derived Field B Dependent on Field A", "saqlExpression": "Derived_A + \"world\""} ] } } - U kunt kiezen of de resulterende gegevensset alleen de afgeleide velden bevat of de invoer en de afgeleide velden.
- Als de expressie een overloopwaarde voor een numeriek veld produceert, stelt de transformatie de veldwaarde in op de standaardwaarde die is opgegeven voor de kolom. Als er geen standaardwaarde is ingesteld en afhandeling van null is uitgeschakeld, wordt de veldwaarde ingesteld op 0. Als er geen standaardwaarde is ingesteld en afhandeling van null is ingeschakeld, wordt deze ingesteld op null. (Zie de documentatie over afhandelen van meeteenheden met null.) En als de expressie meerdere kolommen definieert en als de expressie een overloopwaarde produceert, worden ook alle gegenereerde velden ingesteld op de standaardwaarde. Maak voor het isoleren van het probleem in het veld met de overloopwaarde een afzonderlijke computeExpression-transformatie voor elke gedefinieerde kolom.
Laten we eens naar een voorbeeld kijken. U wilt een gegevensset maken op basis van opportunitygegevens van Salesforce. U maakt een gegevensstroom die de ID en de bedragvelden extraheert uit het object Opportunity. Bovendien wilt u ook de volgende afgeleide velden aan de gegevensset toevoegen: ModifiedId, SalesTax, FinalPrice en ValueCategory. Voor de afgeleide velden wilt u:
- "SFDC" toevoegen aan elke opportunity-ID om een nieuwe gewijzigde ID te verkrijgen.
- De omzetbelasting berekenen op basis van een tarief van 8%.
- De verkoopprijs berekenen door het bedrag en de omzetbelasting op te tellen.
- Opportunities categoriseren in buckets van lage, normale en hoge waarde op basis van de berekende verkoopprijs.
U maakt de volgende definitie voor de gegevensstroom.
{
"salesData": {
"action": "sfdcDigest",
"parameters": {
"object": "Opportunity",
"fields": [
{"name": "Amount"},
{"name": "Id"}]}},
"Derived_Fields": {
"action": "computeExpression",
"parameters": {
"source": "salesData",
"mergeWithSource": true,
"computedFields": [
{
"name": "ModifiedId",
"type": "Text",
"saqlExpression": "\"SFDC\" + Id"},
{
"name": "SalesTax",
"type": "Numeric",
"precision": 18,
"defaultValue": "0",
"scale": 5,
"saqlExpression": "Amount * 0.08"},
{
"name": "FinalPrice",
"type": "Numeric",
"precision": 18,
"defaultValue": "0",
"scale": 5,
"saqlExpression": "Amount + SalesTax"},
{
"name": "ValueCategory",
"type": "Text",
"saqlExpression": "case when FinalPrice < 1000 then \"Low\" when FinalPrice >= 1000 and FinalPrice < 2000 then \"Medium\" else \"High\" end"}
]
}
},
"Register_CategorizedSales": {
"action": "sfdcRegister",
"parameters": {
"alias": "Categorized_Sales",
"name": "Categorized_Sales",
"source": "Derived_Fields" }
}
}- computeExpression-parameters
Wanneer u een computeExpression-transformatie definieert, stelt u het actiekenmerk in opcomputeExpression. U geeft ook de parameters op voor de invoerbron en de expressie die gebruikt is om de waarden te genereren.
