mcpField
M
Miller

Miller

公式Agent-ready
github.comデータベース・データ10.1kmlr1 日前に更新
リポジトリ公式サイト

Miller について

Miller(mlr)は CSV、TSV、JSON などの構造化レコードを処理するコマンドラインツールです。フォーマット変換、集約、フィルタリング、統計計算に対応し、Unix パイプラインに自然に統合でき、繰り返し可能なデータ処理が実現できます。

主な機能

  1. 01複数フォーマット間でのデータ変換(CSV、JSON、TSV など)
  2. 02サマリー統計とデータ集約の計算
  3. 03フィールド選択とフィルタでデータを再構成

活用シーン

  1. 01分析ワークフローで構造化データを素早く変換・クリーニング
  2. 02再利用可能なデータ処理パイプラインの構築
  3. 03コマンドラインからログやデータセットを探索・集計

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install miller

インストール後にmlr --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
mlr --csv stats1 -a count -f status data.csv
02
mlr --icsv --ojson cat data.csv

詳細

Miller とは?

Miller は、CSV、TSV、JSON、JSON Lines、位置インデックス形式などのデータ形式に対応した、awk、sed、cut、join、sort のようなツールです。

Miller で何ができますか?

Miller では、CSV、TSV、JSON、JSON Lines、位置インデックス形式などの使い慣れた形式を使いながら、位置インデックスを数えずに名前付きフィールドを利用できます。さらに、既存のフィールドを使った新しいフィールドの追加、フィールドの削除、並べ替え、統計的な集計、見やすい形式での出力などを、その場で実行できます。

cover-art

  • Miller はキーと値のペアのデータを扱います。一方、使い慣れた Unix ツールは整数インデックスで指定するフィールドを扱います。後者の自然なデータ構造が配列なら、Miller の自然なデータ構造は挿入順を保持するハッシュマップです。

  • Miller は、使い慣れた CSV、TSV、JSON/JSON Linesをはじめとする、さまざまなデータ形式に対応しています。 (Miller は位置インデックス形式のデータにも対応しています!)

上の画像から、Miller がさまざまなデータ形式に共通する、キーと値のペアというテーマを取り入れていることがわかります。

インストール

お使いのシステム向けにビルド済みの Miller を入手できる可能性は十分にあります。 Ubuntu Ubuntu 16.04 LTS Fedora Debian Gentoo Pro-Linux Arch Linux NetBSD FreeBSD Anaconda Snap Homebrew/MacOSX MacPorts/MacOSX Chocolatey WinGet

OSインストールコマンド
Linuxyum install miller
apt-get install miller
snap install miller
Macbrew install miller
port install miller
Windowschoco install miller
winget install Miller.Miller
scoop install main/miller

パッケージのバージョン一覧については、README-versions.mdもご覧ください。長期サポート(LtS)リリースは、古いバージョンになる可能性が高い点にご注意ください。

ソースからのビルドもご覧ください。

