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

> 131 milhões de linhas de dados de observações meteorológicas dos últimos 128 anos

# Datasets históricos de meteorologia de Taiwan

Este dataset contém medições históricas de observações meteorológicas dos últimos 128 anos. Cada linha é uma medição correspondente a uma data e hora em uma estação meteorológica.

A origem deste dataset está disponível [aqui](https://github.com/Raingel/historical_weather), e a lista de números das estações meteorológicas pode ser encontrada [aqui](https://github.com/Raingel/weather_station_list).

> As fontes dos datasets meteorológicos incluem as estações meteorológicas mantidas pela Central Weather Administration (o código da estação começa com C0, C1 e 4) e as estações meteorológicas agrícolas pertencentes ao Council of Agriculture (códigos de estação diferentes dos mencionados acima):

* StationId
  * MeasuredDate, o horário da observação
  * StnPres, a pressão atmosférica na estação
  * SeaPres, a pressão ao nível do mar
  * Td, a temperatura do ponto de orvalho
  * RH, a umidade relativa
  * Outros elementos, quando disponíveis

<div id="downloading-the-data">
  ## Baixando os dados
</div>

* Uma [versão pré-processada](#pre-processed-data) dos dados para uso no ClickHouse, que foi limpa, reestruturada e enriquecida. Este conjunto de dados abrange os anos de 1896 a 2023.
* [Baixe os dados brutos originais](#original-raw-data) e converta-os para o formato necessário para o ClickHouse. Usuários que desejam adicionar suas próprias colunas podem querer explorar ou complementar suas próprias abordagens.

<div id="pre-processed-data">
  ### Dados pré-processados
</div>

O conjunto de dados também foi reestruturado, passando de uma medição por linha para uma linha por ID da estação meteorológica e data da medição, ou seja.

```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,,,,,,,,,,,,,,,,,,,,,,,
```

É fácil consultar e verificar que a tabela resultante é menos esparsa e que alguns elementos são NULL, pois não podem ser medidos nesta estação meteorológica.

Este conjunto de dados está disponível no seguinte local do Google CloudStorage. Baixe o conjunto de dados para o seu sistema de arquivos local (e insira-o com o cliente do ClickHouse) ou insira-o diretamente no ClickHouse (consulte [Inserindo a partir de URL](#inserting-from-url)).

Para baixar:

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

# Opção: Validar o checksum
md5sum preprocessed_weather_daily_1896_2023.tar.gz
# O checksum deve ser igual a: 11b484f5bd9ddafec5cfb131eb2dd008

tar -xzvf preprocessed_weather_daily_1896_2023.tar.gz
daily_weather_preprocessed_1896_2023.csv

# Opção: Validar o checksum
md5sum daily_weather_preprocessed_1896_2023.csv
# O checksum deve ser igual a: 1132248c78195c43d93f843753881754
```

<div id="original-raw-data">
  ### Dados brutos originais
</div>

Os detalhes a seguir descrevem as etapas para baixar os dados brutos originais e transformá-los e convertê-los como quiser.

<div id="download">
  #### Baixar
</div>

Para fazer o download dos dados brutos originais:

```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

# Opção: Validar o checksum
md5sum raw_data_weather_daily_1896_2023.tar.gz
# O checksum deve ser igual a: b66b9f137217454d655e3004d7d1b51a

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

# Opção: Validar o checksum
cat *.csv | md5sum
# O checksum deve ser igual a: b26db404bf84d4063fac42e576464ce1
```

<div id="retrieve-the-taiwan-weather-stations">
  #### Obtenha as estações meteorológicas de Taiwan
</div>

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

# Opcional: Converter a codificação UTF-8-BOM para UTF-8
sed -i '1s/^\xEF\xBB\xBF//' weather_sta_list.csv
```

<div id="create-table-schema">
  ## Criar o esquema da tabela
</div>

Crie a tabela MergeTree no ClickHouse (usando o cliente do 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">
  ## Inserindo dados no ClickHouse
</div>

<div id="inserting-from-local-file">
  ### Inserindo de um arquivo local
</div>

Os dados podem ser inseridos de um arquivo local da seguinte forma (no cliente do ClickHouse):

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

onde `/path/to` representa o caminho específico do usuário para o arquivo local no disco.

E a saída de exemplo da resposta é a seguinte após inserir dados no 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">
  ### Inserindo a partir de 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')

```

Para saber como acelerar esse processo, consulte nosso artigo no blog sobre [como otimizar grandes cargas de dados](https://clickhouse.com/blog/supercharge-your-clickhouse-data-loads-part2).

<div id="check-data-rows-and-sizes">
  ## Verifique a quantidade de linhas e os tamanhos dos dados
</div>

1. Vamos ver quantas linhas foram inseridas:

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

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

2. Vamos ver quanto espaço em disco esta tabela usa:

```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">
  ## Consultas de exemplo
</div>

<div id="q1-retrieve-the-highest-dew-point-temperature-for-each-weather-station-in-the-specific-year">
  ### Q1: Recupere a maior temperatura de ponto de orvalho de cada estação meteorológica em um determinado ano
</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: Busca de dados brutos com intervalo de tempo de duração específica, campos e estação meteorológica
</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">
  ## Créditos
</div>

Gostaríamos de reconhecer os esforços da Central Weather Administration e da Agricultural Meteorological Observation Network (Estação) do Conselho de Agricultura na preparação, limpeza e distribuição deste conjunto de dados. Agradecemos seus esforços.

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. Modelo de aprendizado profundo orientado a aplicações para alerta precoce da brusone do arroz em 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]
