Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust on AWS でデータ分析 / 20260523iotlt-niigata-rust...
Search
kasacchiful
PRO
May 23, 2026
Programming
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rust on AWS でデータ分析 / 20260523iotlt-niigata-rust-on-aws
2026/05/23 (土) 開催の IoTLT新潟 Vol.17 で登壇した資料
イベントページ
https://iotlt.connpass.com/event/391502/
kasacchiful
PRO
May 23, 2026
More Decks by kasacchiful
See All by kasacchiful
Step Functions Express ワークフローの使い所 / 20260725jawsug-niigata-sado
kasacchiful
PRO
1
79
Step FunctionsでAIエージェント × 人の承認を試す / 20260705jawsug-hokurikushinkansen-agentcore-hitl-workflow
kasacchiful
PRO
0
91
上越のサメ食文化を訪ねて - 新潟市民の初体験レポ / ssmjp-shark
kasacchiful
PRO
1
83
Step Functionsで始めるサーバーレス入門 〜 つないで動かすAWSサーバーレス
kasacchiful
PRO
0
73
Amazon Q Developer CLI (現Kiro CLI) で作った 新潟ランチマップWebアプリのこれまでとこれから / 20260207jawsug-tochigi
kasacchiful
PRO
0
140
Amazon SageMaker Catalogの、AIエージェントによる自動データ分類機能を試してみようとしたが、できなかったので、代わりに最近構築したデータ連携基盤を紹介します / 20260117jawsug-fukui
kasacchiful
PRO
0
150
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
PRO
2
300
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
PRO
0
1k
ワイがおすすめする新潟の食 / 20250912jasst-niigata-lt
kasacchiful
PRO
1
73
Other Decks in Programming
See All in Programming
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
400
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
150
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
550
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
460
MySQLとPostgreSQLって何が違うの?
akagami
0
140
Go 1.27 における memory allocation の高速化
andpad
0
330
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.2k
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
380
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
110
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Agile that works and the tools we love
rasmusluckow
331
22k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
The SEO Collaboration Effect
kristinabergwall1
1
530
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
WCS-LA-2024
lcolladotor
0
810
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
280
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
710
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
None
None
None
Metadata: BuildMethod: rust-cargolambda cargo-lambda provided.al2023 [dependencies] lambda_runtime = "0.13" aws-sdk-s3
= "1" polars = { version = "0.50", features = ["lazy", "parquet", "temporal", "abs"] } tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
None
None
LazyFrame::scan_parquet(input, ScanArgsParquet::default())? .with_columns([ col("timestamp").dt().truncate(lit("1h")).alias("hour"), col("temperature").mean().over([col("device_id")]).alias("_dev_mean"), col("temperature").std(1).over([col("device_id")]).alias("_dev_std"), ]) .with_columns([ ((col("temperature") -
col("_dev_mean")).abs() .gt(lit(3.0) * col("_dev_std"))).alias("_is_anomaly"), col("status").eq(lit("error")).alias("_is_error"), ]) .group_by([col("device_id"), col("hour")]) .agg([ col("temperature").mean().alias("temp_mean"), col("_is_error").sum().alias("error_count"), col("_is_anomaly").sum().alias("anomaly_count"), ]) .sort(["device_id", "hour"], SortMultipleOptions::default()) .collect()?
df["hour"] = df["timestamp"].dt.floor("h") dev_stats = df.groupby("device_id")["temperature"].agg( _dev_mean="mean", _dev_std=lambda s: s.std(ddof=1),
) df = df.merge(dev_stats, left_on="device_id", right_index=True) df["_is_anomaly"] = ( (df["temperature"] - df["_dev_mean"]).abs() > 3.0 * df["_dev_std"] ) df["_is_error"] = df["status"].eq("error") agg = (df.groupby(["device_id", "hour"], sort=True) .agg(temp_mean=("temperature", "mean"), error_count=("_is_error", "sum"), anomaly_count=("_is_anomaly", "sum")) .reset_index())
None
None
None
None
None
None
None
None
None