機能

  • Miller は多目的です。データクリーニング、 データ削減、統計レポート、DevOps、システム 管理、ログファイル処理、フォーマット変換、 データベースクエリの後処理に役立ちます。

  • Miller を使って、ログファイルのデータを収集・加工できます。関連する サブストリームを選択してから CSV 形式に変換し、 すべてをメモリに読み込むデータフレームユーティリティに取り込んで、 統計処理やグラフィカルな処理をさらに行えます。

  • Miller は R、pandas などのデータ分析ツールを補完します。 Miller を使ってデータをクリーニングし、準備できます。 Miller だけで基本的な統計処理を行うこともできますが、ストリーミングデータ機能と シングルパスアルゴリズムを活用すれば、非常に大きなデータセットを削減できます。

  • Miller は SQL データベースを補完します。データベースにデータを 読み込む際や、データベースから取り出す際に、クライアント側でデータを分割、 加工、再フォーマットできます。また、ディスク上のデータファイルを急いで クエリする必要がある場合、セットアップ不要の単発タスクでも、 データベースの利点をいくつか活用できます。

  • Miller は、従来の Unix ツールの枠を超え、現代のNoSQLの世界に 完全に踏み込みます。レコードごとに異なるスキーマ(フィールド名)が 混在するデータを処理できるのは、Miller が本質的に備える レコードの異種性によるものです。

  • Miller はストリーミング処理に対応しています。ほとんどの操作では、 出力を生成する前に入力全体を読み込むのではなく、一度に1レコードだけを メモリに保持します。より多くのデータを保持する必要がある操作(sort、tac、stats1)では、 必要な分だけを保持します。そのため、機能上可能な場合は、システムで利用可能な RAM より大きなファイルも処理でき、tail -f の用途でも Miller を使用できます。

  • Miller はパイプと相性がよく、Unix ツールキットと相互運用できます。

  • Miller の入出力形式には、表形式の整形表示、位置による インデックス指定(Unix ツールキット形式)、CSV、TSV、JSON、JSON Lines などがあります。

  • Miller は形式間の変換を行います。

  • Miller の処理は形式を認識します。たとえば CSV の sort と tac では、ヘッダー行が先頭に保たれます。

  • Miller は Unix ツールキットに匹敵する高いパフォーマンスを備えています。

  • Miller は移植性の高い最新の Go で記述されており、実行時依存関係はありません。 単一のバイナリをダウンロードまたはコンパイルし、遠隔地のマシンに scp で転送すれば、 そのまま動作することが期待できます。

はじめに

deepwiki

その他のドキュメントへのリンク

コミュニティ

GitHub stars Homebrew downloads Conda downloads

All Contributors

ビルド状況

Multi-platform build status CodeQL status Codespell status 🧪 Snap Builds

ソースからビルドする

  • 最初に、次の操作を行います。
    • cd /where/you/want/to/put/the/source
    • git clone https://github.com/johnkerl/miller
    • cd miller
  • makeを使う場合:
    • ビルドするには、makeを実行します。数秒で完了し、Miller の実行ファイルである./mlr(Windows では.\mlr.exe)が生成されます。
    • テストを実行するには、make checkを実行します。
    • インストールするには、make installを実行します。実行ファイル/usr/local/bin/mlrとマニュアルページ/usr/local/share/man/man1/mlr.1がインストールされます(そのため、man mlrを実行できます)。
    • /usr/local以外の場所にインストールする場合は、make installの前に./configure --prefix=/some/install/pathを実行できます。
  • makeを使わない場合:
    • ビルドするには、go build github.com/johnkerl/miller/v6/cmd/mlrを実行します。
    • テストを実行するには、go test github.com/johnkerl/miller/v6/pkg/...とmlr regtestを実行します。
    • インストールするには、go install github.com/johnkerl/miller/v6/cmd/mlr@latestを実行すると、GOPATH/bin/mlrにインストールされます。
  • ソースからのビルドに関するドキュメントページも参照してください。
  • 開発者向けの詳細については、README-dev.mdを参照してください。

開発者向け

ライセンス

ライセンス:BSD2

Miller についてのユーザーの声

今日、Miller を知りました。CSV 用の jq のようなものです: https://t.co/pn5Ni241KM

また、「Miller は R や pandas などのデータ分析ツールを補完します。Miller を使ってデータをクリーンアップし、準備できます。」 @GreatBlueC @nfmcclure

— Adrien Trouillaud (@adrienjt) 2020年9月24日

あまり知られていない、スイスアーミーナイフのようなコマンドラインのチェーンソーです。

「Miller は、CSV、TSV、JSON などのデータに対する awk、sed、cut、join、sort のようなものです。」 https://t.co/TrQqSUK3KK

— Dirk Eddelbuettel (@eddelbuettel) February 28, 2017

Miller は CSV データを扱うのに最適なコマンドラインツールのようです。Sed、awk、cut、join がひとつにまとまっています: http://t.co/9BBb6VCZ6Y

