DuckDB in Actionを読んでいたら,Chapter.1 / Chapter.10 に「bar 関数」が出てきた📊 たくさん組み込み関数があるんだな〜と思って実際に試してみた❗️小ネタだけど検証ログを残しておく✍
ちなみに DuckDB のドキュメントだと Text Functionsのページに載っていた.
bar(x, min, max[, width])
お試し1
WITH
で映画のレーティングデータを適当に作って bar()
で棒グラフを作ってみた📊
⚫◗ WITH ratings(movie, rating) AS ( VALUES ('Movie A', 4.5), ('Movie B', 3.8), ('Movie C', 4.9), ('Movie D', 2.1), ('Movie E', 3.3) ) SELECT movie, rating, bar(rating, 0, 5) AS bar FROM ratings; ┌─────────┬──────────────┬─────────────────────────────────────────────────────────────────────────────────┐ │ movie │ rating │ bar │ │ varchar│ decimal(2,1) │ varchar│ ├─────────┼──────────────┼─────────────────────────────────────────────────────────────────────────────────┤ │ Movie A │ 4.5│ ████████████████████████████████████████████████████████████████████████ │ │ Movie B │ 3.8│ ████████████████████████████████████████████████████████████▊ │ │ Movie C │ 4.9│ ██████████████████████████████████████████████████████████████████████████████▍ │ │ Movie D │ 2.1│ █████████████████████████████████▌ │ │ Movie E │ 3.3│ ████████████████████████████████████████████████████▊ │ └─────────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────┘
お試し2
個人的な検証用 AWS アカウントで AWS Data Exportsの Cost and Usage Reports 2.0 (CUR 2.0)データを Parquet 形式でエクスポートしている.kakakakakku-cur-00001.snappy.parquet
をローカルに落としてきて,2025/01/01
から 2025/01/07
の1週間でサービス別の合計金額から棒グラフを作ってみた📊
検証する日以外は基本的に課金されないようにしていて,棒グラフの結果は微妙だけど,期待した結果が取得できている👌
SELECT line_item_product_code, SUM(CAST(line_item_unblended_cost ASDECIMAL(16,8))) AS sum_line_item_unblended_cost, bar(sum_line_item_unblended_cost, 0, 0.6) AS bar FROM'kakakakakku-cur-00001.snappy.parquet'WHERE STRFTIME(line_item_usage_start_date, '%Y-%m-%d') BETWEEN'2025-01-01'AND'2025-01-07'GROUPBY line_item_product_code ORDERBY sum_line_item_unblended_cost DESC; ┌────────────────────────┬──────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────┐ │ line_item_product_code │ sum_line_item_unblended_cost │ bar │ │ varchar│ decimal(38,8) │ varchar│ ├────────────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────┤ │ AmazonRoute53 │ 0.55000000│ █████████████████████████████████████████████████████████████████████████▎ │ │ AmazonS3 │ 0.00122256│ ▏ │ │ AWSCloudShell │ 0.00000116│ │ │ awskms │ 0.00000000│ │ │ AWSCloudFormation │ 0.00000000│ │ │ AWSEvents │ 0.00000000│ │ │ AWSDataTransfer │ 0.00000000│ │ │ AmazonCloudWatch │ 0.00000000│ │ └────────────────────────┴──────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────┘
関連情報
AWS CDK で Cost and Usage Reports 2.0 (CUR 2.0) エクスポートを設定する📝
CUR 2.0 データからコスト分析をするときのクエリ例を探すときは「AWS Well-Architected Cost & Usage Report Library」が参考になる📝(一部 CUR 2.0 に対応していなかったりするけど Legacy CUR を読み替えれば OK👌)
CUR 2.0 データのカラムの意味を確認する場合はドキュメント参照📝