Quantcast
Channel: kakakakakku blog
Viewing all articles
Browse latest Browse all 917

DuckDB: bar 関数で棒グラフを作る

$
0
0

DuckDB in Actionを読んでいたら,Chapter.1 / Chapter.10 に「bar 関数」が出てきた📊 たくさん組み込み関数があるんだな〜と思って実際に試してみた❗️小ネタだけど検証ログを残しておく✍

ちなみに DuckDB のドキュメントだと Text Functionsのページに載っていた.

bar(x, min, max[, width])

duckdb.org

お試し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                                       │
│ varchardecimal(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 ExportsCost 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                                        │
│        varchardecimal(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) エクスポートを設定する📝

kakakakakku.hatenablog.com

CUR 2.0 データからコスト分析をするときのクエリ例を探すときは「AWS Well-Architected Cost & Usage Report Library」が参考になる📝(一部 CUR 2.0 に対応していなかったりするけど Legacy CUR を読み替えれば OK👌)

catalog.workshops.aws

CUR 2.0 データのカラムの意味を確認する場合はドキュメント参照📝

docs.aws.amazon.com


Viewing all articles
Browse latest Browse all 917

Trending Articles