Maak berekende velden die automatisch waarden berekenen op basis van andere gegevens


Formule aangepaste velden worden gebruikt voor grafiek- en dashboardberekeningen binnen Blue. Ze definiëren aggregatiefuncties (SOM, GEMIDDELDE, TELLEN, enz.) die werken op aangepaste veldgegevens om berekende statistieken in grafieken weer te geven. Formules worden niet berekend op het niveau van individuele taken, maar aggregeren gegevens over meerdere records voor visualisatiedoeleinden.

Basisvoorbeeld

Maak een formuleveld voor grafiekberekeningen:

mutation CreateFormulaField {
  createCustomField(input: {
    name: "Budget Total"
    type: FORMULA
    projectId: "proj_123"
    formula: {
      logic: {
        text: "SUM(Budget)"
        html: "<span>SUM(Budget)</span>"
      }
      display: {
        type: NUMBER
        precision: 2
        function: SUM
      }
    }
  }) {
    id
    name
    type
    formula
  }
}

Geavanceerd Voorbeeld

Maak een valutafomule met complexe berekeningen:

mutation CreateCurrencyFormula {
  createCustomField(input: {
    name: "Profit Margin"
    type: FORMULA
    projectId: "proj_123"
    formula: {
      logic: {
        text: "SUM(Revenue) - SUM(Costs)"
        html: "<span>SUM(Revenue) - SUM(Costs)</span>"
      }
      display: {
        type: CURRENCY
        currency: {
          code: "USD"
          name: "US Dollar"
        }
        precision: 2
      }
    }
    description: "Automatically calculates profit by subtracting costs from revenue"
  }) {
    id
    name
    type
    formula
  }
}

Invoergegevens

CreateCustomFieldInput

Parameter Type Vereist Beschrijving
name String! ✅ Ja Weergavenaam van het formuleveld
type CustomFieldType! ✅ Ja Moet zijn FORMULA
projectId String! ✅ Ja Het project-ID waar dit veld zal worden aangemaakt
formula JSON Nee Formule-definitie voor grafiekberekeningen
description String Nee Hulptekst die aan gebruikers wordt getoond

Formule Structuur

{
  "logic": {
    "text": "Display text for the formula",
    "html": "HTML formatted display text"
  },
  "display": {
    "type": "NUMBER|CURRENCY|PERCENTAGE",
    "currency": {
      "code": "USD",
      "name": "US Dollar"  
    },
    "precision": 2,
    "function": "SUM|AVERAGE|AVERAGEA|COUNT|COUNTA|MAX|MIN"
  }
}

Ondersteunde Functies

Grafiek Aggregatiefuncties

Formulevelden ondersteunen de volgende aggregatiefuncties voor grafiekberekeningen:

Functie Beschrijving ChartFunction Enum
SUM Som van alle waarden SUM
AVERAGE Gemiddelde van numerieke waarden AVERAGE
AVERAGEA Gemiddelde zonder nullen en null-waarden AVERAGEA
COUNT Aantal waarden COUNT
COUNTA Aantal zonder nullen en null-waarden COUNTA
MAX Maximale waarde MAX
MIN Minimale waarde MIN

Opmerking: Deze functies worden gebruikt in het display.function veld en werken op geaggregeerde gegevens voor grafiekvisualisaties. Complexe wiskundige uitdrukkingen of berekeningen op veldniveau worden niet ondersteund.

Weergavetypes

Nummerweergave

{
  "display": {
    "type": "NUMBER",
    "precision": 2
  }
}

Resultaat: 1250.75

Valutaweergave

{
  "display": {
    "type": "CURRENCY",
    "currency": {
      "code": "USD",
      "name": "US Dollar"
    },
    "precision": 2
  }
}

Resultaat: $1,250.75

Percentageweergave

{
  "display": {
    "type": "PERCENTAGE",
    "precision": 1
  }
}

Resultaat: 87.5%

Bewerken van Formulevelden

Werk bestaande formulevelden bij:

mutation EditFormulaField {
  editCustomField(input: {
    customFieldId: "field_456"
    formula: {
      logic: {
        text: "AVERAGE(Score)"
        html: "<span>AVERAGE(Score)</span>"
      }
      display: {
        type: PERCENTAGE
        precision: 1
      }
    }
  }) {
    id
    formula
  }
}

Formuleverwerking

Grafiekberekeningscontext

Formulevelden worden verwerkt in de context van grafieksegmenten en dashboards:

  • Berekeningen vinden plaats wanneer grafieken worden weergegeven of bijgewerkt
  • Resultaten worden opgeslagen in ChartSegment.formulaResult als decimale waarden
  • Verwerking wordt afgehandeld via een speciale BullMQ-queue genaamd 'formula'
  • Updates worden gepubliceerd naar dashboard-abonnees voor realtime-updates

Weergaveformattering

De getFormulaDisplayValue functie formatteert de berekende resultaten op basis van het weergavetyp:

  • NUMMER: Wordt weergegeven als een gewoon nummer met optionele precisie
  • PERCENTAGE: Voegt % achtervoegsel toe met optionele precisie
  • VALUTA: Formatteert met de opgegeven valutacode

Opslag van Formule Resultaten

Resultaten worden opgeslagen in het formulaResult veld:

