OrientDB - Funzioni
Questo capitolo spiega il riferimento completo dei diversi tipi di funzioni in OrientDB. La tabella seguente definisce l'elenco delle funzioni, classificate in base alla loro funzionalità.
Funzioni grafiche
Sr.No. | Nome e descrizione della funzione |
---|---|
1 | Out(): Ottiene i vertici in uscita adiacenti a partire dal record corrente come Vertice. Syntax - out ([<label-1>] [, <label-n>] *) |
2 | In(): Ottiene i vertici in entrata adiacenti a partire dal record corrente come Vertice. Syntax - in ([<label-1>] [, <label-n>] *) |
3 | Both(): Ottiene i vertici adiacenti in uscita e in entrata a partire dal record corrente come Vertice. Syntax - entrambi ([<label1>] [, <label-n>] *) |
4 | outE(): Ottiene i bordi in uscita adiacenti a partire dal record corrente come Vertice. Syntax - outE ([<label1>] [, <label-n>] *) |
5 | inE(): Ottiene i bordi in entrata adiacenti a partire dal record corrente come Vertice. Syntax - inE ([<label1>] [, <label-n>] *) |
6 | bothE(): Ottiene i bordi adiacenti in uscita e in entrata a partire dal record corrente come Vertice. Syntax - bothE ([<label1>] [, <label-n>] *) |
7 | outV(): Ottiene i vertici in uscita a partire dal record corrente come Edge. Syntax - outV () |
8 | inV(): Ottieni i vertici in arrivo dal record corrente come Edge. Syntax - inV () |
9 | traversedElement(): Restituisce gli elementi attraversati nei comandi Traverse. Syntax - traversedElement (<index> [, <items>]) |
10 | traversedVertex(): Restituisce i vertici attraversati nei comandi Traverse. Syntax - traversedVertex (<index> [, <items>]) |
11 | traversedEdge(): Restituisce i bordi attraversati nei comandi Traverse. Syntax - traversedEdge (<index> [, <items>]) |
12 | shortestPath(): Restituisce il percorso più breve tra due vertici. La direzione può essere OUT (impostazione predefinita), IN o BOTH. Synatx - shortestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]) |
13 | dijkstra(): Restituisce il percorso più economico tra due vertici utilizzando l'algoritmo Dijkstra. Syntax - dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>]) |
Prova alcune funzioni grafiche insieme alle seguenti query.
Esegui la seguente query per ottenere tutti i vertici in uscita da tutti i vertici del veicolo.
orientdb {db = demo}>SELECT out() from Vehicle
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
---+----------+---------
# | @class | out
---+----------+---------
0 | Vehicle | #11:2
1 | Vehicle | #13:1
2 | Vehicle | #13:4
---+----------+---------
Esegui la seguente query per ottenere sia i vertici in entrata che quelli in uscita dal vertice # 11: 3.
orientdb {db = demo}>SELECT both() FROM #11:3
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
---+----------+--------+-------
# | @class | out | in
---+----------+--------+-------
0 | Vehicle | #13:2 | #10:2
---+----------+-------+-------
Funzioni matematiche
Sr.No. | Nome e descrizione della funzione |
---|---|
1 | eval(): Valuta l'espressione tra virgolette (o doppie virgolette). Syntax - eval ('<espressione>') |
2 | min(): Restituisce il valore minimo. Se invocato con più di un parametro, restituisce il valore di argomento minimo tra tutti gli argomenti. Syntax - min (<field> [, <field-n>] *) |
3 | max(): Restituisce il valore massimo. Se richiamato con più di un parametro, restituisce il valore massimo tra tutti gli argomenti. Syntax - max (<field> [, <field-n>] *) |
4 | sum() Restituisce la somma di tutti i valori restituiti. Syntax - somma (<field>) |
5 | abs(): Restituisce il valore assoluto. Funziona con Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null. Syntax - abs (<field>) |
6 | avg(): Restituisce il valore medio. Syntax - avg (<field>) |
7 | count(): Conta il record che corrisponde alla condizione della query. Se * non viene utilizzato come campo, il record verrà conteggiato solo se il contenuto non è nullo. Syntax - count (<field>) |
8 | mode(): Restituisce il valore che si verifica con la frequenza maggiore. I valori nulli vengono ignorati nel calcolo. Syntax - modalità (<field>) |
9 | median(): Restituisce il valore medio o un valore interpolato che rappresenta il valore centrale dopo che i valori sono stati ordinati. I valori nulli vengono ignorati nel calcolo. Syntax - mediana (<field>) |
10 | percentile(): Restituisce l'ennesimo percentile. Null viene ignorato nel calcolo. Syntax - percentile (<field> [, <quantile-n>] *) |
11 | variance() Restituisce la varianza media: la media della differenza al quadrato dalla media.
Syntax - varianza (<field>) |
12 | stddev() Restituisce la deviazione standard: la misura di quanto sono distribuiti i valori. I valori nulli vengono ignorati nel calcolo. Syntax - stddev (<field>) |
Prova alcune funzioni matematiche utilizzando le seguenti query.
Eseguire la seguente query per ottenere la somma degli stipendi di tutti i dipendenti.
orientdb {db = demo}>SELECT SUM(salary) FROM Employee
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
---+----------+---------
# | @CLASS | sum
---+----------+---------
0 | null | 150000
---+----------+---------
Eseguire la seguente query per ottenere lo stipendio medio di tutti i dipendenti.
orientdb {db = demo}>SELECT avg(salary) FROM Employee
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
---+----------+---------
# | @CLASS | avg
---+----------+---------
0 | null | 25
---+----------+---------
Funzioni di raccolta
Sr.No. | Nome e descrizione della funzione |
---|---|
1 | set(): Aggiunge un valore a un set. Se il valore è una raccolta, viene unito al set, altrimenti viene aggiunto <valore>. Syntax - set (<field>) |
2 | map(): Aggiunge un valore a una mappa la prima volta che viene creata la mappa. Se <valore> è una mappa, viene unita alla mappa, altrimenti la coppia <key> e <value> viene aggiunta alla mappa come nuova voce. Syntax - mappa (<chiave>, <valore>) |
3 | ist(): Aggiunge un valore all'elenco la prima volta che l'elenco viene creato. Se <valore> è una raccolta, viene unito all'elenco, altrimenti <valore> viene aggiunto all'elenco. Syntax - elenco (<field>) |
4 | difference(): Funziona come aggregato o in linea. Se viene passato un solo argomento, aggrega, altrimenti viene eseguito e restituisce la DIFFERENZA tra le raccolte ricevute come parametri. Syntax - differenza (<field> [, <field-n>] *) |
5 | first(): Recupera solo il primo elemento dei campi multivalore (array, raccolte e mappe). Per i tipi non multivalore restituisce solo il valore. Syntax - primo (<field>) |
6 | intersect(): Funziona come aggregato o in linea. Se viene passato un solo argomento, aggrega, altrimenti esegue e restituisce l'INTERAZIONE delle raccolte ricevute come parametri. Syntax - intersecare (<field> [, <field-n>] *) |
7 | distinct(): Recupera solo voci di dati univoche a seconda del campo specificato come argomento. La principale differenza rispetto allo standard SQL DISTINCT è che con OrientDB è possibile specificare una funzione con parentesi e un solo campo. Syntax - distinto (<field>) |
8 | expand(): Questa funzione ha due significati:
Syntax - espandi (<field>) |
9 | unionall(): Funziona come aggregato o in linea. Se viene passato un solo argomento, aggrega, altrimenti esegue e restituisce un'UNIONE di tutte le raccolte ricevute come parametri. Funziona anche senza valori di raccolta. Syntax - unionall (<field> [, <field-n>] *) |
10 | flatten(): Estrae la raccolta nel campo e la utilizza come risultato. È deprecato, usa invece expand (). Syntax - appiattisci (<field>) |
11 | last(): Recupera solo l'ultimo elemento dei campi multivalore (array, raccolte e mappe). Per i tipi non multivalore restituisce solo il valore. Syntax - ultimo (<field>) |
12 | symmetricDifference(): Funziona come aggregato o in linea. Se viene passato un solo argomento, aggrega, altrimenti esegue e restituisce la DIFFERENZA SIMMETRICA tra le raccolte ricevute come parametri. Syntax - symmetricDifference (<field> [, <field-n>] *) |
Prova alcune funzioni di raccolta utilizzando le seguenti query.
Esegui la seguente query per ottenere una serie di insegnanti, classe 9.
orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
---+----------+--------+--------------------------
# | @CLASS | id | TeacherID
---+----------+--------+--------------------------
0 | null | 9 | 1201, 1202, 1205, 1208
---+----------+-------+---------------------------
Funzioni varie
Sr.No. | Nome e descrizione della funzione |
---|---|
1 | date(): Restituisce una data formattando una stringa. <date-as-string> è la data in formato stringa e <format> è il formato della data che segue queste regole. Syntax - data (<date-as-string> [<format>] [, <timezone>]) |
2 | sysdate(): Restituisce la data e l'ora correnti. Syntax - sysdate ([<format>] [, <timezone>]) |
3 | format(): Formatta un valore utilizzando le convenzioni String.format (). Syntax - formato (<format> [, <arg1>] (, <arg-n>] *. Md) |
4 | distance(): Restituisce la distanza tra due punti nel globo utilizzando l'algoritmo di Haversine. Le coordinate devono essere gradi. Syntax - distanza (<x-field>, <y-field>, <x-value>, <y-value>) |
5 | ifnull(): Restituisce il campo / valore passato (o il parametro facoltativo return_value_if_not_null). Se il campo / valore non è nullo, restituisce return_value_if_null. Syntax - ifnull (<field | value>, <return_value_if_null> [, <return_value_if_not_null>] (, <field & .md # 124; value>] *) |
6 | coalesce(): Restituisce il primo campo / valore non nullo. Se nessun campo / valore è diverso da null, restituisce null. Syntax - coalesce (<campo | valore> [, <campo-n | valore-n>] *) |
7 | uuid(): Genera un UUID come valore a 128 bit utilizzando la variante Leach-Salz. Syntax - uuid () |
8 | if(): Valuta una condizione (primi parametri) e restituisce il secondo parametro se la condizione è vera, il terzo altrimenti. Syntax - if (<espressione>, <result-if-true>, <result-if-false>) |
Prova alcune funzioni Misc utilizzando le seguenti query.
Esegui la seguente query per imparare come eseguire if expression.
orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish",
"My name is not satish") FROM Employee
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
----+--------+-----------------------
# |@CLASS | IF
----+--------+-----------------------
0 |null |My name is satish
1 |null |My name is not satish
2 |null |My name is not satish
3 |null |My name is not satish
4 |null |My name is not satish
----+--------+------------------------
Eseguire la seguente query per ottenere la data di sistema.
orientdb {db = demo}> SELECT SYSDATE() FROM Employee
Se la query precedente viene eseguita correttamente, otterrai il seguente output.
----+--------+-----------------------
# |@CLASS | SYSDATE
----+--------+-----------------------
0 |null |2016-02-10 12:05:06
1 |null |2016-02-10 12:05:06
2 |null |2016-02-10 12:05:06
3 |null |2016-02-10 12:05:06
4 |null |2016-02-10 12:05:06
----+--------+------------------------
Utilizzando a fondo questa funzione è possibile manipolare facilmente i dati di OrientDB.