> ## 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.

> 過去128年分の1億3,100万行の気象観測データ

# 台湾の過去の気象データセット

このデータセットには、過去128年間にわたる気象観測データが含まれています。各行は、特定の日時・気象観測所における1件の測定値を表します。

このデータセットの元データは[こちら](https://github.com/Raingel/historical_weather)で入手でき、気象観測所番号の一覧は[こちら](https://github.com/Raingel/weather_station_list)で確認できます。

> この気象データセットのデータソースには、交通部中央気象署が設置した気象観測所 (観測所コードが C0、C1、4 で始まるもの) と、農業部に属する農業気象観測所 (観測所コードが前述以外のもの) が含まれます。

* StationId
  * MeasuredDate、観測時刻
  * StnPres、観測所気圧
  * SeaPres、海面気圧
  * Td、露点温度
  * RH、相対湿度
  * Other elements、利用可能なその他の項目

<div id="downloading-the-data">
  ## データのダウンロード
</div>

* ClickHouse向けに、クリーニング、再構成、エンリッチを施したデータの[前処理済みバージョン](#pre-processed-data)を用意しています。このデータセットは1896年から2023年までを対象としています。
* [元の生データをダウンロード](#original-raw-data)し、ClickHouseで必要なフォーマットに変換します。独自のカラムを追加したい場合は、こちらを使って独自に検討したり作業を進めたりできます。

<div id="pre-processed-data">
  ### 前処理済みデータ
</div>

このデータセットも、1行あたり1つの測定値という構成から、気象観測所IDと測定日ごとに1行となる形に再構成されています。つまり、

```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 client` で挿入する) か、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 client から ClickHouse に MergeTree テーブルを作成します。

```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 clientから) :

```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)。経過時間: 0.045 秒。処理済み: 641万行、187.33 MB (毎秒 1億4392万行、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>

本データセットの作成、整備、配布にあたり尽力された Council of Agriculture の Central Weather Administration および Agricultural Meteorological Observation Network (観測所) に感謝申し上げます。皆様のご尽力に深く感謝いたします。

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. 台湾におけるイネいもち病の早期警報のための応用指向ディープラーニングモデル. 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]