— Mike Loukides (@mikeloukides) August 16, 2015

Miller は、CSV などの名前でインデックス化されたデータに対する sed、awk、cut、join、sort のようなものです: http://t.co/1zPbfg6B2W - 便利なツールです!

— Ilya Grigorik (@igrigorik) August 22, 2015

ちなみに、CSV を扱う CLI ツールとして Miller が最高だと思います。R に読み込むには大きすぎる CSV の前処理が必要なときに使っていました(今は vroom があるので、そういうケースは珍しいかもしれませんが……)https://t.co/kUjrSSGJoT

— Hiroaki Yutani (@yutannihilat_en) April 21, 2020

Miller:awk や sed などの *行を意識する* 定番ツールの制約を克服するために、@__jo_ker__ が開発した *フォーマットを認識する* データ加工ツールです。 https://t.co/LCyPkhYvt9

プロジェクトのウェブサイトは、優れたソフトウェアドキュメントの素晴らしい見本です!!

— Donny Daniel (@dnnydnl) September 9, 2018

なんてすごいデータ用スイスアーミーナイフでしょう!データベースのクリーニングや ETL の問題を解決するのに Miller を誰も勧めてくれなかったのはなぜでしょう https://t.co/JGQpmRAZLv

重要なデータ管理タスクに使える、驚くほど直感的なツールを開発した @__jo_ker__ におめでとうございます!#DataScienceandLaw #ComputationalLaw

— James Miller (@japanlawprof) June 12, 2018

🤯@__jo_ker__ の Miller は、あらゆる種類の表形式データを簡単に読み込み、変換し、書き出せます。単体で動作し、高速で、データのストリーミング処理向けに作られています(一度に 1 行ずつ処理するため、メモリより大きなファイルも扱えます)。

そして、ドキュメントが夢のようです。今朝ずっと読んでいました! https://t.co/Be2pGPZK6t

— Benjamin Wolfe (he/him) (@BenjaminWolfe) September 9, 2021

貢献者 ✨

Miller の改善に協力してくださったすべての素晴らしい方々に感謝します(絵文字一覧):

README の画像
Andrea Borruso

🤔 🎨
README の画像
Shaun Jackman

🤔
README の画像
Fred Trotter

🤔 🎨
README の画像
komosa

🤔
README の画像
jungle-boogie

🤔
README の画像
Thomas Klausner

🚇
README の画像
Stephen Kitt

📦
README の画像
Leah Neukirchen

🤔
README の画像
Luigi Baldoni

📦
README の画像
Hiroaki Yutani

🤔
README の画像
Daniel M. Drucker

🤔
README の画像
Nikos Alexandris

🤔
README の画像
kundeng

📦
README の画像
Victor Sergienko

📦
README の画像
Adrian Ho

🎨
README の画像
zachp

📦
README の画像
David Selassie

🤔
README の画像
Joel Parker Henderson

🤔
README の画像
Michel Ace

🤔
README の画像
Matus Goljer

🤔
README の画像
Richard Patel

📦
README の画像
Jakub Podlaha

🎨
README の画像
Miodrag Milić

📦
README の画像
Derek Mahar

🤔
README の画像
spmundi

🤔
README の画像
Peter Körner

🛡️
README の画像
rubyFeedback

🤔
README の画像
rbolsius

📦
README の画像
awildturtok

🤔
README の画像
agguser

🤔
README の画像
jganong

🤔
README の画像
Fulvio Scapin

🤔
README の画像
Jordan Torbiak

🤔
README の画像
Andreas Weber

🤔
README の画像
vapniks

📦
README の画像
Zombo

📦
README の画像
Brian Fulton-Howard

📦
README の画像
ChCyrill

🤔
README の画像
Jauder Ho

💻
README の画像
Paweł Sacawa

🐛
README の画像
schragge

📖
README の画像
Jordi

📖 🤔
README の画像

このプロジェクトは all-contributors 仕様に準拠しています。あらゆる形での貢献を歓迎します!

コメント