Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di query che utilizzano CSV
In questo esempio, la query restituisce il numero di righe in un determinato file CSV:
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row RETURN count(row)
È possibile eseguire l'esempio di query utilizzando l'operazione execute-open-cypher-query in eseguendo il codice seguente: AWS CLI
aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN count(row)" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
Una query può essere flessibile in quanto utilizza le righe lette da un file CSV. Ad esempio, la seguente query crea un nodo con un campo impostato sui dati di un file CSV:
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
avvertimento
Non è considerata una buona pratica utilizzare una clausola di grandi dimensioni che produce risultati come MATCH (n) prima di una clausola CALL. Ciò comporterebbe una query di lunga durata a causa dell'incrocio tra le soluzioni in arrivo dalle clausole precedenti e le righe lette da neptune.read. Si consiglia di avviare la query con CALL neptune.read.
Intestazioni di colonna di proprietà
È possibile specificare una colonna (:) per una proprietà utilizzando la sintassi seguente. Per i nomi dei tipi non viene fatta distinzione tra maiuscole e minuscole. Se all'interno del nome di una proprietà compaiono i due punti, è necessario superarli precedendoli con una barra rovesciata:. \:
propertyname:type
Nota
Spazio, virgola, ritorno a capo e caratteri di nuova riga non sono consentiti nelle intestazioni delle colonne, quindi i nomi delle proprietà non possono includere questi caratteri.
-
È possibile specificare una colonna per un tipo di matrice aggiungendo
[]al tipo:propertyname:type[] -
Le proprietà edge possono avere solo un singolo valore e verrà generato un errore se viene specificato un tipo di array o un secondo valore. L'esempio seguente mostra l'intestazione di colonna per una proprietà denominata age di tipo Int:
age:Int
Ogni riga del file dovrà avere un valore intero in quella posizione o essere lasciata vuota. Sono consentite matrici di stringhe, ma le stringhe di una matrice non possono includere il carattere punto e virgola (;) a meno che non venga superato utilizzando una barra rovesciata (). \;
Tipi di colonne CSV supportati
BOOL (o BOOLEAN) - Valori consentiti: true, false. Indica un campo Booleano. Qualsiasi valore diverso da true verrà considerato falso.
FLOAT - Intervallo: virgola mobile IEEE 754 a 32 bit che include Infinity, INF, -Infinity, -INF e NaN (non un numero).
DOUBLE - Intervallo: virgola mobile IEEE 754 a 64 bit, inclusi Infinity, INF, -Infinity, -INF e NaN (non un numero).
STRINGA -
Le virgolette sono facoltative. Le virgole, i caratteri di nuova riga e di ritorno a capo vengono automaticamente sostituiti se sono inclusi in una stringa racchiusa tra virgolette doppie («). Esempio: «Hello, World».
Per includere le virgolette in una stringa tra virgolette, puoi evitare le virgolette usandone due di seguito: Esempio: «Hello «" World" "».
Sono consentite matrici di stringhe, ma le stringhe di un array non possono includere il carattere punto e virgola (;) a meno che non venga superato utilizzando una barra rovesciata (\;).
Se desideri racchiudere le stringhe in una matrice con le virgolette, devi racchiudere l'intera matrice con una serie di virgolette. Esempio: «String one; String 2; String 3".
DATE, DATETIME - I valori datetime possono essere forniti nel formato XSD o in uno dei seguenti formati:
yyyy- MM-dd
aaaa- MM-ddTHH:mm
aaaa- MM-ddTHH:mm:ss
aaaa- MM-ddTHH:mm:ssZ
aaaa- MM-ddTHH:mm:ss.SSSZ
aaaa- MM-ddTHH:mm:ss [+|-] hmm
aaaa- [+|-] hmm MM-ddTHH:mm:ss.SSS
NUMERO INTERO CON SEGNO -
Byte: da -128 a 127
Breve: da -32768 a 32767
Int: da -2^31 a 2^31-1
Lungo: da -2^63 a 2^63-1
Neptune-specific tipi di colonne:
Il tipo di colonna Any è supportato nelle colonne utente. Un Any type è un tipo di «zucchero sintattico» per tutti gli altri tipi che supportiamo. È estremamente utile se una colonna utente contiene più tipi. Il payload di un valore di tipo Any è un elenco di stringhe json come segue:
{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}, che ha un campo valore e un campo tipo in ogni singola stringa json. L'intestazione di colonna di un tipo Any è PropertyName:Any. Il valore di cardinalità di una colonna Any è impostato, il che significa che la colonna può accettare più valori.Neptune supporta i seguenti tipi in un tipo Any: Bool (o Boolean), Byte, Short, Int, Long,,,,, Float, Double UnsignedByte, Date UnsignedShort UnsignedInt, UnsignedLong DateTime, String e Geometry.
Il tipo vettoriale non è supportato in Any type.
Nested Qualsiasi tipo non è supportato. Ad esempio,
{"value": {"value": "10", "type": "Int"}, "type": "Any"}.
Un tipo di colonna Geometry è supportato nelle colonne utente. Il payload di queste colonne deve contenere solo primitive Geometry di tipo Point, fornite come stringhe in Well-known formato testo (WKT). Ad esempio, POINT (30 10) sarebbe un valore Geometry valido.
Esempio di output CSV
Dato il seguente file CSV:
<s3 path> colA:byte,colB:short,colC:int,colD:long,colE:float,colF:double,colG:string -128,-32768,-2147483648,-9223372036854775808,1.23456,1.23457,first 127,32767,2147483647,9223372036854775807,nan,nan,second 0,0,0,0,-inf,-inf,third 0,0,0,0,inf,inf,fourth
Questo esempio mostra l'output restituito da neptune.read utilizzando la seguente query:
aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN row" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
{ "results": [{ "row": { "colD": -9223372036854775808, "colC": -2147483648, "colE": 1.23456, "colB": -32768, "colF": 1.2345699999999999, "colG": "first", "colA": -128 } }, { "row": { "colD": 9223372036854775807, "colC": 2147483647, "colE": "NaN", "colB": 32767, "colF": "NaN", "colG": "second", "colA": 127 } }, { "row": { "colD": 0, "colC": 0, "colE": "-INF", "colB": 0, "colF": "-INF", "colG": "third", "colA": 0 } }, { "row": { "colD": 0, "colC": 0, "colE": "INF", "colB": 0, "colF": "INF", "colG": "fourth", "colA": 0 } }] }
Attualmente, non è possibile impostare un'etichetta di nodo o bordo su un campo di dati proveniente da un file CSV. Si consiglia di suddividere le interrogazioni in più interrogazioni, una per ciascuna. label/type
CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'airport' CREATE (n:airport) CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'country' CREATE (n:country)