Mit Feldberechnungen kann der Besitzer des gehosteten Feature-Layers oder der Administrator der Organisation die Werte jeder Zeile für ein Feld in der Attributtabelle eines Layers ändern.
Beispiel: Bei einem gehosteten Feature-Layer, in dem Informationen zu Immobilienverkäufen, einschließlich Verkaufspreis und Steuersatz für den Immobilienstandort, gespeichert werden, können Sie im Layer ein Feld hinzufügen, in dem die geschätzten Grundsteuern gespeichert werden. Um das Feld estimated_property_taxes zu belegen, definieren Sie einen Berechnungsausdruck für das Feld, der die Werte im Feld sale_price mit den Werten im Feld tax_rate multipliziert.
In einem gehosteten Feature-Layer haben Sie beim Schreiben von Berechnungsausdrücken für Felder in Layern zwei Möglichkeiten:
- ArcGIS Arcade: Arcade eignet sich besonders gut für Berechnungen, die die Funktionalität von SQL übersteigen, da Arcade Zugriff auf Attributwerte und Feature-Geometrie ermöglicht, sodass Sie Ausdrücke erstellen können, die räumliche Operation enthalten. Zudem können Sie, wenn bei der Berechnung einer bestimmten Zeile ein Fehler auftritt, die Berechnung anhalten, das Problem beheben und die Berechnung anschließend erneut starten.
Hinweis:
Sie müssen die Bearbeitung für den Layer aktivieren, um Arcade für Berechnungen zu verwenden. Für den Layer darf die Synchronisierung jedoch nicht aktiviert sein. Weitere Informationen zum Ändern der Bearbeitungs- und Synchronisierungseinstellungen finden Sie unter Verwalten gehosteter Feature-Layer.
- SQL: Mit SQL erzielen Sie die schnellste Performance bei Berechnungen, die mit standardisierten SQL-Ausdrücken (SQL-92) für nichträumliche Attribute durchgeführt werden können. Im Gegensatz zu Arcade-Ausdrücken können SQL-Ausdrücke für gehostete Feature-Layer mit aktivierter Synchronisierung und Layer, die zum Verfolgen von Erstellern oder Bearbeitern von Features konfiguriert wurden, ausgeführt werden.
Im nächsten Abschnitt wird erläutert, wie Werte für ein Feld über die Detailseite eines gehosteten Feature-Layers berechnet werden. Die folgenden Abschnitte enthalten Beispiele für häufige Berechnungen.
Berechnen von Werten für ein Feld
Führen Sie die folgenden Schritte aus, um Zeichenfolge-, numerische oder Datumswerte in einem Feld zu berechnen.
Hinweis:
Feldberechnungen können nicht rückgängig gemacht werden. Aus diesem Grund sollten Sie ein Feld hinzufügen, in diesem Feld die Werte berechnen und nachprüfen, ob die Berechnung wie gewünscht ausgeführt wird. Wenn dies der Fall ist, können Sie das ursprüngliche Feld so wie das hinzugefügte Feld berechnen. Wenn Sie festgestellt haben, dass die Werte im ursprünglichen Feld korrekt sind, können Sie das hinzugefügte Feld wieder löschen.- Klicken Sie auf der Elementseite des Layers auf die Registerkarte Daten, um die Tabelle anzuzeigen.
Tipp:
Sie können diese Schritte auch über die Tabelle in Map Viewer (zuvor war dies eine separate Beta-Installation, die nun jedoch standardmäßig Bestandteil des Portals ist) oder Map Viewer Classic ausführen.
- Klicken Sie auf die Spalte, die die Werte enthält, die Sie berechnen möchten.
- Öffnen Sie das Dialogfeld Feld berechnen mit einer der folgenden Methoden:
- Klicken Sie auf Berechnen.
- Klicken Sie auf Detaillierte Ansicht anzeigen > Berechnen.
- Wählen Sie die Sprache für Ihre Berechnung aus (Arcade oder SQL).
Wenn für den gehosteten Feature-Layer die Synchronisierung aktiviert wurde oder wenn der gehostete Feature-Layer so konfiguriert wurde, dass nachverfolgt wird, wer Features erstellt und aktualisiert, wird diese Seite nicht angezeigt. Stattdessen wird das SQL-Fenster angezeigt.
- Erstellen Sie einen Berechnungsausdruck.
- Verwenden Sie bei SQL Basisoperatoren, eine Feldliste und Funktionen. Klicken Sie auf die Schaltfläche Überprüfen, um sich zu vergewissern, dass im Ausdruck keine Fehler enthalten sind. Wenn der Ausdruck ungültig ist, klicken Sie auf die Schaltfläche Entfernen, und erstellen Sie einen neuen Ausdruck. Wenn der Ausdruck vollständig und gültig ist, klicken Sie auf Berechnen.
- Verwenden Sie bei Arcade globale Variablen, Funktionen und Konstanten. Klicken Sie auf OK, um den Ausdruck auszuführen. Wenn beim Ausführen des Ausdrucks ein Fehler auftritt, können Sie auf Fehler überprüfen klicken, um das Ausdrucksfenster zum Beheben des Fehlers zu öffnen. Andernfalls klicken Sie auf Abbrechen. Wenn Sie den Ausdruck korrigieren und erneut ausführen, beginnt die Berechnung von Neuem.
Die Dauer der Berechnung hängt von der Komplexität des Ausdrucks und von der Anzahl der Features in Ihrem Layer ab.
Beispielberechnungen
Die folgenden Abschnitte enthalten die Beispielsyntax oder Methoden für häufige Berechnungen in ArcGIS Enterprise.
Durchführen einer mathematischen Operation mit numerischen Werten in zwei vorhandenen Feldern, um ein drittes Feld auszufüllen
Eine der häufigsten Berechnungen, die Sie durchführen, ist das Ableiten eines neuen numerischen Wertes basierend auf vorhandenen Werten in Ihrem Feature-Layer. Sie könnten z. B. den Gesamtumsatz eines Jahres für alle Filialen vom Gesamtumsatz eines anderen Jahres subtrahieren, um die Änderung des Gewinns von einem Jahr zum nächsten zu ermitteln. Sie könnten aber auch die Gesamtzahl von Bewohnern unter 18 Jahren durch die Gesamtbevölkerung dividieren, um den Anteil der Bevölkerung unter 18 Jahren zu bestimmen.
Arcade-Beispiele
Berechnen Sie die Differenz der Werte in den beiden numerischen Feldern "Sales2016" und "Sales2017", um ein numerisches Feld auszufüllen.
$feature.Sales2016 - $feature.Sales2017
SQL-Beispiele
Verwenden Sie die Berechnung für ein numerisches Feld ("SalesDifference"), um die Differenz zwischen den Werten in den numerischen Feldern "Sales2016" und "Sales2017" zu ermitteln.
Sales2016 - Sales2017
Füllen Sie ein numerisches Feld mit einer Dezimalzahl aus, die das Ergebnis der Berechnung ist, welcher Anteil der Bevölkerung unter 18 Jahre alt ist.
PopUnder18/TotalPop
Verketten von Zeichenfolgenwerten aus vorhandenen Feldern in einem neuen Zeichenfolgenfeld
Bei einer anderen Berechnung, bei der ein neues Feld ausgefüllt wird, werden Werte aus vorhandenen Zeichenfolgenfeldern kombiniert. Sie könnten z. B. über zwei Zeichenfolgenfelder für die Lage von Zimmern in einem Hotel verfügen ("Floor" und "Room") und möchten sie in einem Zeichenfolgenfeld kombinieren, das beide Angaben enthält.
In den folgenden Beispielen werden die Werte für die Felder "Floor" und "Room" in einem Feld kombiniert.
Beispiel für Arcade
Concatenate($feature.room,$feature.floor)
SQL-Beispiel
CONCAT(Floor,Room)
Entfernen von nachgestellten oder vorangestellten Leerzeichen aus Zeichenfolgenfeldern
Wenn bei der Bearbeitung Werte in ein Feld eingegeben oder eingefügt werden, kann der Text versehentlich nachgestellte oder vorangestellte Leerzeichen enthalten. Sie können diese Fehler korrigieren, indem Sie die Werte kürzen.
Bei diesen Beispielen wissen Sie, dass der Editor ein nachgestelltes Leerzeichen hinzugefügt hat, als er "New Hampshire" in das Feld für die Namen der Bundesstaaten eingefügt hat. Daher kürzen Sie das Leerzeichen am Ende der Zeichenfolge.
Beispiel für Arcade
Trim('New Hampshire ')
SQL-Beispiel
Trim(TRAILING ' ' FROM 'New Hampshire ')
Ausfüllen eines Feldes mit anderen Werten abhängig von den Werten in einem anderen Feld
Manchmal ist der Wert, der einem Feld hinzugefügt werden soll, je nach Feature unterschiedlich und hängt von einem anderen Wert für das gleiche Feature ab. Sie können z. B. zu einem Feature-Layer ein Zeichenfolgenfeld für den Text hinzufügen, der einen numerischen oder abgekürzten Zeichenfolgenwert in einem anderen Feld beschreibt. Da die SQL-Berechnungsoberfläche dies nicht unterstützt, verwenden Sie Arcade für diese Arten von Berechnungen.
Beispiel für Arcade
Im folgenden Beispiel werden verschiedene Zeichenfolgenwerte ("None", "Low", "High" oder "Other") basierend auf einer Zahl in einem anderen Feld im Layer ("HowMany").
When(
$feature.HowMany == 0, "None",
$feature.HowMany == 1, "Low",
$feature.HowMany == 2, "High",
"Other")
Verwenden eines Filters in Map Viewer Classic
Wenn Sie keinen Arcade-Ausdruck verwenden möchten, können Sie einen Filter auf den Layer in der Karte anwenden, Werte für die gefilterten Features berechnen, den Filter entfernen, einen anderen Filter basierend auf einem anderen Wert anwenden und Werte für diese Felder berechnen. Dies wird in den folgenden Schritten beschrieben.
Wenn Sie z. B. über ein numerisches Feld verfügen, in dem Filialtypen mithilfe von Codes (3, 2 und 1) erfasst werden, und ein Zeichenfolgenfeld benötigen, in dem die Bedeutung der Codes aufgeführt ist ("chain", "franchise" und "independent"), können Sie ein Zeichenfolgenfeld zum Layer hinzufügen, den Layer zur Karte hinzufügen, nach den einzelnen Codewerten filtern und den Wert für das Zeichenfolgenfeld berechnen.
- Fügen Sie ein Zeichenfolgenfeld zum gehosteten Feature-Layer hinzu. Legen Sie die Länge entsprechend der längsten Zeichenfolge fest, die Sie speichern möchten.
Im Beispiel mit den Filialtypen lautet der neue Feldname TypeFull.
- Klicken Sie auf der Registerkarte Übersicht der Detailseite des Layers auf In Map Viewer Classic öffnen.
- Definieren Sie einen Filter für den Layer, sodass nur Features mit dem gleichen Typ in der Karte vorhanden sind.
Wenden Sie im Filialbeispiel einen Filter an, der nur die Features zurückgibt, bei denen das Feld StoreCode den Wert 3 hat.
- Öffnen Sie die Attributtabelle für den Layer.
- Klicken Sie auf den Namen des Feldes, das Sie in Schritt 1 hinzugefügt haben, und klicken Sie auf Berechnen.
Klicken Sie in diesem Beispiel auf den Namen TypeFull und dann auf Berechnen.
- Geben Sie die Zeichenfolge ein, die für diese Features in dieses Feld eingefügt werden soll. Schließen Sie die Zeichenfolge in einfache Anführungszeichen ein.
Geben Sie 'chain' ein, um das Feld TypeFull für alle Features auszufüllen, bei denen StoreCode den Wert 3 hat.
- Klicken Sie auf Berechnen.
- Entfernen Sie den Filter, den Sie in Schritt 3 definiert haben. Öffnen Sie das Fenster Filter für den Layer erneut, und klicken Sie auf Filter entfernen.
- Wiederholen Sie die Schritte 3 bis 8 für die übrigen Werte, die Sie berechnen müssen.
Definieren Sie im Filialbeispiel einen Filter für StoreCode 2, und berechnen Sie TypeFull in 'franchise'. Entfernen Sie den Filter, definieren Sie einen neuen Filter für StoreCode 1, und berechnen Sie TypeFull in 'independent'.
- Wenn Sie die Werte für das neue Feld berechnet haben, schließen Sie die Karte ohne sie zu speichern.
Ersetzen eines Wertes durch einen anderen
Wenn Sie einen vorhandenen Wert durch einen anderen ersetzen müssen, weil sich z. B. die Darstellung eines bestimmten Wertes geändert hat oder Sie einen Schreibfehler korrigieren müssen, können Sie nach allen vorhandenen Werten für ein Feld suchen und sie durch einen neuen Wert ersetzen. Da die SQL-Berechnungsoberfläche dies nicht unterstützt, verwenden Sie Arcade für diese Arten von Berechnungen.
Vorsicht:
Berechnungen werden sofort im Feature-Layer gespeichert. Wenn Sie einen vorhandenen Wert fälschlicherweise überschreiben, müssen Sie den Wert erneut berechnen, um ihn wieder zurück zu ändern.
Beispiel für Arcade
In diesem Beispiel wird mit der Funktion Ersetzen die britische Schreibweise (colour) in die amerikanische Schreibweise geändert.Replace($feature.color, 'colour', 'color')
Verwenden eines Filters in Map Viewer Classic
Ähnlich wie beim Ausfüllen eines Feldes basierend auf den Werten in einem anderen Feld können Sie in der Karte einen Filter auf den Layer anwenden, der nur die Features zurückgibt, die den zu ersetzenden Feldwert enthalten. Legen Sie als Nächstes die gefilterten Felder auf den neuen Feldwert fest, um die Feldwerte zu aktualisieren.
Wenn Sie z. B. falsch geschriebene Werte korrigieren oder ein Wort in eine Abkürzung konvertieren müssen, filtern Sie nach der Literalzeichenfolge, die Sie ändern müssen, und legen Sie das Feld auf den neuen Wert fest.
- Fügen Sie den gehosteten Feature-Layer, den Sie aktualisieren müssen, zu Map Viewer Classic hinzu.
Sie müssen der Layer-Besitzer oder ein Portal-Administrator sein.
- Definieren Sie einen Filter für den Layer, sodass nur Features, die den Wert enthalten, den Sie ersetzen möchten, auf der Karte angezeigt werden.
Wenn Sie z. B wissen, dass eine Reihe von Features Crt-Werte für das Feld StreetType enthält, wenden Sie einen Filter an, der nur die Features zurückgibt, bei denen das Feld StreetType den Wert Crt hat.
- Öffnen Sie die Attributtabelle für den Layer.
- Klicken Sie auf den Feldnamen und dann auf Berechnen.
Klicken Sie in diesem Beispiel auf das Feld StreetType und dann auf Berechnen.
- Geben Sie die Zeichenfolge ein, die für diese Features in dieses Feld eingefügt werden soll. Schließen Sie die Zeichenfolge in einfache Anführungszeichen ein.
Geben Sie 'Ct' ein, um die gefilterten StreetType-Felder mit der korrigierten Abkürzung für Court auszufüllen.
- Klicken Sie auf Berechnen, um die Änderungen auf die gefilterten Felder anzuwenden.
- Schließen Sie die Karte, ohne sie zu speichern.
Bestimmen der Dichte eines numerischen Attributs pro Feature-Fläche
Zur Berechnung der Dichte in einer Fläche verwenden Sie einen Arcade-Ausdruck, da Sie über die Berechnungsoberfläche keine SQL-Berechnungen für räumliche Felder ausführen können.
Beispiel für Arcade
In diesem Beispiel wird die Populationsdichte pro Feature ermittelt, indem der Wert für die Gesamtbevölkerung ("TotalPop") durch die Fläche des Polygon-Features in Quadratmeilen geteilt wird:
$feature.TotalPop / Area ($feature,
'square-miles')
Ableiten der Koordinate für ein Punkt-Feature
Sie können mit einem Arcade-Ausdruck die Längengrad- oder Breitengradkoordinate für die räumlichen Felder in einem gehosteten Feature-Layer zurückgeben, der nur Punkte enthält.
Diese Art von Berechnung wird für das räumliche Feld über die Berechnungsoberfläche nicht unterstützt.
Beispiel für Arcade
In diesem Beispiel wird mit der Funktion Geometrie ein Feld für die X-Koordinate für jeden Punkt in einem Punkt-Layer berechnet.
Geometry($feature).x
Hinzufügen von Zeit zu oder Subtrahieren von Zeit von einem Datum
Um ein aktualisiertes Datumsfeld zu erhalten, kann man Zeit zu einem Datumsfeld oder Datumsliteralwert addieren oder davon subtrahieren. Beispielsweise lässt sich ein künftiges Inspektions- oder Prüfdatum durch Hinzufügen von Zeit zu einem Datum berechnen.
Beispiel für Arcade
In diesem Beispiel werden mit der Funktion DateAdd sieben Tage zu einem Datum addiert, um das Datum der Folgewoche zu erhalten.var startDate = Date($feature.dateField);
var oneWeekLater = DateAdd(startDate, 7, 'days');
return oneWeekLater;
SQL-Beispiele
Verwenden Sie eine INTERVAL-Abfrage, um Zeit zu einem Datumsfeld zu addieren oder davon zu subtrahieren, wie in den folgenden Berechnungen veranschaulicht. Im ersten Beispiel werden einem Datum drei Tage hinzugefügt, was in einem neuen Datum resultiert. Im zweiten Beispiel werden drei Tage von einem Zeitstempelfeld subtrahiert.<DateField> + INTERVAL '3'DAY = updated date
<DateField> - INTERVAL '3 00:00:60' DAY TO SECOND = updated date
INTERVAL kann mit den folgenden Datums- und Zeitwerten verwendet werden:
- DAY
- HOUR
- MINUTE
- SECOND
- DAY TO HOUR
- DAY TO MINUTE
- DAY TO SECOND
- HOUR TO MINUTE
- HOUR TO SECOND
- MINUTE TO SECOND
Berechnen der Differenz zwischen zwei Datumsangaben
Manchmal ist es erforderlich, den Zeitraum zwischen zwei Datumsangaben zu berechnen. Wenn Ihnen z. B. die Installationsdaten und Inspektionsdaten für Stromzähler vorliegen, können Sie die Differenz zwischen den beiden Daten ermitteln, um zu überprüfen, ob der Zeitabstand zwischen Installation und Inspektion innerhalb der zulässigen Vorgaben liegt. Das Ergebnis dieser Berechnung ist kein Datumsfeld, sondern ein Zahlenfeld.
Beispiel für Arcade
Im folgenden Beispiel wird mit der Funktion DateDiff das Alter einer Person berechnet, indem die Differenz zwischen einem aktuellen Datum (endDate) und dem Geburtsdatum der Person (startDate) ermittelt wird:var startDate = Date($feature.startDateField);
var endDate = Date($feature.endDateField);
var age = DateDiff(endDate, startDate, 'years');
return age;
SQL-Beispiele
Zum Berechnen des Zeitabstands zwischen zwei Daten können Sie beliebige Kombinationen von Datumsfeldern und Datumsliteralen verwenden. Bei der ersten nachstehenden Berechnung wird ein Datumsfeld verwendet, bei der zweiten ein Datumsliteral. Bei dritten und vierten Berechnung wird sowohl ein Datumsfeld als auch ein Datumsliteral verwendet.<DateField1> - <DateField2> = number of days in between
DATE'<SQL-supported Date Literal>' - DATE'< SQL-supported Date Literal>' = number of days in between
<DateField1> - DATE'<SQL-supported Date Literal>' = number of days in between
DATE'<SQL-supported Date Literal>' - <DateField2> = number of days in between
Das Ergebnis ist ein Zahlenfeld, das durch Subtraktion eines Datumsfelds oder Datumsliterals von einem anderen Datumsfeld oder Datumsliteral berechnet wird. Das Ergebnis kann sowohl eine ganze Zahl (von Tagen) sein als auch einen Bruch beinhalten – so würde z. B. 1,5 für eineinhalb Tage bzw. 36 Stunden stehen.
Im vorstehend erwähnten Beispiel für Stromzählerinspektionen kann zur Berechnung des Zeitraums zwischen einem Installationsdatum vom 1.6.2015 und 1.10.2015 jeder der folgenden Berechnungswege verwendet werden. Bei der ersten Berechnung werden Datumsfelder verwendet, beim zweiten Datumsliterale und im dritten und vierten jeweils ein Datumsfeld und ein Datumsliteral.<InspectionDateField> - <InstallationDateField> = 122 (days)
DATE'10/1/2015' - DATE'6/1/2015' = 122 (days)
<InspectionDateField> - DATE'6/1/2015' = 122 (days)
DATE'10/1/2015' - <InstallationDateField> = 122 (days)
Überlegungen beim Berechnen von Feldwerten
- Wenn Sie über einen Filter für Ihren Layer in Map Viewer verfügen, werden nur die Werte der Datensätze berechnet, die den Filterkriterien entsprechen.
- Beim Schreiben von SQL-Ausdrücken funktioniert Feld berechnen nur mit Feldnamen, nicht mit Feld-Aliasnamen. In der Liste Felder werden alle Feldnamen angezeigt, die für Berechnungen verfügbar sind. Diese Liste kann nach den Feldtypen String, Numerisch und Datum gefiltert werden.
- Wenn Sie mit der Maus auf einen Feldnamen in der Liste Felder zeigen, werden Feld-Aliasname und -typ angezeigt.
- Wenn Sie auf einen Feldnamen in der Liste Felder klicken, wird das Feld zu dem Ausdruck hinzugefügt.
- In Kopien von gehosteten Feature-Layern, in gehosteten Feature-Layern, denen Kachel-Layer zugeordnet sind, in gehosteten Feature-Layern vom Typ "spatiotemporal" und in Sichten, die aus gehosteten Feature-Layern vom Typ "spatiotemporal" erstellt wurden, können Sie Feldwerte nicht berechnen.
- Beim Berechnen von Feldwerten werden nur standardisierte SQL-Abfragen unterstützt.
- Die numerische Funktion MOD können Sie für Double-Felder nicht verwenden. Konvertieren Sie das Feld in eine Ganzzahl, wie im Beispiel dargestellt.
- Für gehostete Feature-Layer mit aktivierter Synchronisierung oder für gehostete Feature-Layer, die so konfiguriert wurden, dass nachverfolgt wird, wer Features erstellt oder zuletzt aktualisiert hat, können keine Arcade-Ausdrücke geschrieben werden.
Referenz für standardisierte SQL-Funktionen (SQL-92)
Verwenden Sie beim Schreiben eines SQL-Ausdrucks, mit dem Feldwerte berechnet werden, standardisierte SQL-Funktionen. Dieser Abschnitt enthält eine Liste der Operatoren und SQL-Funktionen, die Sie für SQL-Berechnungen in ArcGIS Enterprise verwenden können.
Nachdem Sie den SQL-Ausdruck erstellt haben, klicken Sie auf die Schaltfläche Berechnen. Falls Fehler vorliegen, wird im unteren Bereich des Dialogfeldes eine Fehlermeldung angezeigt. Korrigieren Sie die Ausdruckssyntax, und wiederholen Sie die Berechnung.
Operatoren
Im Dialogfeld Feld berechnen können Sie einfache SQL-Ausdrücke mit Operatoren wie Addieren, Subtrahieren, Multiplizieren und Dividieren erstellen. Nachfolgend finden Sie einige Beispiele und Tipps für die Verwendung dieser Operatoren:
- Um alle Werte in einem numerischen Feld namens SAMPLE mit 100,0 zu multiplizieren, geben Sie SAMPLE * 100.0 für den Ausdruck ein.
- Für komplexere Gleichungen können Sie Klammern verwenden, um die Reihenfolge der Berechnungen festzulegen, z. B. SAMPLE * (BASELINE - 40).
- Mathematische Operatoren funktionieren nicht mit Zeichenfolgenfeldern. Sie müssen die Zeichenfolgenfunktionen verwenden, die im Abschnitt Zeichenfolgenfunktionen beschrieben werden.
- Wenn Sie ein Feld vom Typ "Double" in ein Feld vom Typ "Integer" umrechnen, wird dem Ausdruck automatisch die Funktion CAST hinzugefügt. Wenn Sie beispielsweise ein Double-Feld namens POP in ein Integer-Feld namens SAMPLE umrechnen, wird CAST(SAMPLE AS FLOAT) als Ausdruck angezeigt. Entfernen Sie die Funktion CAST nicht. Weitere Informationen zur Funktion CAST finden Sie nachstehend unter Numerische Funktionen.
- Um ein Apostroph in die Zeichenfolge einzufügen, verwenden Sie zwei einzelne Anführungsstriche für das Apostroph, z. B. 'Nightingale''s'. Verwenden Sie kein doppeltes Anführungszeichen.
Funktionen
Neben einfachen Ausdrücken mit Operatoren können auch Funktionen zum Erstellen von SQL-Ausdrücken verwendet werden. Funktionen arbeiten mit Feldnamen, Literalen und anderen Funktionen. Beispiel: Sie müssen ein Double-Feld in TOTALPOP dividiert durch POP18 umrechnen. Wenn POP18 eines Features gleich Null ist, führt die Berechnung zu dem Fehler "Division durch Null". Dies kann wie nachfolgend beschrieben mit der Funktion NULLIF verhindert werden. Der Ausdruck muss TOTALPOP / NULLIF(POP18, 0) lauten.
Funktionen verwenden Argumente. In den folgenden Tabellen kann jedes Argument wie folgt lauten:
- Ein Feldname, solange der Feldtyp mit dem Argumenttyp (Zeichenfolge, Zahl oder Datum) übereinstimmt.
- Ein Literal wie 'Sailboat' (eine in einfache Anführungszeichen gesetzte Zeichenfolge), die Zahl 5 oder ein Datum im Format MM/DD/YYYY hh:mm:ss, das von einfachen Anführungszeichen umgeben ist.
- Eine Funktion, die einen Wert des geeigneten Typs (Zeichenfolge, Zahl oder Datum) zurückgibt. Beispielsweise gibt FLOOR(POWER(SAMP_ERR, 0.5)) den größten Ganzzahlwert zurück, der kleiner oder gleich der Quadratwurzel von SAMP_ERR ist.
Die Beispiele in der Beschreibungsspalte der folgenden Tabellen verwenden zu Veranschaulichungszwecken literale Argumente. Sie können bei diesen Argumenten einen Feldnamen oder eine andere Funktion ersetzen.
Datumsfunktionen
An Datumsfeldern lassen sich einige Berechnungen vornehmen. Beispielsweise können Sie Zeit zu einem Datumsfeld addieren bzw. davon subtrahieren oder auch die Differenz zwischen zwei Datumsfeldern berechnen.
Bevor Sie mit Datumsfeldern arbeiten, sollten Sie diese wichtigen Hinweise lesen.
Zum Berechnen von Datumsfeldern können Sie beliebige Kombinationen von Datums- und Zahlenfeldern sowie Literalen verwenden. Bei der Anwendung von Datumsliteralen müssen Sie SQL-unterstützte Datumsformate verwenden.
Die folgenden Datumsfunktionen sind verfügbar:
Funktion | Beschreibung |
---|---|
CURRENT_DATE | Gibt das aktuelle Datum in UTC-Zeit zurück. Es hängt vom verwendeten Client ab, was im Client angezeigt wird. In der Portal-Website werden Datumsangaben in der Zeitzone Ihres Browsers dargestellt. Mit dem folgenden Beispiel werden alle Werte im Feld "inspection_date" zurückgegeben, die ein Datum vor dem heutigen Datum aufweisen: inspection_date > CURRENT_DATE |
CURRENT_TIMESTAMP | Gibt das aktuelle UTC-Datum und die UTC-Uhrzeit (Stunden, Minuten, Sekunden) zurück. Es hängt vom verwendeten Client ab, was im Client angezeigt wird. In der Portal-Website werden Uhrzeiten in der lokalen Uhrzeit Ihres Browsers dargestellt. In diesem Beispiel werden alle Zeitstempelwerte vor dem heutigen Datum und der aktuellen Uhrzeit (in UTC) für das Feld appointments zurückgegeben: appointments < CURRENT_TIMESTAMP |
EXTRACT(<unit> FROM '<date>') | Gibt einen Teil (<unit>) des angegebenen <date> zurück. Mögliche Werte für <unit> sind unter anderem Jahr, Monat, Tag, Stunde und Minute. Hier einige Beispiele:
|
Numerische Funktionen
Funktion | Beschreibung |
---|---|
ABS(<number>) | Gibt den absoluten (positiven) Wert der angegebenen Zahl zurück. |
CEILING(<number>) | Gibt die kleinste Ganzzahl zurück, die größer als oder gleich der angegebenen Zahl ist. Beispiel
|
COS(<number>) | Gibt den trigonometrischen Cosinus von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel in Radianten handelt. |
CAST(<Zahl>AS FLOAT | INT) | Konvertiert eine Zahl in einen anderen Typ. FLOAT konvertiert die angegebene Zahl in einen Double-Wert und INT konvertiert sie in eine Ganzzahl. |
FLOOR(<number>) | Gibt die größte Ganzzahl zurück, die kleiner als oder gleich der angegebenen Zahl ist. Beispiel
|
LN(<number>,<decimal_place>) | Der natürliche Logarithmus der angegebenen Zahl. |
LOG(<number>,<decimal_place>) | Der Logarithmus zur Basis 10 der angegebenen Zahl. |
MOD(<number>, <n>) | Gibt den Rest zurück, nachdem der Dividend (<Zahl>) durch den Divisor <n> dividiert wurde. Sowohl <n> als auch <Zahl> muss vom Typ "Integer" sein. Hier einige Beispiele:
|
NULLIF(<number>, <value>) | Gibt null zurück, wenn die angegebene Zahl gleich dem angegebenen Wert ist. NULLIF wird im Allgemeinen verwendet, um Fehler vom Typ "Division durch Null" zu vermeiden, indem <value> auf 0 gesetzt wird. Wenn bei einer Berechnung eines der Argumente ein null-Feldwert ist, ist das Ergebnis der Berechnung null. Beispiel: Sie müssen ein Double-Feld in TOTALPOP dividiert durch POP18 umrechnen. Wenn ein POP18-Wert eines Features gleich Null ist, führt die Berechnung zu dem Fehler "Division durch Null". Sie können einen Filter erstellen, um Datensätze auszublenden, bei denen POP18 Null ist, und anschließend die Berechnung durchführen. Eine einfachere Option ist die Verwendung von NULLIF.
|
POWER(<number> , <y>) | Gibt den Wert der angegebenen Zahl potenziert mit der angegebenen Potenz (<y>) zurück. |
ROUND(<number> , <length>) | Rundet die angegebene Zahl auf die angegebene Länge. Wenn Sie als <length> eine positive Zahl verwenden, wird die Zahl auf die in <length> angegebene Dezimalstelle gerundet. Wenn <length> eine negative Zahl ist, wird die als <number> angegebene Zahl links vom Dezimaltrennzeichen gerundet. Beispiele
|
SIN(<number>) | Gibt den trigonometrischen Sinus von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel im Bogenmaß handelt. |
TAN(<number>) | Gibt den Tangens von <number> zurück, von dem angenommen wird, dass es sich um einen Winkel im Bogenmaß handelt. |
TRUNC(<number>,<decimal_place>) | Schneidet <number> an der angegebenen <decimal_place> ab. Wenn <decimal_place> positiv ist, wird bis zur angegebenen Dezimalstelle gekürzt. Wenn <decimal_place> eine negative Zahl ist, wird <number> links vom Dezimaltrennzeichen gekürzt. Beispiele
|
Zeichenfolgenfunktion
Funktion | Beschreibung |
---|---|
CHAR_LENGTH(<string>) | Gibt die Anzahl der Zeichen in der angegebenen Zeichenfolge zurück. Das Ergebnis ist ein Ganzzahlwert. Beispiel
|
CONCAT(<string1>, <string2>) | Verbindet zwei Zeichenfolgewerte. Es können nur zwei Zeichenfolgen bereitgestellt werden. Um mehr als zwei Zeichenfolgen zu verbinden, müssen aufeinanderfolgende CONCAT-Funktionen verschachtelt werden. Beispiele
NULL-Werte werden in eine leere Zeichenfolge konvertiert. |
POSITION(<substring> in <string>) | Gibt die Position des ersten Vorkommnisses der angegebenen Teilzeichenfolge in der angegebenen Zeichenfolge zurück. Wenn die angegebene Teilzeichenfolge nicht gefunden wird, ist das Ergebnis 0. Beispiele
|
SUBSTRING(<string>, <start>, <length>) | Gibt einen Teil eines Zeichenfolgewertes zurück. <start> ist ein Ganzzahlindex, der angibt, wo die zurückgegebenen Zeichen beginnen, und <length> ist die Anzahl der Zeichen, die zurückgegeben werden sollen. Beispiele
|
TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>) | Gibt eine Zeichenfolge zurück, bei der alle vor- und nachgestellten Leerstellen in der angegebenen Zeichenfolge entfernt wurden. Beispiel
Beachten Sie, dass das zweite Argument aus zwei einfachen Anführungszeichen besteht, zwischen denen sich eine Leerstelle befindet. |
UPPER(<string>) | Gibt eine Zeichenfolge zurück, bei der alle Zeichen in Großbuchstaben konvertiert wurden. Beispiel
|
LOWER(<string>) | Gibt eine Zeichenfolge zurück, bei der alle Zeichen in Kleinbuchstaben konvertiert wurden. Beispiel
|