SQL Serverでサブクエリとウィンドウ関数のパフォーマンスを比較した.用いたデータベースはHeatStrokeDBで,熱中症の搬送人員と最高気温との相関関係を可視化し閾値をχ二乗検定するで作成したものである.
比較するツールはSET STATISTCS PROFILE ONコマンドである.クエリストアは筆者の環境では機能しなかった.
Co-evolution of human and technology
SQL Serverでサブクエリとウィンドウ関数のパフォーマンスを比較した.用いたデータベースはHeatStrokeDBで,熱中症の搬送人員と最高気温との相関関係を可視化し閾値をχ二乗検定するで作成したものである.
比較するツールはSET STATISTCS PROFILE ONコマンドである.クエリストアは筆者の環境では機能しなかった.
SQL Serverのクエリオプティマイザはテーブルの統計情報を見て実行計画を作成する.通常のデータ型であれば主キーなどの統計情報はあらかじめ作成されているが,今回空間データの統計情報を作成しようとして失敗したので共有する.
データベースのテーブルに適切なインデックスを設定するのはクエリを高速化するうえで重要な施策である.今回,空間演算にコストがかかっていたクエリが空間インデックスの設定により高速化したので報告する.
SQL Serverのクエリのコストを評価するには実行計画を取得する必要がある.最近のバージョンではクエリストアでクエリのコストを視覚化することが可能となった.今回はSQL Serverの実行計画を取得する従来の方法と,クエリストアを表示する方法を紹介する.元にした記事は日平均気温の過去30日間の移動平均をSQL Serverのウィンドウ関数を用いて計算するである.
標準SQLが再帰共通テーブル式に対応したのはSQL:1999からである.今回はSQL Serverの再帰共通テーブル式で連番を作成する.日付の連番も作成してみる.
オーストラリアでの住所からのジオコーディングはGeoscape社が担当しており,そのプロジェクト名をG-NAFという.オーストラリア政府から補助金を受けており,2029年まで無料公開されることが決まっている.
データ数は1500万件以上,空間参照系はGDA94(EPSG: 4283)またはGDA2020(EPSG: 7844)である.
今回はSQL Serverでデータベースからテーブル作成,データのインポート,テーブルへの主キーと外部キーの作成までを行う.
総務省の公開しているe-Statには社会疫学的指標が多く含まれる.今回熱中症搬送人員数に様々な指標を加えて解析してみた.
説明変数として日最高気温,日平均水蒸気圧,都道府県人口に加えて過去30日間の平均気温,エアコン保有台数,年間収入のジニ係数,光熱・水道費,実収入,第1次産業就業者比率,第2次産業就業者比率,都市公園数,都市緑化割合,自然公園割合,自然公園数,生活保護被保護人員を加えた.
すべての変数が有意であったが,VIFを見ると多重共線性を疑わせる変数もあり,良いモデルとは言えない結果となった.
熱中症の搬送人員数が月平均気温と負の相関があるとの情報を得た.普段涼しい地域ほど日最高気温の上昇に弱いという意味である.普段涼しいということを表現するには過去30日間の日平均気温の平均を取ればよいだろうと判断した.こうなるとSQL Serverのウィンドウ関数の出番である.
RからSQL Serverに接続する方法を試行錯誤していた.今回その方法を見つけたので備忘録として公開する.
前回の記事では2019年の都道府県別の熱中症搬送人員数を1枚のグラフで描いた.今回は都道府県別に2008年から2021年までの熱中症搬送人員数の予測と実際をEXCELの組み合わせグラフで描く.
Heat-related mortality: a review and exploration of heterogeneityというレビューでは人口密度が高いほど熱の影響が大きいことが示されている.その理由として高度に設計された環境では蓄熱量が大きく,換気が悪く,自動車やエアコン等の熱源が局在するいわゆる都市のヒートアイランド現象が起きているためであると説明している.
それを受けて,詳細は割愛するが,都道府県総人口をその可住地面積(e-Statより)で割った人口密度を投入してみた.するとその係数は大きさこそ小さいものの,符号は負となり,投入前よりもAICが改善した(488368->478801).人口密度が大きいほど搬送数が減少するという意味である.これはにわかには信じがたい.考えられる理由として,日本においては人口密度の高い都市部ほど空調導入率が高い可能性がある.しかし,空調導入率そのものの指標がないため,検証は困難である.