Доброе утро, дорогие подписчики!
☀️
Сегодня будет вторая часть поста про
JSON, и мы начнём с небольшого примера на
Python.
Рассмотрим сайт
https://sunrise-sunset.org/
С его помощью можно узнать по координате (
широта/latitude - долгота/longitude), во сколько происходит закат и рассвет.
🌆
На большинстве сайтов можно найти описание того, как работать с
API в рамках этого сайта (т.е. как подключиться к нему с помощью, например,
Python и вытащить интересующую информацию, чтобы не делать
ctrl+C - ctrl+V множество раз).
Например, на этом сайте достаточно кликнуть на графу
Free API! внизу стартовой страницы.
Узнаем с помощью
Python, во сколько сегодня восходит и заходит Солнце в Москве.
Для этого загуглим координаты Москвы, запишем
долготу и
широту, а также
дату в словарь
params и с помощью библиотеки
requests получим результат в формате
JSON.
🔥
import requests
URL = 'https://api.sunrise-sunset.org/json'
params = {
'lat': 55.7565408,
'lng': 37.6149202,
'date': '2025-01-07'
}
sun_r_s = requests.get(URL, params=params)
sun_r_s.json()
Получим следующий результат:
{'results': {'sunrise': '5:53:43 AM',
'sunset': '1:18:02 PM',
'solar_noon': '9:35:52 AM',
'day_length': '07:24:19',
'civil_twilight_begin': '5:10:42 AM',
'civil_twilight_end': '2:01:02 PM',
'nautical_twilight_begin': '4:22:50 AM',
'nautical_twilight_end': '2:48:54 PM',
'astronomical_twilight_begin': '3:38:00 AM',
'astronomical_twilight_end': '3:33:45 PM'},
'status': 'OK',
'tzid': 'UTC'}
Как видим, выдаётся не только восход/закат, но и "сумерки", и другие астрономические отметки во времени
⌛️
А при чём же здесь SQL, спросите вы?
В некоторых базах данных в рамках одной ячейки таблицы может храниться не
скалярное (т.е. единичное) значение, но и
векторный тип данных, среди которых можно встретить не только
списки и
кортежи, но и
JSON'ы.
Особенно это относится к ныне популярному
Clickhouse - вот
ссылка на функции
Clickhouse по работе с
JSON.
Например, добавим столбец с годом рождения в нашу таблицу из прошлого поста
(111, "Иван", 1992)
(112, "Виктор", 1985)
(113, "Ксения", 2003)
Вместо таблицы с тремя столбцами можем перейти обратно к двум столбцам, свернув имя и год рождения в JSON:
(111, {"name":"Иван", "birth_year":"1992"})
(112, {"name":"Виктор", "birth_year":"1985"})
(113, {"name":"Ксения", "birth_year":"2003"})
Разумеется, две колонки хранить дешевле, чем три
🙂
Пишите в комментариях, хотели бы вы продолжение разговора про этот тип данных?
🤓
#data_analysis #аналитика #sql #clickhouse #year25