> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 131 миллионов строк данных метеорологических наблюдений за последние 128 лет

# Исторические датасеты о погоде Тайваня

Этот набор данных содержит исторические метеорологические наблюдения за последние 128 лет. Каждая строка представляет собой измерение, выполненное в определённый момент времени на определённой метеостанции.

Источник этого набора данных доступен [здесь](https://github.com/Raingel/historical_weather), а список номеров метеостанций можно найти [здесь](https://github.com/Raingel/weather_station_list).

> Источники этих метеорологических данных включают метеостанции, созданные Central Weather Administration (код станции начинается с C0, C1 и 4), а также агрометеорологические станции, относящиеся к Council of Agriculture (код станции отличается от указанных выше):

* StationId
  * MeasuredDate, время наблюдения
  * StnPres, атмосферное давление на станции
  * SeaPres, давление на уровне моря
  * Td, температура точки росы
  * RH, относительная влажность
  * Другие параметры, если доступны

<div id="downloading-the-data">
  ## Загрузка данных
</div>

* [Предварительно обработанная версия](#pre-processed-data) данных для использования в ClickHouse, очищенная, переработанная и обогащённая. Этот набор данных охватывает период с 1896 по 2023 год.
* [Скачать исходные необработанные данные](#original-raw-data) и преобразовать их в формат, требуемый ClickHouse. Пользователи, которые хотят добавить собственные столбцы, могут взять эти подходы за основу и доработать их.

<div id="pre-processed-data">
  ### Предварительно обработанные данные
</div>

Набор данных также был перестроен: вместо одного измерения в строке теперь одна строка соответствует идентификатору метеостанции и дате измерения, то есть

```csv theme={null}
StationId,MeasuredDate,StnPres,Tx,RH,WS,WD,WSGust,WDGust,Precp,GloblRad,TxSoil0cm,TxSoil5cm,TxSoil20cm,TxSoil50cm,TxSoil100cm,SeaPres,Td,PrecpHour,SunShine,TxSoil10cm,EvapA,Visb,UVI,Cloud Amount,TxSoil30cm,TxSoil200cm,TxSoil300cm,TxSoil500cm,VaporPressure
C0X100,2016-01-01 01:00:00,1022.1,16.1,72,1.1,8.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 02:00:00,1021.6,16.0,73,1.2,358.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 03:00:00,1021.3,15.8,74,1.5,353.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 04:00:00,1021.2,15.8,74,1.7,8.0,,,,,,,,,,,,,,,,,,,,,,,
```

Легко выполнить запрос и убедиться, что итоговая таблица менее разреженная, а некоторые элементы имеют значение NULL, поскольку на этой метеостанции их невозможно измерить.

Этот набор данных доступен по следующему адресу в Google CloudStorage. Либо скачайте набор данных в локальную файловую систему (и вставьте его с помощью клиента ClickHouse), либо вставьте его напрямую в ClickHouse (см. [Вставка из URL](#inserting-from-url)).

Чтобы скачать:

```bash theme={null}
wget https://storage.googleapis.com/taiwan-weather-observaiton-datasets/preprocessed_weather_daily_1896_2023.tar.gz

# Опционально: проверить контрольную сумму
md5sum preprocessed_weather_daily_1896_2023.tar.gz
# Контрольная сумма должна быть равна: 11b484f5bd9ddafec5cfb131eb2dd008

tar -xzvf preprocessed_weather_daily_1896_2023.tar.gz
daily_weather_preprocessed_1896_2023.csv

# Опционально: проверить контрольную сумму
md5sum daily_weather_preprocessed_1896_2023.csv
# Контрольная сумма должна быть равна: 1132248c78195c43d93f843753881754
```

<div id="original-raw-data">
  ### Исходные необработанные данные
</div>

Ниже описаны шаги по загрузке исходных необработанных данных для их дальнейшего преобразования и конвертации по вашему усмотрению.

<div id="download">
  #### Скачать
</div>

Чтобы скачать исходные необработанные данные:

```bash theme={null}
mkdir tw_raw_weather_data && cd tw_raw_weather_data

wget https://storage.googleapis.com/taiwan-weather-observaiton-datasets/raw_data_weather_daily_1896_2023.tar.gz

# Опционально: проверить контрольную сумму
md5sum raw_data_weather_daily_1896_2023.tar.gz
# Контрольная сумма должна совпадать с: b66b9f137217454d655e3004d7d1b51a

tar -xzvf raw_data_weather_daily_1896_2023.tar.gz
466920_1928.csv
466920_1929.csv
466920_1930.csv
466920_1931.csv
...

# Опционально: проверить контрольную сумму
cat *.csv | md5sum
# Контрольная сумма должна совпадать с: b26db404bf84d4063fac42e576464ce1
```

<div id="retrieve-the-taiwan-weather-stations">
  #### Получение списка метеостанций Тайваня
</div>

```bash theme={null}
wget -O weather_sta_list.csv https://github.com/Raingel/weather_station_list/raw/main/data/weather_sta_list.csv

# Опционально: преобразовать кодировку UTF-8-BOM в UTF-8
sed -i '1s/^\xEF\xBB\xBF//' weather_sta_list.csv
```

<div id="create-table-schema">
  ## Создание схемы таблицы
</div>

Создайте в ClickHouse таблицу семейства MergeTree с помощью клиента ClickHouse.

```bash theme={null}
CREATE TABLE tw_weather_data (
    StationId String null,
    MeasuredDate DateTime64,
    StnPres Float64 null,
    SeaPres Float64 null,
    Tx Float64 null,
    Td Float64 null,
    RH Float64 null,
    WS Float64 null,
    WD Float64 null,
    WSGust Float64 null,
    WDGust Float64 null,
    Precp Float64 null,
    PrecpHour Float64 null,
    SunShine Float64 null,
    GloblRad Float64 null,
    TxSoil0cm Float64 null,
    TxSoil5cm Float64 null,
    TxSoil10cm Float64 null,
    TxSoil20cm Float64 null,
    TxSoil50cm Float64 null,
    TxSoil100cm Float64 null,
    TxSoil30cm Float64 null,
    TxSoil200cm Float64 null,
    TxSoil300cm Float64 null,
    TxSoil500cm Float64 null,
    VaporPressure Float64 null,
    UVI Float64 null,
    "Cloud Amount" Float64 null,
    EvapA Float64 null,
    Visb Float64 null
)
ENGINE = MergeTree
ORDER BY (MeasuredDate);
```

<div id="inserting-into-clickhouse">
  ## Вставка данных в ClickHouse
</div>

<div id="inserting-from-local-file">
  ### Вставка из локального файла
</div>

Данные можно вставить из локального файла следующим образом (в клиенте ClickHouse):

```sql theme={null}
INSERT INTO tw_weather_data FROM INFILE '/path/to/daily_weather_preprocessed_1896_2023.csv'
```

где `/path/to` — это путь пользователя к локальному файлу на диске.

И пример ответа после вставки данных в ClickHouse выглядит следующим образом:

```response theme={null}
Query id: 90e4b524-6e14-4855-817c-7e6f98fbeabb

Ok.
131985329 rows in set. Elapsed: 71.770 sec. Processed 131.99 million rows, 10.06 GB (1.84 million rows/s., 140.14 MB/s.)
Peak memory usage: 583.23 MiB.
```

<div id="inserting-from-url">
  ### Вставка по URL
</div>

```sql theme={null}
INSERT INTO tw_weather_data SELECT *
FROM url('https://storage.googleapis.com/taiwan-weather-observaiton-datasets/daily_weather_preprocessed_1896_2023.csv', 'CSVWithNames')

```

Чтобы узнать, как ускорить этот процесс, прочитайте нашу статью в блоге о [настройке загрузки больших объёмов данных](https://clickhouse.com/blog/supercharge-your-clickhouse-data-loads-part2).

<div id="check-data-rows-and-sizes">
  ## Проверьте количество строк и объём данных
</div>

1. Посмотрим, сколько строк было вставлено:

```sql theme={null}
SELECT formatReadableQuantity(count())
FROM tw_weather_data;
```

```response theme={null}
┌─formatReadableQuantity(count())─┐
│ 131.99 million                  │
└─────────────────────────────────┘
```

2. Давайте посмотрим, сколько места на диске занимает эта таблица:

```sql theme={null}
SELECT
    formatReadableSize(sum(bytes)) AS disk_size,
    formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size
FROM system.parts
WHERE (`table` = 'tw_weather_data') AND active
```

```response theme={null}
┌─disk_size─┬─uncompressed_size─┐
│ 2.13 GiB  │ 32.94 GiB         │
└───────────┴───────────────────┘
```

<div id="sample-queries">
  ## Примеры запросов
</div>

<div id="q1-retrieve-the-highest-dew-point-temperature-for-each-weather-station-in-the-specific-year">
  ### Q1: Получить максимальную температуру точки росы для каждой метеостанции за указанный год
</div>

```sql theme={null}
SELECT
    StationId,
    max(Td) AS max_td
FROM tw_weather_data
WHERE (year(MeasuredDate) = 2023) AND (Td IS NOT NULL)
GROUP BY StationId
```

```response theme={null}
┌─StationId─┬─max_td─┐
│ 466940    │      1 │
│ 467300    │      1 │
│ 467540    │      1 │
│ 467490    │      1 │
│ 467080    │      1 │
│ 466910    │      1 │
│ 467660    │      1 │
│ 467270    │      1 │
│ 467350    │      1 │
│ 467571    │      1 │
│ 466920    │      1 │
│ 467650    │      1 │
│ 467550    │      1 │
│ 467480    │      1 │
│ 467610    │      1 │
│ 467050    │      1 │
│ 467590    │      1 │
│ 466990    │      1 │
│ 467060    │      1 │
│ 466950    │      1 │
│ 467620    │      1 │
│ 467990    │      1 │
│ 466930    │      1 │
│ 467110    │      1 │
│ 466881    │      1 │
│ 467410    │      1 │
│ 467441    │      1 │
│ 467420    │      1 │
│ 467530    │      1 │
│ 466900    │      1 │
└───────────┴────────┘

30 rows in set. Elapsed: 0.045 sec. Processed 6.41 million rows, 187.33 MB (143.92 million rows/s., 4.21 GB/s.)
```

<div id="q2-raw-data-fetching-with-the-specific-duration-time-range-fields-and-weather-station">
  ### Q2: Получение необработанных данных за заданный временной диапазон, с указанием полей и метеостанции
</div>

```sql theme={null}
SELECT
    StnPres,
    SeaPres,
    Tx,
    Td,
    RH,
    WS,
    WD,
    WSGust,
    WDGust,
    Precp,
    PrecpHour
FROM tw_weather_data
WHERE (StationId = 'C0UB10') AND (MeasuredDate >= '2023-12-23') AND (MeasuredDate < '2023-12-24')
ORDER BY MeasuredDate ASC
LIMIT 10
```

```response theme={null}
┌─StnPres─┬─SeaPres─┬───Tx─┬───Td─┬─RH─┬──WS─┬──WD─┬─WSGust─┬─WDGust─┬─Precp─┬─PrecpHour─┐
│  1029.5 │    ᴺᵁᴸᴸ │ 11.8 │ ᴺᵁᴸᴸ │ 78 │ 2.7 │ 271 │    5.5 │    275 │ -99.8 │     -99.8 │
│  1029.8 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 78 │ 2.7 │ 289 │    5.5 │    308 │ -99.8 │     -99.8 │
│  1028.6 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 79 │ 2.3 │ 251 │    6.1 │    289 │ -99.8 │     -99.8 │
│  1028.2 │    ᴺᵁᴸᴸ │   13 │ ᴺᵁᴸᴸ │ 75 │ 4.3 │ 312 │    7.5 │    316 │ -99.8 │     -99.8 │
│  1027.8 │    ᴺᵁᴸᴸ │ 11.1 │ ᴺᵁᴸᴸ │ 89 │ 7.1 │ 310 │   11.6 │    322 │ -99.8 │     -99.8 │
│  1027.8 │    ᴺᵁᴸᴸ │ 11.6 │ ᴺᵁᴸᴸ │ 90 │ 3.1 │ 269 │   10.7 │    295 │ -99.8 │     -99.8 │
│  1027.9 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 89 │ 4.7 │ 296 │    8.1 │    310 │ -99.8 │     -99.8 │
│  1028.2 │    ᴺᵁᴸᴸ │ 12.2 │ ᴺᵁᴸᴸ │ 94 │ 2.5 │ 246 │    7.1 │    283 │ -99.8 │     -99.8 │
│  1028.4 │    ᴺᵁᴸᴸ │ 12.5 │ ᴺᵁᴸᴸ │ 94 │ 3.1 │ 265 │    4.8 │    297 │ -99.8 │     -99.8 │
│  1028.3 │    ᴺᵁᴸᴸ │ 13.6 │ ᴺᵁᴸᴸ │ 91 │ 1.2 │ 273 │    4.4 │    256 │ -99.8 │     -99.8 │
└─────────┴─────────┴──────┴──────┴────┴─────┴─────┴────────┴────────┴───────┴───────────┘

10 rows in set. Elapsed: 0.009 sec. Processed 91.70 thousand rows, 2.33 MB (9.67 million rows/s., 245.31 MB/s.)
```

<div id="credits">
  ## Благодарности
</div>

Мы хотели бы отметить вклад Центрального метеорологического управления и Сети сельскохозяйственных метеорологических наблюдений (Station) Совета по сельскому хозяйству в подготовку, очистку и распространение этого набора данных. Благодарим вас за проделанную работу.

Ou, J.-H., Kuo, C.-H., Wu, Y.-F., Lin, G.-C., Lee, M.-H., Chen, R.-K., Chou, H.-P., Wu, H.-Y., Chu, S.-C., Lai, Q.-J., Tsai, Y.-C., Lin, C.-C., Kuo, C.-C., Liao, C.-T., Chen, Y.-N., Chu, Y.-W., Chen, C.-Y., 2023. Application-oriented deep learning model for early warning of rice blast in Taiwan. Ecological Informatics 73, 101950. [https://doi.org/10.1016/j.ecoinf.2022.101950](https://doi.org/10.1016/j.ecoinf.2022.101950) \[13/12/2022]
