Oracle Analytics Cloud：ISO8601形式の文字列を日付型に変換

# はじめに
データ分析するにあたり、時系列で計数を見てみるというのは基本だと思います。
日付データのフォーマットとして様々なパターンが考えられますが、今回はISO 8601に基づいたフォーマットをOracle Analtyics Cloud（**OAC**）で日付データとして取り扱う方法を紹介します。
なお、ISO 8601形式とは例えば 2023-09-01T01:10:24.000 というもので、日付と時刻をTで区切って表現するものです。

https://ja.wikipedia.org/wiki/ISO_8601

# サンプルデータの入手
気象庁の「各種データ・資料」の震源リストを使用します。

https://www.data.jma.go.jp/svd/eqev/data/daily_map/index.html

2023年08月01日 のデータを使用しました。
ブラウザから赤い囲みの部分のデータをコピー＆ペーストして、テキストファイルとして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/4ef508bb-5835-be62-2256-021e46ba784f.png)

# Excelで加工
まずは、保存したテキストファイルを固定長データとしてExcelシートに取り込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f5e3506e-d705-0c36-26d5-d3664b38e53d.png)
固定長データとして「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/494490d1-e464-90d3-466d-76ecb438f3c6.png)
時と分の間の「：」を独立した列として定義して「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ff8408e3-35b7-dee3-c87d-8287c0de0e2c.png)
「：」列は「削除する」として「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7995a6d8-42f8-6ee1-78d2-2fa7b822f5db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/43304ee9-8a5a-f6fa-c39a-c833b03c35cd.png)
取り込み成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e4c162a8-bbed-961b-0ec5-45fe47c2adba.png)
2行目に不要な行があるので削除しておきます。
また、10行毎に空行が挿入されているので、これは後でまとめて削除します。
新たな列をG列として追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e0a50d89-5ba6-0f6d-2e67-06eeb11f6a31.png)
セルG2に、次の式を入力します。
```
=A2&"-"&TEXT(B2,"00")&"-"&TEXT(C2,"00")&"T"&TEXT(D2,"00")&":"&TEXT(E2,"00")&":"&TEXT(F2,"00.000")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1432ed22-0ccd-cbde-4654-fc21eb511122.png)
この式をG列全体にコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d5e53af3-c8dc-cb0d-804e-1ca91f07e51e.png)
G列の値を「-00-00T00:00:00.000」でフィルタし、該当する行を削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/908e8f5e-46f9-e9d8-7657-aaaffdb3eee7.png)
名前をつけて、XLSX形式で保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f970c3da-1504-f563-cfba-02b135975009.png)

# OACで可視化
OACにログインし、「ホーム」を表示します。

## データセットの作成
「作成」ボタンをクリックして、「データセット」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/910abcda-4406-ad36-8648-314d5d1a988a.png)
保存しておいたExcelファイルをドラッグ＆ドロップするか、クリックしてファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/90ec740a-6dc9-a25e-f54f-801623df119c.png)
先程、計算式により作成した列は「日付」タイプではなく「属性」列として認識されているのがわかります。
このまま「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/92784890-1189-6aac-00b0-226505441c8f.png)
結合ダイアグラムの右隣のタブに移動します。
「日時」列の3点リーダをクリックして、「日付に変換」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/89325335-f2c9-ed2a-76c2-452da3dbedef.png)
フォーマットを確認して「ステップの追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c0ed6db0-7bf5-630a-1b9c-21b0829c5965.png)
データ型が「日時」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7c42587b-332b-a9aa-dad4-39e88e0c38fe.png)

:::note
ハイフンやコロンがないフォーマットの場合は、日付に変換する際に「ソース・フォーマット」を「カスタム」にして書式を「yyyyMMdd'T'HHmmss.SSS」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/4859dcfc-e040-ecb0-60cd-30264c6365b8.png)
:::

ついでに行数を返す列を追加しておきます。
データセットの一番右側の列の3点リーダをクリックして「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/85d4d306-61de-da29-c39c-7225830763dd.png)
名前を「件数」、式を「1」として「ステップの追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b4a2a6f7-427c-a0d3-2193-f066d0117efd.png)
処理形式を「メジャー」、集計を「合計」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/118d6cc7-f42b-b7b9-b902-07c90e7fec33.png)
名前をつけてデータセットを保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/59cc7c10-411e-17fa-5e93-4f94910ca493.png)

## ワークブックの作成
ワークブックの作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fa0f4a8b-f7b9-ef33-5c3c-6ca3955c553a.png)
時間帯別の発生件数を可視化してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/a2a5e4ef-bd75-a312-5050-88e54324d7c9.png)
完成です！

# データセットの編集
記事の趣旨とはズレるのですが、せっかくなのでデータセットを少し編集します。
このデータセットには緯度・経度の座標データがあります。
フォーマットは、度分秒になっています。
1度は60分で1分は60秒となります。
これを、OACのマップで利用できる十進度に変換するとなると
- 度＋分/60＋秒/3600

という換算式となります。
これをデータセットの新しい列に式として定義します。

## ワークブックの「データ」モードからデータセットの編集
「データ」をクリックします。つづいて、データセットの編集アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fc36a9c8-10ec-82bf-41f0-54251d474426.png)

## 新しい列を追加
「緯度」列の3点リーダをクリックして、メニューの中から「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ed761674-10ce-9ba0-44e8-c15f4de10bf9.png)
次の式を入力します。
名前は「緯度 (十進度)」とし、「ステップの追加」をクリックします。
```sql
cast(left("緯度",2) as double)+cast(substring("緯度",4,2) as double)/60+cast(substring("緯度",7,1) as double)/3600
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1c2d0e4b-86b8-cfbe-73c0-36fb76a3792d.png)
同様の手順で、「経度」の隣に新しい列「経度 (十進度)」を作成します。
```sql
cast(left("経度",3) as double)+cast(substring("経度",5,2) as double)/60+cast(substring("経度",8,1) as double)/3600
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ce7cb835-20a7-4157-8ed4-16b2a19b56a5.png)
データセットを上書き保存し、ワークブックに戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ed2ea33d-9394-826b-c0a8-98d5fd28287f.png)

# OACで再度可視化
座標データを使用して、マップを作成しました。
体に感じない地震が多いとはいえ、たった1日でこんなに発生しているんですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/24b1d242-7475-78b7-212c-220626eecc4d.png)