View a markdown version of this page

Contoh kueri menggunakan parket - 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 parket

Contoh query berikut mengembalikan jumlah baris dalam file Parket 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 bisa fleksibel dalam apa yang dilakukannya dengan baris yang dibaca dari file Parket. Misalnya, kueri berikut membuat simpul dengan bidang yang disetel ke data yang ditemukan di file Parket:

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 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.

Jenis kolom Parket yang didukung

Jenis Data Parket:

  • NULL

  • BOOLEAN

  • FLOAT

  • DOUBLE

  • STRING

  • INTEGER YANG DITANDATANGANI: UINT8,, UINT16, UINT32 UINT64

  • MAP: Hanya mendukung satu tingkat. Tidak mendukung bersarang.

  • DAFTAR: Hanya mendukung satu tingkat. Tidak mendukung bersarang.

Tipe data khusus Neptunus:

Berbeda dengan header kolom properti dari format CSV, header kolom properti dari format Parket hanya perlu memiliki nama properti, jadi tidak perlu memiliki nama tipe atau kardinalitas.

Namun, ada beberapa jenis kolom khusus dalam format Parket yang memerlukan anotasi dalam metadata, termasuk tipe Any, tipe Date, tipe DateTime, dan jenis Geometri. 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:

  • 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. 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"}.

  • 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 geometri primitif tipe Point, disediakan sebagai string dalam format teks terkenal (WKT). Misalnya, POINT (30 10) akan menjadi nilai Geometri yang valid.

Contoh keluaran parket

Diberikan file Parket 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 node atau label tepi ke bidang data yang berasal dari file Parket. Disarankan agar Anda mempartisi kueri menjadi beberapa kueri, satu untuk setiap label/jenis.

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)