タグ

SQLに関するymym3412のブックマーク (19)

  • データモデリングでよく利用するBigQuery SQLのクエリパターン

    記事は、データ推進室 Advent Calendar 2024 24日目の記事です はじめに こんにちは。HR領域でアナリティクスエンジニアのテックリードをしている山家雄介です。 アナリティクスエンジニアが担当する業務の一つに、データ利用者向けのいわゆるデータマートの設計・開発があります。これは、さまざまな仕様のデータソースを適切に組み合わせて、データ利用者の業務上の目的を達成することを助ける、平易に理解しやすく、ドキュメントも整備されたテーブル群を設計・開発し提供していく営みです。この業務を首尾よく進めていくには、dbtやDataformといったデータモデリングのツールの機能性を深く理解すると同時に、利用しているデータ分析基盤のSQLの仕様や機能性もよく理解しておく必要があります。 同じSQLという言語仕様の中でも、データマートの利用者によく利用される機能性と、それを開発するデータモデ

    データモデリングでよく利用するBigQuery SQLのクエリパターン
  • COUNT(*), COUNT(1), COUNT(expr) の違いを SQL 標準から理解する

    Disclaimer: 筆者は Snowflake で Senior Performance Engineer として働いていますが、この記事は公式の見解ではなく、あくまでも個人的な内容になります。 Intro COUNT(*), COUNT(1), COUNT(expr) の違いについて、おそらく NULL の扱いだったり、パフォーマンスだったりが違うんだろうな、という経験的に得られた知識があると思いますが、これを ANSI SQL 標準 (ISO/IEC 9075-2:2016) を元に体系的に整理します。 ANSI SQL における COUNT 集約関数の定義 ISO/IEC 9075-2:2016 の "4.16.4 Aggregate functions" にて、COUNT (および単一引数の集約関数) は下記のように定義されています。 COUNT(*) は集約内の行数を返す そ

    COUNT(*), COUNT(1), COUNT(expr) の違いを SQL 標準から理解する
    ymym3412
    ymym3412 2025/02/20
  • データ分析で用いるSQLクエリの設計方法

    STEP2. アウトプットを実現するために必要なデータソースを書き出す アウトプットの整理ができたら、今度はインプットとなるデータソースの整理を行いましょう。 必要なデータソースは要件から読み解くことができます。 今回は「10代のユーザーの月間視聴数(性別 / 動画カテゴリごと)の推移をグラフで見たい」という要件です。 ここから、この分析に必要なエンティティ(実体)とその属性、集計値を抽出しましょう。 エンティティと属性 ユーザー 性別 年代 動画 カテゴリ 集計値 視聴数 これらのデータを管理するテーブルを、調査やヒアリングを実施して探します。 今回は以下のテーブルを使用することとします。 user:ユーザー登録に必須な入力項目を管理するテーブル user_profile:ユーザーが登録後に設定できる任意の入力項目を管理するテーブル video:ユーザーが投稿した動画を管理するテーブル

    データ分析で用いるSQLクエリの設計方法
  • 複数の企業でデータエンジニアとして求められたスキル - yasuhisa's blog

    最近「ああ、これ前職でも前々職でもやったことあるなぁ」という仕事があった。データエンジニア(やその関連職種)として働き始めて約5年、3社でフルタイムとして働いてきて「このスキルは業界や組織規模が変わってもデータエンジニアとしてスキルを求められることが多いな」と感じたものをまとめてみることにした。棚卸し的な意味はあるが、特に転職用などではないです。 前提 どこでも必要とされたスキル データマネジメントに関する概要レベルの知識と実行力 セキュリティや法令に関する知識 事業ドメインに関する興味関心 他職種とのコミュニケーション能力 コスト管理 / コスト削減のスキル ソフトウェアエンジニアとしてのスキル DataOpsやアラートのハンドリング能力 分析用のSQLを書く力 古いテーブルやデータパイプラインを置き換えていくスキルや胆力 あるとやりやすいスキル 関連部署の動きを何となく把握しておく力

    複数の企業でデータエンジニアとして求められたスキル - yasuhisa's blog
  • 新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました | フューチャー技術ブログ

    コアテクノロジーグループの山田です。 先日、新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました 🎉 このツールは弊社が公開しているPostgreSQL向けのSQLコーディング規約に基づき、SQL文をフォーマットするツールです。 弊社でのSQLフォーマッター開発の取り組み元々弊社ではuroboroSQL Formatter(以下uroboroSQL Formatterを旧版、uroboroSQL-fmtを新版と呼ぶ)というSQLフォーマッターを公開していました。旧版は 字句解析して得られたトークンを基にフォーマットするという設計になっていたため、SELECT句のエイリアス補完といった文法を考慮する必要のある機能の追加が困難 Pythonで書かれておりVSCode拡張機能として動作させるのが難しい という課題を抱えており、それを解消するため新たなSQLフォーマッ

    新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました | フューチャー技術ブログ
  • GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部FAANSバックエンドブロックの佐野です。普段はサーバーサイドエンジニアとして、FAANSのバックエンドシステムを開発しています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗で働くショップスタッフの販売サポートツールです。例えば、コーディネート投稿機能や成果確認機能などを備えています。投稿されたコーディネートはZOZOTOWNやWEAR、Yahoo!ショッピング、ブランド様のECサイトへの連携が可能です。成果確認機能では、投稿されたコーディネート経由のEC売上やコーディネート閲覧数などの成果を可視化しています。 記事では、成果データの集計処理におけるBigQueryのクエリ実行処理のユニットテストをGoで実装した取り組みと、その際の工夫についてご紹介します。 目次 はじめに 目次 成果データの集計処理とは 抱え

    GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG
  • SQL Chat

    Chat-based SQL Client and Editor for the next decade

  • Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス

    読者対象 ある程度データベースに関する知識を持っている,経験年数 1 年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降 id (データ型と INSERT 時のデフォルト埋め) 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7(ドラフト): 単調増加であるタイムスタンプとラ

    Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス
  • オレ的EXPLAIN技を語っちゃうゾ - Qiita

    メリークリスマス 記事はPostgreSQL Advent Calendar 2021の25日目です。今年も面白い記事がたくさん揃いましたね!!! さて、みなさん今年のPostgreSQLライフはどんな感じでしたでしょうか? 私はというと、なんだかチューニングばっかりやってました。1案件でいろいろお手伝いすることはまあまああったのですが、複数から次々チューニングの相談をもらって、歴代継承者の個性を発現したデクくんのごとく駆け回ったのが今年のハイライトです。 (この綱渡り感、、、伝われ!!!) 俺たちは雰囲気でチューニングしている 今回上手くいったけど、あの時たまたまひらめいた1案をぶつけてみたら効果でたのであって、次善の策なんてなかったけど??って毎回思ってるから、雰囲気でやっていると思う、マジで。コミュニティのノリだと笑いが起きていいんですけど、少しでも勝率を上げるために、若手の前でド

    オレ的EXPLAIN技を語っちゃうゾ - Qiita
  • SQL等価性検証ツールCosetteを使ってみた - Qiita

    はじめに 皆さん、SQLチューニングしてますか?(唐突) 私は仕事RDBMSSQLチューニングをすることが多いのですが、たまにチューニングの一環で SQL文の書き換え をすることがあります。 その際に問題になるのが、書き換えたSQL文が等価であるかどうかの確認が大変なことです。 SQL文を書き換えた場合には、想定通りの結果を取得できるか確認するために、テストをやり直す必要があります。 これが開発早期のフェーズならまだましなのですが、結合テスト以降だと手戻りも多くかなりコストがかかりますし、既に番運用が始まったシステムともなると、テスト自体が困難なこともあります。 また、複雑なSQL文だと網羅的なテストケースを作成すること自体が困難であるため、完全に正しいと確信することはできません。 なので、SQL文の書き換えの正しさを証明する良い手段はないかと考えていました。 SQLチューニングとは

    SQL等価性検証ツールCosetteを使ってみた - Qiita
    ymym3412
    ymym3412 2021/12/26
  • 実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial

    - PostgreSQLカンファレンス 2021 - チュートリアル - https://www.postgresql.jp/jpug-pgcon2021 - 詳細はこちら https://github.com/soudai/pgcon21j-tutorial

    実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
  • SQLが重いときに見るお気軽チューニング方法

    SQLのチューニング方法 昔Qiitaで書いたものをzennうつして、若干の修正、追加をしてみました。 ORACLEでの経験を元に書いていますがコストベースのリレーショナルデータべースなら大体共通の考え方だと思うので他にも使えると思います。 SQLのチューニングといえば比較的容易に済むインデックスをとりあえず作成する。といった対応を取られがちですが、数万レコード程度でのデータ量ではあまり効き目がなく(自分の経験則)、どちらかといえば、結合順が大幅に狂ってたりすることが原因のことが多かったりします。よって当にインデックスがないことが原因なのか?を熟考する必要があります。(例えばID以外のフラグとかコードに単項目indexを貼ってるのもみたことがあります。怖いけど実話) また、インデックスを作りすぎるとオプティマイザが狂いやすくなって他のSQLにも悪影響を及ぼしたりするので結構熟慮して追加

    SQLが重いときに見るお気軽チューニング方法
  • PostgreSQLを遅くしている犯人はどこだ?

    PostgreSQLを遅くしている犯人はどこだ?:Linuxトラブルシューティング探偵団(3)(1/3 ページ) NTTグループの各社で鳴らした俺たちLinuxトラブルシューティング探偵団は、各社で培ったOSS関連技術を手に、NTT OSSセンタに集められた。普段は基的にNTTグループのみを相手に活動しているが、それだけで終わる俺たちじゃあない。引き続きOSSに関するトラブルの解決過程を@ITで連載していくぜ。 ソースコードさえあればどんなトラブルでも解決する命知らず、不可能を可能にし、多くのバグを粉砕する、俺たちLinuxトラブルシューティング探偵団! 助けを借りたいときは、いつでもいってくれ! OS:高田哲生 俺はリーダー、高田哲生。Linuxの達人。俺のようにソースコードレベルでOSを理解している人間でなければ、百戦錬磨のLinuxトラブルシューティング探偵団のリーダーは務まらん。

    PostgreSQLを遅くしている犯人はどこだ?
  • PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)

    オープンソースカンファレンス2015 Spring/Tokyoでの 講演資料です。Read less

    PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
  • Cloud SQL でスロークエリを出力する

    Cloud SQLGCP)でスロークエリを出力する方法です。 ちなみにStackdriver Logging の料金が軽微ですがかかります。 MySQLの場合はここを見るといいのですが、Postgresの場合はなぜか同様のここをみても手順が書いていません。 ほぼ同様(フラグ名が異なる)ですが、Postgresqlの場合は ・まずCloud SQLの管理画面でスロークエリの出力を行いたいインスタンスの概要を開きます。 ・次に、上部の「編集」を押して下の方にある「設定オプション内」、「フラグ」をクリックして開きます。 ・「項目を追加」を押して「log_min_duration_statement」を選び、値を設定します。 -1を設定すると出力せず、0の場合はすべて出力、1以上の場合は1なら1ms以上のクエリをすべて出力します。 1秒以上のクエリを出力したければ1000と入れます。 ・「保存」

    Cloud SQL でスロークエリを出力する
  • Google の SQL parser/analyzer の ZetaSQL とは何であるか

    2019年4月に GoogleSQL parser/analyzer の ZetaSQL が公開されました。 現在 BigQuery Standard SQL や Cloud Spanner で実装されている SQL 方言であり、 Cloud Next 2019 で BigQuery UI から Cloud Dataflow で実行されるパイプラインを記述できる機能として発表された Cloud Dataflow SQL にも使われることがツイートからも見て取れます。 ZetaSQL については Google の外の人がまともに言及しているのを見たことがなく、聞いたことがないか様子見という人が多いと思うので分かっていることを書いていきます。 既存の文献から見る素性ZetaSQLSpannerSQL 実装について書かれた Spanner: Becoming a SQL Sys

  • 目指せ!!SQLの配列マスター - Qiita

    はじめに 最近仕事でBigQueryを触り始めたのですが、配列の処理に悪戦苦闘していました。 この記事では、私がBigQuery上でより上手く配列を扱うために調べたコトや取り組んだコトをまとめました。 なお、この記事ではUDFでJSを使わない方針で記述しています。 BigQueryで配列に関わる命令一覧 https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays?hl=ja https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators?hl=ja 上記の公式ドキュメントから配列が関係するものを引っ張ってきただけですので、あしからず。 操作系 ARRAY: サブクエリを配列化 ARRAY_CONCAT: 配

    目指せ!!SQLの配列マスター - Qiita
  • 検索ログから「じわじわ検索頻度が上昇しているキーワード」を見つける - クックパッド開発者ブログ

    こんにちは。トレンド調査ラボの井上寛之(@inohiro)です。 普段は法人向けサービス「たべみる」の開発を担当しています。 たべみるはクックパッドの検索ログを基にしたサービスで、任意のキーワードの検索頻度、キーワード同士の組み合わせ検索頻度、 およびそれらを地域や年代・性別で絞り込んで分析することができます。 トレンド調査ラボでは「たべみる」の開発のほか、 クックパッド上のトレンドを見つけるために日々調査を行っています。 ここでのトレンドとは、「流行っている」もしくは「流行りそう」といったものを指します。 消費者が気になっているキーワードが何かを知ることで、消費者が求めている情報を適切に提供できると考えています。 今回は、膨大な検索ログの中から「じわじわ検索頻度が上昇しているキーワード」を見つけるために 行ったことについて紹介したいと思います。 じわじわ検出 「じわじわ検索頻度が上昇して

    検索ログから「じわじわ検索頻度が上昇しているキーワード」を見つける - クックパッド開発者ブログ
  • sqlparseによるSQLのフォーマット - Qiita

    SQLをローカルでフォーマットするツールを探していてsqlparseというツールを見つけたので試してみました。 インストール sqlparseはPython製でpipを使ってインストールすることができます。 ウェブ上で使用する sqlparseはSQLFormatというオンラインサービスで使用されており、ブラウザやAPISQLを渡してフォーマットすることができます。 SQLFormat - Online SQL Formatter コマンドラインで使用する sqlparseをインストールすると使用可能になるsqlformatというコマンドに ファイルか標準入力でSQLを入力するとフォーマットされたSQLが出力されます。 -r で改行・インデント、-k upper でキーワードを大文字にすることができます。その他のオプションについては-h オプションで確認することができます。 $ SQL=

    sqlparseによるSQLのフォーマット - Qiita
  • 1