Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kueri menggunakan parket
Contoh kueri berikut mengembalikan jumlah baris dalam file Parquet tertentu:
CALL neptune.read( { source: "<s3 path>", format: "parquet" } ) YIELD row RETURN count(row)
Anda dapat menjalankan contoh query menggunakan execute-open-cypher-query operasi di AWS CLI dengan mengeksekusi kode berikut:
aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'parquet'}) YIELD row RETURN count(row)" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
Kueri dapat fleksibel dalam apa yang dilakukannya dengan baris yang dibaca dari file Parquet. Misalnya, kueri berikut membuat node dengan bidang yang disetel ke data yang ditemukan di file Parquet:
CALL neptune.read( { source: "<s3 path>", format: "parquet" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
Awas
Tidak dianggap praktik yang baik untuk menggunakan klausa penghasil hasil besar seperti MATCH(n) sebelum klausa. CALL Ini akan menyebabkan kueri yang berjalan lama, karena produk silang antara solusi masuk dari klausa sebelumnya dan baris yang dibaca oleh neptune.read. Disarankan untuk memulai kueri dengan CALL neptune.read.
Jenis kolom parket yang didukung
Jenis Data Parket:
NULL
BOOLEAN
FLOAT
DOUBLE
STRING
BILANGAN BULAT BERTANDA: UINT8, UINT16, UINT32, UINT64
MAP: Hanya mendukung satu tingkat. Tidak mendukung bersarang.
DAFTAR: Hanya mendukung satu tingkat. Tidak mendukung bersarang.
Neptune-specific tipe data:
Berbeda dengan header kolom properti format CSV, header kolom properti dari format Parquet hanya perlu memiliki nama properti, jadi tidak perlu memiliki nama tipe atau kardinalitas.
Namun, ada beberapa jenis kolom khusus dalam format Parquet yang memerlukan anotasi dalam metadata, termasuk jenis Any, Type Date, DateTime type, dan Geometry type. Objek berikut adalah contoh anotasi metadata yang diperlukan untuk file yang berisi kolom jenis khusus ini:
"metadata": { "anyTypeColumns": ["UserCol1"], "dateTypeColumns": ["UserCol2"], "dateTimeTypeColumns": ["UserCol3"], "geometryTypeColumns": ["UserCol4"] }
Di bawah ini adalah detail tentang muatan yang diharapkan terkait dengan jenis ini:
Jenis kolom Apa saja didukung di kolom pengguna. Jenis apa pun 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. Nilai kardinalitas kolom Any diatur, artinya kolom dapat menerima beberapa nilai.Neptunus mendukung tipe berikut dalam tipe Any: Bool (atau Boolean), Byte, Short, Int, Long,,,, UnsignedByte, Float UnsignedShort UnsignedInt, Double UnsignedLong, Date, DateTime, String, dan Geometry.
Jenis vektor tidak didukung dalam Tipe apapun.
Bersarang Tipe apa pun tidak didukung. Misalnya,
{"value": {"value": "10", "type": "Int"}, "type": "Any"}.
Kolom tipe Tanggal dan Datetime didukung di kolom pengguna. Muatan kolom ini harus disediakan sebagai string mengikuti format XSD atau salah satu format di bawah ini:
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
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 parket
Diberikan file Parquet seperti ini:
<s3 path> Parquet Type: int8 int16 int32 int64 float double string +--------+---------+-------------+----------------------+------------+------------+----------+ | Byte | Short | Int | Long | Float | Double | 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 | +--------+---------+-------------+----------------------+------------+------------+----------+
Berikut adalah contoh 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: 'parquet'}) YIELD row RETURN row" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
{ "results": [{ "row": { "Float": 1.23456, "Byte": -128, "Int": -2147483648, "Long": -9223372036854775808, "String": "first", "Short": -32768, "Double": 1.2345678899999999 } }, { "row": { "Float": "NaN", "Byte": 127, "Int": 2147483647, "Long": 9223372036854775807, "String": "second", "Short": 32767, "Double": "NaN" } }, { "row": { "Float": "-INF", "Byte": 0, "Int": 0, "Long": 0, "String": "third", "Short": 0, "Double": "-INF" } }, { "row": { "Float": "INF", "Byte": 0, "Int": 0, "Long": 0, "String": "fourth", "Short": 0, "Double": "INF" } }] }
Saat ini, tidak ada cara untuk mengatur label node atau tepi ke bidang data yang berasal dari file Parquet. Disarankan agar Anda mempartisi kueri menjadi beberapa kueri, satu untuk masing-masing label/Type.
CALL neptune.read({source: '<s3 path>', format: 'parquet'}) YIELD row WHERE row.`~label` = 'airport' CREATE (n:airport) CALL neptune.read({source: '<s3 path>', format: 'parquet'}) YIELD row WHERE row.`~label` = 'country' CREATE (n:country)