Есть ли способ прочитать столбец массива Postgres как столбец массива в Julia DataFrames? - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь прочитать вывод запроса из базы данных Postgres, используя пакеты ODB C и DataFrames. Некоторые из столбцов являются типами текстовых массивов в базе данных.

Вот предварительный просмотр:

│ Row │ id                     │ name                     │ artist_ids               │ available_markets        │
│     │ String                 │ Union{Missing, String}   │ Union{Missing, String}   │ Union{Missing, String}   │
├─────┼────────────────────────┼──────────────────────────┤──────────────────────────┤──────────────────────────┤
│ 1   │ 69uJi5QsBtqlYkGURTBli8 │ I Can't Make You Love Me │ {4KDyYWR7IpxZ7xrdYbKrqY} │ {AD,AE,AR,AT,AU,BE...}   │
│ 2   │ 7ilWEHob3AYG3lAJlKEpDR │ Baby I'm A Fool          │ {2P1puQXmG48EVLBrHbum1J} │ {}                       │
│ 3   │ 0SuG9kyzGRpDqrCWtgD6Lq │ Give Me Love             │ {6eUKZXaKkcviH0Ku9w2n3V} │ {AD,AE,AR,AT,AU,BE...}   │
│ 4   │ 3K9PY33TKt25UXX6YymFQq │ To Be Alone With You     │ {4MXUO7sVCaFgFjoTI5ox5c} │ {}                       │

В таблице information_schema.columns эти столбцы помечены как тип данных ARRAY, а не text.

В Python я смог использовать пакет psycopg2 для чтения столбцов массива без проблем в кадре данных pandas. Есть ли способ читать столбцы типа массива в фреймах данных Julia без использования PyCall?

Единственное решение, которое я мог придумать, - это управлять столбцами после загрузки данных в фрейм данных.

import DataFrames, DBInterface
const jdf = DataFrames;
const dbi = DBInterface;
. . .
df = dbi.execute(conn, stmt) |> jdf.DataFrame;
df[!, "available_markets"] = split.(replace.(df[!, "available_markets"], r"[{}]" => ""), ",");

Это дает мне то, что мне нужно, но я бы предпочел, чтобы столбец уже был загружен как тип данных Array {String, 1}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...