解析用タグ
MENU
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
PCやMacの性能を100%発揮
ソフトアンテナ
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
ソフトアンテナ
  • このブログに関して
  • 特集アーカイブ
    • Windows更新情報
    • Windows11使いこなし
    • Windows 10使いこなし
    • macOS/iOS/iPadOS更新情報
    • macOS使いこなし
    • iOS使いこなし
    • Webブラウザ更新情報
  • ソフトウェア
  • Windows
  • Mac
  • iOS
  • セール
  1. ホーム
  2. レビュー
  3. PRQL - SQLを置き換えを目指すモダンなデータ変換言語

PRQL - SQLを置き換えを目指すモダンなデータ変換言語

2022 6/28
レビュー
2022年6月28日
  • URLをコピーしました!

S 20220628 110143

現在データベース(RDBMS)を操作する言語としては、「SQL」が最も普及しています。

SQLは多機能で長い歴史を持ちますが、英語風の構文を採用し、複雑な問い合わせを行わなければならない場合、ベテランの開発者でも頭を悩ませることになりがちです。

「PRQL」は、この欠点を解決すべく開発が進められているデータ変換言語です。可読性が高く、明示的かつ宣言的で、SQLとは異なり、論理的な変換のパイプラインを形成し、変数や関数などの抽象化された機能をサポートしています。SQLにトランスパイルするため、SQLを使用する全てのデータベースで使用することができます。

例えば従業員テーブルから、米国の従業員の数、最大、最小のサラリーを探す場合、以下のような構文を使用します。

from employees
filter country == "USA"                       # Each line transforms the previous result.
aggregate [                                   # `aggregate` reduces column to a value.
  max salary,
  min salary,
  count,                                      # Closing commas are allowed :)
]

これはSQLでは以下のようになります。

SELECT
  MAX(salary),
  MIN(salary),
  COUNT(*)
FROM
  employees
WHERE
  country = 'USA'

この例ではそれほどでもありませんが、より複雑な例ではPRQLの方が読みやすくなります。

PRQL:

from employees
filter start_date > @2021-01-01               # Clear date syntax.
derive [                                      # `derive` adds columns / variables.
  gross_salary = salary + (tax ?? 0),         # Terse coalesce
  gross_cost = gross_salary + benefits_cost,  # Variables can use other variables.
]
filter gross_cost > 0
group [title, country] (                      # `group` runs a pipeline over each group.
  aggregate [                                 # `aggregate` reduces each group to a row.
    average gross_salary,
    sum_gross_cost = sum gross_cost,          # `=` sets a column name.
  ]
)
filter sum_gross_cost > 100000                # Identical syntax for SQL's `WHERE` & `HAVING`.
derive id = f"{title}_{country}"              # F-strings like python.
sort [sum_gross_cost, -country]               # `-country` means descending order.
take 1..20                                    # Range expressions (also valid here as `take 20`).

SQL:

output.sql
SELECT
  title,
  country,
  AVG(salary + COALESCE(tax, 0)),
  SUM(salary + COALESCE(tax, 0) + benefits_cost) AS sum_gross_cost,
  CONCAT(title, '_', country) AS id
FROM
  employees
WHERE
  start_date > DATE '2021-01-01'
  AND salary + COALESCE(tax, 0) + benefits_cost > 0
GROUP BY
  title,
  country
HAVING
  SUM(salary + COALESCE(tax, 0) + benefits_cost) > 100000
ORDER BY
  sum_gross_cost,
  country DESC
LIMIT
  20
目次

PRQLの使用方法

PRQLの使用方法を学びたい場合「PRQL Playground」を使用するのが簡単です。

S 20220628 111607

▲画面の左側にPRQLを入力すると、SQLへの変換結果が右側に表示されます。PRQLの例文はこちらで確認可能です。

言語の仕様は「PRQL Language Book」で確認可能です。

プログラムから使いたい場合、Pythonバインディングの「prql-python」や、JavaScriptバインディングの「prql-js」、Rustで書かれたコンパイラ「prql-compiler」などを使用することができます。

まとめ

