sq is a free/libre open-source data wrangling swiss-army knife to inspect, query, join, import, and export data. You could think of sq as jq for databases and documents, facilitating one-liners like:
きっかけtom__boさんが書かれた8.0.22でのprepared statementの挙動変化 で、ORDER BY に列番号を指定する問題に注目が集まりました。 その中で紹介されていた、 For a prepared statement of the form SELECT expr1, expr2, … FROM table ORDER BY ?, passing an integer value N for the parameter no longer causes ordering of the results by the Nth expression in the select list; the results are no longer ordered, as is expected with ORDER BY constant. 「the results are n
絶対時刻と概念時刻 2015年1月1日00:00:00 という時刻表記は、地球上のどこで読んだかによって意味が変わってしまいます。このような時刻のことを 概念時刻 と呼ぶことにしましょう。ボジョレー・ヌーボーの解禁時刻、11月第3木曜日00:00:00も概念時刻だからこそ世界各地で解禁時刻が違い、バブル期は日本が世界で最初に解禁されるって盛り上がったものです。 2015年1月1日00:00:00(日本時間)、これなら 絶対時刻 です。世界のどこで読もうと、ある一瞬を意味します。これは2014年12月31日15:00:00(グリニッジ時間)と同じ瞬間を表しており、前者と後者は同じ瞬間の別表記に過ぎません。 timestamp with time zone OracleおよびPostgreSQLのtimestamp with time zone型が格納する値はその名前に反し、絶対時刻です。 タ
はじめに 最近 𝕏 で, Go のプロジェクトで起こっていたタイムゾーンに起因するトラブルをきっかけとして話を広げていったポストがありましたが,そのとき意外と反響がありました。 その一方で,時間をかけて設計された社内の PHP プロジェクトでは比較的トラブル少なく解決できているので,その知見を共有していこうと思います。 (将来的には Go のプロジェクトにも知見を応用できればいいなと考えています) データベースについて RDBMS の選定 さて,まず Laravel にフォーカスした話をする前に,データベース上での日付時刻のデータ型の選び方というアプローチからこの記事を書こうと思ったのですが,さらにその前に使用する RDBMS を決めなければなりませんね。 MySQL か Postgres を選ぶ状況が多いと思うので,この 2 つに絞って回答します。 Postgres を使ってください。
拙著『達人に学ぶ SQL徹底指南書』の中で、EXISTS述語の使い方を解説している章があるのだが、そこでEXISTS述語だけが唯一SQLの中で二階の述語である、ということを説明している。これはEXISTS述語だけが行の集合を引数にとる述語だからである。それは分かるのだが、なぜ述語論理を考えた人(具体的にはゴットロープ・フレーゲ。タイトル画像のおじさんである)はこんな着想を得たのか、そこが分かりにくいという質問をしばしば受けることがある。確かに、数ある述語の中でなぜ「存在する」だけが二階の述語であるのか、というは直観的にすこし分かりにくい。なぜフレーゲはこんなことを考えたのだろう? この点について、述語論理の創始者でもあるフレーゲの議論を参照しながらかみ砕いて見ていきたいと思う。かなり理論的かつ哲学的な話になるので、興味ない方は読み飛ばしてもらってかまわない。とくにSQLの理解に支障のある話
はじめに 本稿では分析用クエリをスラスラ書けるようになるまでの勉強方法や書き方のコツをまとめてみました。具体的には、自分がクエリを書けるようになるまでに利用した教材と、普段クエリを書く際に意識していることを言語化しています。 想定読者として、SQLをガンガン書く予定の新卒のデータアナリスト/データサイエンティストを想定しています。 勉強方法 基礎の基礎をサッと座学で勉強してから、実践教材で実際にクエリを書くのが望ましいです。 実務で使える分析クエリを書けるようになるためには、実務経験を積むのが一番良いですが、だからといって座学を御座なりにして良いというわけではありません。SQLに自信がない人は、一度基礎に立ち返って文法の理解度を確認した方が良いと思います。 書籍 SQL 第2版: ゼロからはじめるデータベース操作 前提として、SQLに関する書籍の多くがデータベース運用/構築に関する書籍がほ
こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見るのが早いでしょう。次のログはArticlesController#indexで実行されるクエリの例です。 Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* app/controllers/artic
序文 私の仕事は、DBエンジニアです。といっても別に望んでデータベースの世界へきたわけではなく、当初、私はこの分野が面白くありませんでした。「Web系は花形、データベースは日陰」という言葉も囁かれていました。今でも囁かれているかもしれません。 ですが、しばらくデータベースを触っているうちに、私はこの世界にとても興味深いテーマが多くあることを知りました。なぜもっと早く気づかなかったのか、後悔することしきりです。 もちろん、自分の不明が最大の原因ですが、この世界に足を踏み入れた当時、先生も、導きの書となる入門書もなかったことも事実です。 今でこそバイブルと仰ぐ『プログラマのためのSQL 第2版』も新入社員には敷居が高すぎました (2015年2月追記:その後、自分で第4版を訳出できたのだから、 人生は何があるか分からないものです)。 そこで、です。このサイトの目的は、データベースの世界に足を踏み
データベースとテーブルの作成 テスト用のデータベースtestdbを作成し、パフォーマンスチューニングを検証するためのcompanyおよびpersonテーブルを定義します。 CREATE DATABASE testdb; USE testdb; CREATE TABLE company ( company_id INT AUTO_INCREMENT PRIMARY KEY, company_name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE person ( person_id INT AUTO_INCREMENT PRIMARY KEY, company_id INT, person_name VARCHAR(255) NOT NULL, email VARCH
色々古くなったので 1 から書き直した DuckDB メモ v2 モチベーション JSONL を読み込んで解析するツールが欲しかった ログを読み込ませたいので圧縮機能は必須 自社のパッケージ製品が出力する JSONL を読み込んで解析できる仕組み 顧客が問題解析を気軽にできるようにしたい 顧客向けツールとして提供したい つまり顧客環境で動かしたい 1 バイナリ OSS として提供したい Apache-2.0 として公開したい ログファイルは大きくても 100 GB は行かない もともと Go + SQLite + JSONB で検討していた SQL で書きたい SQLite ファイルとして書き出したい SQLite ファイルフォーマットは信頼できる S3 などにファイルを置いておくだけにしたい クラウド版に組み込みたい 顧客毎に duckdb ファイル作ればいいのでは? duckdb ファ
SQLにおいて、サブクエリは可読性下がるからWITH句を使えという話をしばしば聞く。 ただ、最近あえてサブクエリで記述している人がいたので WITH句とサブクエリで何が違うか について考えてみた。 同じ抽出内容だが片方はWITH句、片方はサブクエリで書いた以下のSQLをベースに話す。 WITH句 WITH sub1 AS ( SELECT aaa ,bbb FROM tbl1 ) ,sub2 AS ( SELECT xxx ,yyy FROM tbl2 ) SELECT sub1.aaa ,sub1.bbb ,sub2.xxx ,sub2.yyy FROM sub1 INNER JOIN sub2 ON sub1.aaa = sub2.xxx ; サブクエリ SELECT sub1.aaa ,sub1.bbb ,sub2.xxx ,sub2.yyy FROM (SELECT aaa ,bb
今週はちょっと色々あって更新ができず....不甲斐ない。。 概要 社内のPdMがWITH句を使ってデータ抽出していたのを見て、無意識にWITH句を避けていた自分に気づいた。。 可読性はいいけど、、、、自分だったら今までの経験上サブクエリにするだろうな~と。 でもそれってなんで?って言われると、「なんかメモリがどうのこうので...」くらいにしか説明できず上手く言語化できずだったので改めて調べてみた。 WITH句の何がいいの WITH句の良さはその圧倒的な可読性の良さです。 複雑なクエリを構築しないといけない時、単に自分用だけであれば複雑かつ汚くてもまだ譲歩できます。 しかし、Metabaseなどで自分以外の人も管理する場合は、SQLといえど可読性は大事にしたいところです。 下記の例は、商品の累計売り上げの順位を算出するSQLです。 テーブルの中身が分からなくとも、ある程度なにをしているのかわ
まとめ sqlc-gen-typescript かなり良い 自分が TypeScript でウェブアプリを利用するなら間違いなく sqlc を選択する SQL は共通言語という点で本当に偉大 sqlc とは sqlc とは Go で書かれた SQL を元にコードを生成するツール。 なぜ sqlc ? 結局、それぞれの ORM 固有の技術を覚えるくらいなら SQL を覚えた方が早い 拡張に ORM が対応していようがいまいが関係ない SQL パーサーが pg_query_go を利用しているので信頼できる sqlc は PostgreSQL だけなの? sqlc は MySQL や SQLite にも対応している。 sqlc は Go だけなの? sqlc は Wasm でプラグインが書けるようになってきており、つい最近 TypeScript 版がリリースされた。 現時点では、 Postgr
eventid venueid catid dateid eventname starttime 4410 7 9 1836 Linkin Park 2008-01-10 14:00:00 3044 245 7 1843 The Frogs 2008-01-17 15:00:00 2428 243 7 1854 The Frogs 2008-01-28 19:00:00 2360 238 7 1856 Macbeth 2008-01-30 19:30:00 8596 112 9 1859 Missy Higgins 2008-02-02 15:00:00 2911 231 7 1873 November 2008-02-16 19:30:00 1278 247 6 1889 High Society 2008-03-04 20:00:00 6583 123 9 1891 Black Eye
「静的解析ツールで生まれたSQLインジェクション」というタイトルで登壇したのは、小川 氏。「面白かった脆弱性」について解説し合い、脆弱性に関する知識を深めるためのイベント「Security․Tokyo #2」で、静的解析ツールによって生まれたSQLインジェクションの事例について発表しました。 登壇者の自己紹介 小川氏:小川と申します。「静的解析ツールで生まれたSQLインジェクション」というタイトルで発表いたします。よろしくお願いします。 自己紹介を簡単に。経歴ですが、昔学生の時にWebアプリ開発のバイトをしていて、就職後は10年ぐらいぜんぜん違う、製造業で働いていました。ずっとパソコンを見ていたら目が悪くなるかなと思ってほかの業界に行ったのですが、結局ずっとExcelやWordを見ていて、あまり変わりませんでした。 結局やはりITだなと思って、最近root ipという会社に転職して、Bto
はじめに こんにちは。ブランドソリューション開発本部FAANSバックエンドブロックの佐野です。普段はサーバーサイドエンジニアとして、FAANSのバックエンドシステムを開発しています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗で働くショップスタッフの販売サポートツールです。例えば、コーディネート投稿機能や成果確認機能などを備えています。投稿されたコーディネートはZOZOTOWNやWEAR、Yahoo!ショッピング、ブランド様のECサイトへの連携が可能です。成果確認機能では、投稿されたコーディネート経由のEC売上やコーディネート閲覧数などの成果を可視化しています。 本記事では、成果データの集計処理におけるBigQueryのクエリ実行処理のユニットテストをGoで実装した取り組みと、その際の工夫についてご紹介します。 目次 はじめに 目次 成果データの集計処理とは 抱え
はじめのご挨拶 はじめまして。BEENOSの鈴木です。 普段はBEENOSグループのtenso株式会社でヘルプデスク業務に従事しておりますが、たまにサービス関連のデータベース、MySQLのチューニングや調査などもしております。 今回、普段から触っているMySQLのチューニング勉強会を実施しましたので、その内容を少し公開したいと思います。 勉強会を開催しようとしたきっかけ tenso株式会社の開発チームには、SREチーム(運用チーム)があり、元々は私も所属しておりました。 SREチームに新規メンバーが参入してきたこともあり、改めてデータベースと向き合う人のために、まずはSQLのチューニングを覚えてもらいたいとの要望があり、開催することにしました。 また、BEENOS全体としても開発エンジニアがコードを書くだけでなく、コードに含まれているSQLがどのように動くかを把握しパフォーマンスの良いSQ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く