Есть ли простой способ определить переменную, которая использовалась для разделения набора данных паркета?
В качестве примера ниже я создаю игрушечный паркет, используя набор данных mtcars.
# Load library
library(arrow)
# Write data to parquet
mtcars |> write_dataset("~/boop", partitioning = "cyl")
Одним из подходов к определению переменной (переменных) разбиения может быть просмотр файлов, из которых состоит паркет, например:
# Open dataset & see files that are part of parquet
open_dataset("~/boop")$files
# [1] "XXXXX/boop/cyl=4/part-0.parquet" "XXXXX/boop/cyl=6/part-0.parquet"
# [3] "XXXXX/boop/cyl=8/part-0.parquet"
Здесь я вижу, что cyl — это переменная разделения, но мне нужно было бы проанализировать ее, и если есть несколько переменных разделения, это может быть немного вовлечено.
Есть ли простой способ определения переменной разделения? Например, есть ли переменная метаданных, которая записывает эту информацию?
Пока кто-то не предложит лучшее решение, похоже, это работает:
# Load library
library(arrow)
# Write data to parquet
mtcars |> write_dataset("~/boop", partitioning = c("cyl", "gear"))
# Files in parquet
pq_files <- open_dataset("~/boop")$files
# Extract partiton names assuming */partition_name=value/* format
regmatches(pq_files, gregexpr("(?<=/)[^/]*(?==)", pq_files, perl = TRUE)) |> unlist() |> unique()
# [1] "cyl" "gear"
Как было предложено в вопросе, я просматриваю файлы в паркете, а затем использую некоторое регулярное выражение для поиска текста, зажатого между / и =, который должен соответствовать разделам.