推しアイデア
サメのトラッキングデータ(CSV)をサメの種類ごとに表示!
サメのトラッキングデータ(CSV)をサメの種類ごとに表示!
縛りのDuckDBの特徴を活かすために、そこそこ規模の大きいデータをMap上に表示してSQLを叩きたかった
DuckDB DuckDB-Swift Map Kit TabularData SwiftUI
シャークトラッキングデータをもとにDuckDBのテーブルを作成し、ローカルでSQLを叩くことで10種類のサメのトラッキングデータの表示を切り替えています。 表示にはMapKitを使用し、実際のMap上に表示をしています。
(DuckDBに入門してみたより抜粋) DuckDBはOLAP(オンライン分散処理)分析に特化したデータベースです。 特に高速な処理を得意とし、かつ無料およびOSSライセンスで動作します。
・シンプル DuckDBは、コンパイル時も実行時も外部依存関係はありません。 DuckDBの構築に必要なのは、動作するC++11コンパイラーのみです。 ・豊富な機能 DuckDB は、本格的なデータ管理機能を提供します。 大規模な関数ライブラリ、ウィンドウ関数などを使用してSQLの複雑なクエリを広範囲にサポートしています。 DuckDB は Python および R に深く統合されており、効率的な対話型データ分析が可能です。 DuckDB は、Java、C、C++ などの API を提供します。 ・処理の速度 DuckDB は、オンライン分析処理 (OLAP)とも呼ばれる分析クエリ ワークロードをサポートするように設計されています。 これらのワークロードは、テーブル全体の集計や複数の大きなテーブル間の結合など、 格納されたデータセットの重要な部分を処理する複雑で比較的長時間実行されるクエリによって特徴付けられます。 データへの変更もかなり大規模になることが予想され、複数の行が追加されたり、テーブルの大部分が同時に変更または追加されたりします。 ・無料 DuckDB はオープンソースであり、ソース コード全体は GitHub で無料で入手できます。 私たちは、当社の行動規範を遵守する限り、誰からの貢献も歓迎します。
🦆🦆🦆🦆🦆🦆DuckDB入門🦆🦆🦆🦆🦆🦆 に違いについてまとめられている。
TABLE sharkData AS SELECT * FROM read_csv_auto('\(csvFileURL.path)');`
SELECT Shark, Depth, Latitude, Longitude FROM sharkData;
SELECT Shark, Depth, Latitude, Longitude FROM sharkData WHERE Shark = 'WS\(number)' USING SAMPLE 2000;
検索後Latitude, LongitudeをCLLocationCoordinate2Dの形式に
var frame = try await sharkStore.sharkTrackingNumber(number: 2) frame.combineColumns("Latitude", "Longitude", into: "location") { (latitude: Double?, longitude: Double?) -> CLLocationCoordinate2D? in guard let latitude = latitude, let longitude = longitude else { return nil } return CLLocationCoordinate2D(latitude: latitude, longitude: longitude) }