Комментарии 15
С тех пор, как я освоил rectangling (https://tidyr.tidyverse.org/articles/rectangle.html) при помощи tidyr, анализ JSON'ов любой сложности перестал представлять какие-либо проблемы.
В приведённом примере с датами операций их можно извлечь примерно одной строкой, а второй строкой преобразовать строки в настоящие даты и построить в соседнем окошке график
Спасибо за наводку! Подскажите, как вы вышли на этот инструмент и сколько потребовалось времени на освоение?
Пример с графиком в соседнем окошке вдохновляет. Хочется оценить трудоёмкость и необходимость погружения
Про R я в принципе знаю достаточно давно, но именно на tidyverse меня навела ChatGPT, так что какие-то базовые вещи я освоил меньше, чем за день. Правда, она довольно быстро перестала помогать и начала мешать, поэтому дальше я, собственно, читал статьи на сайте tidyverse.
Вот, кстати, добрался до компьютера и могу привести те самые две строчки (и масса «обвеса») для ваших данных:
# подключаем библиотеки
library(tidyverse)
library(jsonlite)
# читаем данные
d <- read_json('file.json')
# или можно распарсить JSON прямо из буфера обмена, пользуюсь этим
d <- parse_json(clipboard())
# а теперь, собственно, превращаем history в таблицу
hist <- d$data$accountBalanceHistory$history %>% enframe %>% unnest_wider(value)
# преобразуем даты и рисуем график
# технически это одна строка, просто разбитая :)
hist %>%
mutate(across(balanceChangeDate, parse_datetime)) %>%
ggplot(aes(x=balanceChangeDate)) + geom_histogram()
Из неочевидных плюшек NSE, о котором упоминал в комментарии ниже, например, возможно такое:
hist %>%
# разбираем как дату все столбцы, оканчивающиеся на Date
mutate(across(ends_with("Date"), parse_datetime)) -> hist
# да, присваивание можно делать не только влево, но и вправо
Почему именно R? Pandas вроде такое же методы имеет
Из-за того, что называется NSE — non-standart evaluation. R ленив, и вычисляет значения аргументов только при необходимости. Более того, их можно превратить обратно в языковые конструкции и проинтерпретировать иначе. В итоге каждая функция может иметь свой мини-синтаксис для аргументов. Потенциально это может, конечно, вести к хаосу, но на деле это делает синтаксис яснее и понятнее, например:
df %>% select(starts_with("c"))
оставит только те столбцы, имена которых начинаются с c
, позволяя не перечислять их имена.
Ну и pipe-оператор, действующий так:
a %>% f(b, c) %>% g(n)
# g(f(a, b, c), n)
Из-за этого код получается короче и яснее
Сваггер удобнее таблицы? Ну такое себе...
Из спеки OpenAPI можно сделать таблицу. А вот обратно - фиг.
А что мешает это автоматизировать? Чат-боты это уже умеют.
Но таблицу я могу показать на собрании с другой командой и всем будет понятно, что в интеграции.
У меня получаются массивные таблицы, которые сложно поддерживать в актуальном состоянии. OpenAPI после этапа проектирования передаю на поддержку кодом, и Swagger актуальный после каждой доработки. Поделитесь, как у вас проходит процесс актуализации документации?
А Swagger UI не можете показать? Кмк там интерфейс поудобнее будет, чем "таблица".
Подскажите, каким инструментом пользуетесь, чтобы получить таблицу из OpenAPI?
Генерации простыни на Markdown из спецификации OpenAPI:npx widdershins specification.yml -o specification.md --expandBody --omitBody --code --summary
Если нужен HTML, то потом:pandoc specification.md -o specification.html
Предварительно нужно установить npm с widdershins:npm install -g widdershins
и pandoc:
и pandoc
А excel со встроенным powerquery не устроил? Он и json и XML ест.
Хороший вопрос. Выбрала VSCode из-за дальнейшего пути данных, с которыми работаю. Данные нужно передать разработчику чтобы положить в код, а значит нужно понять, но сильно не менять структуру. Excel выручал, когда я только разбиралась с тем, что хочется получить. VSCode - следующий этап для моих задач
Как я использую плагины VSCode для обработки Json-файлов в работе системным аналитиком