データベース操作言語として、現状ではSQLが圧倒的ですが、PRQLが普及すればより使いやすい問い合わせ言語がさまざまな場所で活用できることになるかもしれません。Hacker NewsでもPRQLの可能性に関する議論が行われています。ハッカー達がどのようにこのプロジェクトをとらえているのか、知りたい方は確認してみてはいかがでしょうか。

レビュー
sql
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 【本日限定】人気コミックが多数対象「Kindle本5点まとめて買うと さらに10%ポイント還元」キャンペーンが開催中
  • 多機能ペイントアプリ「MyBrushes」がセール中の本日のアプリセールまとめ

関連記事

  • 玄人志向のグラボの温度や回転数を確認する方法
    2023年3月26日
  • The Magic Highlighter - Webページを自動的にハイライトしてくれるSafari拡張機能
    2023年3月22日
  • GEOのコスパ最強ワイヤレスイヤホン「GRFD-SWE100QT13」の思わぬ落とし穴とは
    2023年3月11日
  • グラボが垂れてこないように「Jingelmall GPUサポート」を装着してみた
    2023年3月8日
  • MINIX From Scratch - MINIX 3を動かしながら学習するためのプロジェクト
    2023年2月28日
  • Shell GPT - ChatGPTをコマンドラインから呼び出すことができるユーティリティ
    2023年2月17日
  • AmazonでJUNNUP製のワイヤレストラックボール2022年NEWモデルを購入してみた。M575Sとの比較など
    2023年2月4日
  • stail.sh - 標準入力の最後のn行を継続的に表示する事ができるユーティリティ
    2023年2月2日
スポンサーリンク
サイト内検索
特集アーカイブ
  • Windows更新情報
  • Windows11使いこなし
  • Windows 10使いこなし
  • macOS/iOS/iPadOS更新情報
  • macOS使いこなし
  • iOS使いこなし
  • Webブラウザ更新情報
Feedlyに登録

登録お願いします!

follow us in feedly

人気記事
  • S 20230324 095954 Windows 11で「ローカルセキュリティ機関の保護がオフになっている」との警告が表示されユーザーがパニックに
  • S 20220318 94447 Windows Next Valley(Windows 12)のシステム要件はこうなる
  • Pexels photo 544295 LinuxがmacOSよりもAppleのハードウェアに貢献している
  • Start Folders Microsoft、Windows 11 KB5023778でスタートメニュー広告を導入
  • S 20230323 105444 Microsoft、Windows 11対応PCに「標準ハードウェアセキュリティはサポートされていません」と表示されるバグをどうしても修正できない
  • 1679398207 no tpm source scott windows 11 forum Windows 11対応PCでTPMが検出されないのはバギーなMicrosoft Defenderが原因か?
  • S 20230325 100206 Microsoftが無料のWindows 11仮想マシンを更新し「Moment 2」に対応
  • Windows 10 logo Windows 10の累積アップデートKB5023696でも問題が発生中
  • S 20230329 095028 Windows 11のスタートメニュー広告を非表示にする方法
  • S 20221123 111042 Windows 11のタスクトレイ時計の秒表示を有効にする方法
カテゴリー
タグ
Amazon Android App Apple applewatch appsale Chrome Edge Firefox Git Github Google iOS iPad ipados iPhone iPhone6 iphone7 iphone8 iTunes JavaScript Kindle Linux Mac MacBook MacBookPro macos Microsoft Nintendo OS X OSX Parallels Rails Ruby Sale Steam Swift Twitter VMware Windows windows7 windows10 windows11 Wine Yosemite
新着記事
  • Amazonでパナソニックエネループなど乾電池がお買い得【新生活SALE FINAL】
  • 美しい3D地球儀で地理を学ぶことが出来る「Earth 3D - World Atlas」がセール中!本日のアプリセールまとめ
  • 【2023年4月分】Kindle月替わりセールが更新 - イシューからはじめよなどが対象
src256
ソフトアンテナを開発しています。

Windows/Mac/Linux全部使用中。ソフトウェア、ハードウェアいろいろなモノに興味があります。

好きなエディタはEmacs。好きな言語はRubyです。


srcw.net
  • プライバシーポリシー

© 2022 ソフトアンテナ

目次