View a markdown version of this page

Contoh kueri menggunakan CSV - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh kueri menggunakan CSV

Dalam contoh ini, kueri mengembalikan jumlah baris dalam file CSV yang diberikan:

CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row RETURN count(row)

Anda dapat menjalankan contoh query menggunakan operasi execute-open-cypher-query di dengan mengeksekusi kode berikut: 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

Kueri bisa fleksibel dalam apa yang dilakukannya dengan baris yang dibaca dari file CSV. Misalnya, kueri berikut membuat simpul dengan bidang yang disetel ke data dari file CSV:

CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
Awas

Ini tidak dianggap praktik yang baik menggunakan klausa penghasil hasil besar seperti MATCH (n) sebelum klausa CALL. Ini akan mengarah pada kueri yang berjalan lama karena produk silang antara solusi yang masuk dari klausa sebelumnya dan baris yang dibaca oleh neptune.read. Disarankan untuk memulai kueri dengan CALL neptune.read.

Header kolom properti

Anda dapat menentukan kolom (:) untuk properti dengan menggunakan sintaks berikut. Nama jenis tidak peka dengan huruf besar/kecil. Jika titik dua muncul dalam nama properti, itu harus diloloskan dengan mendahuluinya dengan garis miring terbalik:. \:

propertyname:type
catatan
  • Spasi, koma, carriage return, dan karakter baris baru tidak diperbolehkan di header kolom, sehingga nama properti tidak dapat menyertakan karakter ini.

  • Anda dapat menentukan kolom untuk jenis array dengan menambahkan [] ke jenisnya:

    propertyname:type[]
  • Properti edge hanya dapat memiliki satu nilai dan akan menyebabkan kesalahan jika jenis array yang ditentukan atau nilai kedua ditentukan. Contoh berikut menunjukkan header kolom untuk properti bernama umur tipe Int:

    age:Int

Setiap baris dalam file akan perlu memiliki integer dalam posisi itu atau dibiarkan kosong. Array string diperbolehkan, tetapi string dalam array tidak dapat menyertakan karakter titik koma () kecuali jika diloloskan menggunakan garis miring terbalik (;). \;

Jenis kolom CSV yang didukung

  • BOOL (atau BOOLEAN) - Nilai yang diizinkan: benar, salah. Menunjukkan bidang Boolean. Nilai apa pun selain true akan diperlakukan sebagai false.

  • FLOAT - Rentang: 32-bit IEEE 754 floating point termasuk Infinity, INF, -Infinity, -INF dan NaN (bukan angka).

  • DOUBLE - Rentang: 64-bit IEEE 754 floating point termasuk Infinity, INF, -Infinity, -INF dan NaN (bukan angka).

  • STRING -

    • Tanda kutip adalah opsional. Karakter koma, baris baru, dan carriage return secara otomatis lolos jika disertakan dalam string yang dikelilingi oleh tanda kutip ganda (“). Contoh: “Halo, Dunia”.

    • Untuk menyertakan tanda kutip dalam string yang dikutip, Anda dapat menghindari tanda kutip dengan menggunakan dua berturut-turut: Contoh: “Halo “" Dunia ""”.

    • Array string diperbolehkan, tetapi string dalam array tidak dapat menyertakan karakter titik koma (;) kecuali jika diloloskan menggunakan garis miring terbalik (\;).

    • Jika Anda ingin mengapit string dalam array dengan tanda kutip, Anda harus mengapit keseluruhan array dengan satu set tanda kutip. Contoh: “String satu; String 2; String 3".

  • DATE, DATETIME - Nilai datetime dapat diberikan dalam format XSD, atau salah satu format berikut:

    • yyyy- MM-dd

    • yyyy- MM-ddTHH:mm

    • yyyy- MM-ddTHH:mm:ss

    • yyyy- MM-ddTHH:mm:ssZ

    • yyyy- MM-ddTHH:mm:ss.SSSZ

    • yyyy- MM-ddTHH:mm:ss [+|-] hhmm

    • yyyy- MM-ddTHH:mm:ss.SSS [+|-] hhmm

  • INTEGER YANG DITANDATANGANI -

    • Byte: -128 hingga 127

    • Pendek: -32768 sampai 32767

    • Int: -2^31 hingga 2 ^ 31-1

    • Panjang: -2 ^ 63 hingga 2 ^ 63-1

Neptune-specific jenis kolom:

  • Tipe kolom Any didukung di kolom pengguna. Tipe Any adalah jenis “gula sintaksis” untuk semua jenis lain yang kami dukung. Ini sangat berguna jika kolom pengguna memiliki beberapa jenis di dalamnya. Payload dari nilai tipe Any adalah daftar string json sebagai berikut:{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}, yang memiliki bidang nilai dan bidang tipe di setiap string json individu. Header kolom dari tipe Any adalah PropertyName:Any. Nilai kardinalitas kolom Any diatur, artinya kolom dapat menerima beberapa nilai.

    • Neptunus mendukung jenis berikut dalam tipe Any: Bool (atau Boolean), Byte, Short, Int, Long,,,,, Float, Double UnsignedByte UnsignedShort, Date UnsignedInt UnsignedLong, DateTime, String, dan Geometry.

    • Jenis vektor tidak didukung dalam Tipe apa pun.

    • Bersarang Tipe apa pun tidak didukung. Misalnya, {"value": {"value": "10", "type": "Int"}, "type": "Any"}.

  • Jenis kolom Geometri didukung di kolom pengguna. Muatan kolom ini hanya boleh berisi primitif Geometri tipe Point, disediakan sebagai string dalam format Well-known teks (WKT). Misalnya, POINT (30 10) akan menjadi nilai Geometri yang valid.

Contoh keluaran CSV

Diberikan file CSV berikut:

<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

Contoh ini menunjukkan output yang dikembalikan oleh neptune.read menggunakan query berikut:

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 } }] }

Saat ini, tidak ada cara untuk mengatur label node atau edge ke bidang data yang berasal dari file CSV. Disarankan agar Anda mempartisi kueri menjadi beberapa kueri, satu untuk masing-masing. 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)