{
  "number": 1250.75,
  "formulaResult": {
    "number": 1250.75,
    "display": {
      "type": "CURRENCY",
      "currency": {
        "code": "USD",
        "name": "US Dollar"
      },
      "precision": 2
    }
  }
}

Antwoordvelden

TodoCustomField Antwoord

Veld Type Beschrijving
id String! Unieke identificatie voor de veldwaarde
customField CustomField! De definitie van het formuleveld
number Float Berekende numerieke resultaat
formulaResult JSON Volledig resultaat met weergaveformattering
todo Todo! Het record waartoe deze waarde behoort
createdAt DateTime! Wanneer de waarde is aangemaakt
updatedAt DateTime! Wanneer de waarde voor het laatst is berekend

Gegevenscontext

Grafiekgegevensbron

Formulevelden werken binnen de context van de grafiekgegevensbron:

  • Formules aggregeren aangepaste veldwaarden over taken in een project
  • De aggregatiefunctie die is opgegeven in display.function bepaalt de berekening
  • Resultaten worden berekend met behulp van SQL-aggregatiefuncties (gemiddelde, som, telling, enz.)
  • Berekeningen worden op database-niveau uitgevoerd voor efficiëntie

Veelvoorkomende Formule Voorbeelden

Totaal Budget (Grafiekweergave)

{
  "logic": {
    "text": "Total Budget",
    "html": "<span>Total Budget</span>"
  },
  "display": {
    "type": "CURRENCY",
    "currency": { "code": "USD", "name": "US Dollar" },
    "precision": 2,
    "function": "SUM"
  }
}

Gemiddelde Score (Grafiekweergave)

{
  "logic": {
    "text": "Average Quality Score",
    "html": "<span>Average Quality Score</span>"
  },
  "display": {
    "type": "NUMBER",
    "precision": 1,
    "function": "AVERAGE"
  }
}

Taak Telling (Grafiekweergave)

{
  "logic": {
    "text": "Total Tasks",
    "html": "<span>Total Tasks</span>"
  },
  "display": {
    "type": "NUMBER",
    "precision": 0,
    "function": "COUNT"
  }
}

Vereiste Machtigingen

Bewerkingen van aangepaste velden volgen de standaard rolgebaseerde machtigingen:

Actie Vereiste Rol
Create formula field Project member with appropriate role
Update formula field Project member with appropriate role
View formula results Project member with view permissions
Delete formula field Project member with appropriate role

Opmerking: De specifieke vereiste rollen zijn afhankelijk van de aangepaste rolconfiguratie van uw project. Er zijn geen speciale machtigingsconstanten zoals CUSTOM_FIELDS_CREATE.

Foutafhandeling

Validatiefout

{
  "errors": [{
    "message": "Validation error message",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

Aangepast Veld Niet Gevonden

{
  "errors": [{
    "message": "Custom field was not found.",
    "extensions": {
      "code": "CUSTOM_FIELD_NOT_FOUND"
    }
  }]
}

Beste Praktijken

Formule Ontwerp

  • Gebruik duidelijke, beschrijvende namen voor formulevelden
  • Voeg beschrijvingen toe die de berekeningslogica uitleggen
  • Test formules met voorbeeldgegevens voordat u ze implementeert
  • Houd formules eenvoudig en leesbaar

Prestatieoptimalisatie

  • Vermijd diep geneste formule-afhankelijkheden
  • Gebruik specifieke veldverwijzingen in plaats van jokertekens
  • Overweeg cachingstrategieën voor complexe berekeningen
  • Houd de prestaties van formules in grote projecten in de gaten

Gegevenskwaliteit

  • Valideer brondgegevens voordat u deze in formules gebruikt
  • Behandel lege of null-waarden op de juiste manier
  • Gebruik de juiste precisie voor weergavetypes
  • Overweeg randgevallen in berekeningen

Veelvoorkomende Toepassingen

  1. Financiële Tracking

    • Budgetberekeningen
    • Winst/verliesoverzichten
    • Kostenanalyse
    • Omzetprognoses
  2. Projectmanagement

    • Voltooiingspercentages
    • Hulpbronnenbenutting
    • Tijdlijnberekeningen
    • Prestatiestatistieken
  3. Kwaliteitscontrole

    • Gemiddelde scores
    • Slagings-/faalpercentages
    • Kwaliteitsstatistieken
    • Nalevingsbewaking
  4. Business Intelligence

    • KPI-berekeningen
    • Trendanalyse
    • Vergelijkende statistieken
    • Dashboardwaarden

Beperkingen

  • Formules zijn alleen voor aggregaties van grafieken/dashboards, niet voor berekeningen op taakniveau
  • Beperkt tot de zeven ondersteunde aggregatiefuncties (SOM, GEMIDDELDE, enz.)
  • Geen complexe wiskundige uitdrukkingen of veld-tot-veld berekeningen
  • Kan geen meerdere velden in een enkele formule verwijzen
  • Resultaten zijn alleen zichtbaar in grafieken en dashboards
  • Het logic veld is alleen voor weergavetekst, niet voor daadwerkelijke berekeningslogica

Gerelateerde Bronnen

AI Assistent

Antwoorden worden gegenereerd met behulp van AI en kunnen fouten bevatten.

Hoe kan ik u helpen?

Vraag me alles over Blue of deze documentatie.

Voer in om te verzenden • Shift+Enter voor nieuwe regel • ⌘I om te openen