タグ

sqlに関するmichael-unltdのブックマーク (82)

  • sqlmapを用いてSQLインジェクションを体験する

    DjangoCongressJP 2023で以下のトークを聞いて、久しぶりにセキュリティ熱が出てきたことから、SQLインジェクションについて調べていたところ、sqlmapというツールを見つけました。 sqlmapはオープンソースのSQLインジェクションに特化している侵入テストツールです。 今回は脆弱性を抱えるWebアプリケーションを構築して、そちらに対してsqlmapを使ってSQLインジェクションを体験してみます。 ※ 今回はSQLインジェクションの学習のためのものであり、自分が管理するシステム以外に対しては決して実行しないでください。 サイト所有者の合意無しにsqlmapを使ってペネトレーションテストをすることは止めてください。 sqlmapに対応しているDBは以下になります。メジャなーRDSであれば抑えられています。 MySQL Oracle PostgreSQL Microsoft

    sqlmapを用いてSQLインジェクションを体験する
    michael-unltd
    michael-unltd 2025/07/29
    “sqlmapを使ってSQLインジェクションを体験”
  • PGlite + pgvector で100行で実装するベクトル検索 (node/deno/drizzle)

    pglite + pgvector で文章の類似度検索を実装します。 動機 とにかく手っ取り早くローカルにデータを突っ込んでおいて検索する RAG の雛形がほしかったんですが、調べても大規模ストレージを前提とした大掛かりな実装が多いです。 スクリプトを書いたらポンと実行できるセットアップ不要なものがあると、色々と実験ができます。 mastra/rag を読んでたら、簡単にできる気がしたのでやりました。ただ、chunk のドキュメント分割相当のものはまだ作ってません。そこまで難しい概念でもないので、雑に作れそうではあります。 qrdrant も検討しましたが、サーバーを建てるのが面倒でした 準備: ベクトル化用の関数 今回は @ai-sdk/openai を使ってベクトル化をします // OPENAI_API_KEY= import { openai } from "@ai-sdk/open

    PGlite + pgvector で100行で実装するベクトル検索 (node/deno/drizzle)
  • Text-to-SQLのコモディティ化とデータ活用の民主化 - satoshihirose.log

    はじめに データ活用と生成AI 構造化されたデータと生成AI 事例 Uber LinkedIn Pinterest さいごに はじめに ikki-sanのデータ活用の民主化へのコメントをそうだなと思いながら読んで、最近自分もそんな感じの領域のことをベンダー所属のプロダクトマネージャーとしてやっているので、考えていることをまとめてみる。 この数年間で「データの民主化」はイマイチ進まなかった印象ですが、その原因は「SQLの習得難易度」によるところが大きい。そこに関しては生成AIで相当解決されるはずなので、今後はデータの民主化がスタンダードになると予想しています。— ikki / stable代表 (@ikki_mz) 2025年4月7日 データ活用と生成AI これまで社内に蓄積された構造化されたデータを取得・操作するにはSQLおよびデータベースの理解が必要であり、その理解がない人たちは誰かにデ

    Text-to-SQLのコモディティ化とデータ活用の民主化 - satoshihirose.log
    michael-unltd
    michael-unltd 2025/04/13
    “LinkedInではDataHubというOSSのデータカタログツールとDARWINというデータ分析プラットフォームを内製して運用しており、質問に答えるための継続的なメタデータの管理と参照を行なっている。”
  • データ基盤のためのリーダブルSQL

    これは何? 私tenajimaがデータ基盤のパイプラインを作るとき、レビューするときに意識している点を言語化したものです データ基盤を作る上での考え方の一つに役立てていただければ幸いです この記事の前提 dbtを使ったデータ基盤構築を念頭に置いて書いています、dbtの記法が出てきます CTEsが使える環境を想定しています 記事内でデータエンジニアもアナリティクスエンジニアも総称してデータエンジニアと呼んでいます データ基盤を「使う側」のクエリと「作る側」のクエリの違い 最近ではファーストキャリアからデータエンジニアの方も出てきているかもしれませんが、データサイエンティスト、アナリスト、ソフトウェアエンジニアを経験してデータエンジニアを行っている人が一般的と考えています。 特にデータサイエンティスト、アナリストからデータエンジニアへの転向は私の周りでは多いように感じており、その方達は(過去の

    データ基盤のためのリーダブルSQL
  • BigQueryのQUALIFY句を使ってみる | DevelopersIO

    はじめに データアナリティクス事業部のkobayashiです。 BigQueryのリリースノートをチェックしていたところ QUALIFY clauseがGAされていたので早速試してみました。 Release notes  |  BigQuery  |  Google Cloud Query syntax QUALIFY clause  |  BigQuery  |  Google Cloud Qualify句とは クエリで分析関数を使用した場合に分析関数の結果でフィルタリングを行えます。 機能を試してみる 早速Qualify句を試してみたいと思います。使うデータは以下のような気象データを扱ってみます。 date month city w_type temperature precipitation sunlight cloudage

    BigQueryのQUALIFY句を使ってみる | DevelopersIO
    michael-unltd
    michael-unltd 2025/03/17
    ”Qualify句を使ったパターン”
  • QUALIFY句の使い方を知りWITH句を削る | ABC DX Tech Blog

    慣れないと使うのを忘れがちなQUALIFY句、実は非常に便利 SQLにおけるQUALIFY句 WINDOW関数は、SQLで一番最初につまづくポイントかもしれません。 OVER PARTITION BY ああ、憂…そんな初学者の方も多いのではないでしょうか。 今回はそんなWINDOW関数の結果に基づいたフィルタをかけるのに便利な QUALIFY 句についてです。 使えるプラットフォームも限られていて、現状では MySQLやPostgreSQLのようなアプリケーション系のDBでは実装されておらず、Redshift, BigQuery, Snowflakeのような分析用のDBでしか使えないものでもあるため意外と知らない人も多い?のかもしれません。 しかし個人的にはかなり便利で抑えておきたい句の一つだと思っています。 QUALIFY句とは 早速QUALIFY句とはなんぞや、というところを説明しま

    QUALIFY句の使い方を知りWITH句を削る | ABC DX Tech Blog
    michael-unltd
    michael-unltd 2025/03/17
    “QUALIFY句の役割を端的に言うと、WINDOW関数の結果に対してのフィルタリングを行う”
  • SQL: Window関数を理解できた時の思い出2 - プログラマ38の日記

    前の続きです。 crmprogrammer38.hatenablog.com Window関数では、Windowの中で並び替えをした順番に各行で計算する仕組みがあります。累計の計算を例にします。(BIツールで、ランニングサムの名称がついていたりします) 以下の年別累計の項目は、年毎のWindowの中で年月の古い順に出費を足した値となります。 年 年月 出費 年別累計 2016 201611 27,000 27,000 2016 201612 24,000 51,000 2017 201701 18,000 18,000 2017 201702 3,000 21,000 2017 201703 15,000 36,000 2017 201704 27,000 63,000 これを出力するSQLは次になります。(rows betweenを省略しないで書いています) select 年 ,年月 ,

    SQL: Window関数を理解できた時の思い出2 - プログラマ38の日記
  • 分析関数(ウインドウ関数)をわかりやすく説明してみた

    はじめに ちょっととっつきにくいけどとっても便利な分析関数について、なるべく分かりやすく説明してみようと思います。Oracleを対象にしていますが、他のDBでもたぶん似たようなものでしょう(無責任)。 まず分析関数とは何をするものか、ですが、一言で言うと集合関数と同じ集計動作をそれぞれの行に制限範囲で実行するものです。ここでいう集合関数とは、MAXやSUMやAVG等、GROUP BYと共に使い行をまとめるて集計計算する関数ですね。分析関数は集合関数と同様の計算をしますが、集合関数と違い行をまとめません。それぞれの行で集計計算し結果を返します。ここが集合関数との大きな違いです。 また、集合関数ではGROUP BYの同じカラム値をもつ全行を一つに集計しますが、分析関数では集計対象となる行の範囲を任意で指定できます。関数に続くOVER句でこの範囲指定を行います。集合関数と分析関数は基同じ名前な

    分析関数(ウインドウ関数)をわかりやすく説明してみた
  • SQL:レコードの差異を見つけたい - Qiita

    背景と状況 新システムにバージョンアップする際、端境期には一定期間、現システムと新システムの両方にデータ入力が必要になる場合があります。マスター登録がその代表ですが往々にして、まだ番稼働していない新システムに入力をし忘れてしまいます。そうなると入力漏れしたデータを探さなければなりません。 やりたいこと 2つのテーブルを比較して異なるレコードのみを出力したい。要はSQLでデータを比較したい。 ※IBM Db2 V11.1 Windowsで確認していますが他のDBMSでもできるはずです。 比較するテーブル 同じスキーマで内容の異なるテーブルを比較します。別のデータベースから一方のテーブルをコピーして名前を変更します。 <-主キー-> MST_ID MST_TEXT MST_PRICE MST_DATE ----------- --------------- ----------- -----

    SQL:レコードの差異を見つけたい - Qiita
  • [Looker]LookML入門

    LookML入門 はじめに この記事では LookMLの書き方を学習していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど) 誤りなどがあれば書き直していく予定です。なお、内容につきましては2023年8月9日時点の調査内容で記載しております。あらかじめご了承ください。 LookMLに入る前におさらい さて題ですが、LookMLとはそもそもどんなものだったでしょうかここで少しだけおさらいしましょう。 LookML は、Looker Modeling Language の略です。セマンティック データモデルを作成するために Looker で使用される言語です。LookML を使用して、SQL データベース内のディメンション、集計、計算、およびデータの関係を記述できます。 Looker は、LookML で記述されたモデルを使用して、特定のデータベースに対す

    [Looker]LookML入門
  • 2024年お世話になったBigQueryクエリ3選

    クエリ レビューID毎の最新状態を取得したいので、以下の流れでクエリを記述します。 review_id でグループ化 取得したい列を STRUCT で集約 created_at の降順でソート LIMIT 1 OFFSET(0) で1件のみ取得 latest列で1段ネストするので SELECT latest.* で展開 SELECT review_id, latest.*, FROM ( SELECT review_id, ARRAY_AGG(STRUCT( star, content, created_at ) ORDER BY created_at DESC LIMIT 1) [OFFSET(0)] latest, FROM reviews GROUP BY ALL ) ちなみに、QUALIFY + ROW_NUMBER を使っても同様の結果を得ることができます。最新の1件と言うと R

    2024年お世話になったBigQueryクエリ3選
    michael-unltd
    michael-unltd 2024/12/20
    “最新の1件と言うと ROW_NUMBER が有名ですが、ARRAY_AGG の方が計算量は少ないため、ARRAY_AGG を利用する方が好ましいです。”
  • BigQueryのARRAYとSTRUCTを理解して使いこなす - G-gen Tech Blog

    G-gen の杉村です。BigQuery は通常の運用データベースと異なり、分析用データベースであることから、非正規化したテーブルを扱うことが多くなります。そのための独特のデータ型として、ARRAY (配列) と STRUCT (構造体) があります。これらについて解説します。 概要 ARRAY (配列) ARRAY とは サンプルテーブル SELECT SELECT 〜 WHERE SELECT 〜 CROSS JOIN SELECT (SELECT ~ UNNEST) CREATE TABLE / INSERT 制限 STRUCT (構造体) STRUCT とは サンプルテーブル SELECT SELECT 〜 WHERE CREATE TABLE / INSERT 制限 ARRAY<STRUCT> (ネストされた繰り返し列) ARRAY<STRUCT> とは サンプルテーブル SEL

    BigQueryのARRAYとSTRUCTを理解して使いこなす - G-gen Tech Blog
  • GoogleSQL の pipe syntax と Spanner Graph GQL を比較する

    この記事では BigQuery に追加された pipe syntax そのものについては他の記事に任せて pipe syntax と Cloud Spanner に追加された GQL の対応関係について書きます。 pipe syntax についてより知りたい人はここからリンクされている Google Cloud 公式のドキュメントや論文や Medium などのコミュニティの記事を読むと良いかもしれません。 導入 BigQuery に追加された pipe syntax 2024年10月8日付のリリースノートで BigQuery の pipe syntax の Preview が発表されました。 You can now use pipe syntax anywhere you write GoogleSQL. Pipe syntax supports a linear query struct

    GoogleSQL の pipe syntax と Spanner Graph GQL を比較する
    michael-unltd
    michael-unltd 2024/12/16
    “GoogleSQL Pipe Syntax”
  • SQLで縦持ちと横持ちを変形する | ブログ一覧 | DATUM STUDIO株式会社

    縦持ちから横持ちへの変換まず、横持ちにせず、縦持ちのままuser_id、areaごとの合計値を出力するには、以下のようにクエリを書けばOKです。 最終的に欲しいデータは、全てこの結果に含まれています。このクエリを、記事ではクエリ1と呼びます。 #クエリ1 select user_id, area, sum(amount) from sales group by user_id, area必要なデータが過不足なく得られたので、あとは上で得られたデータを横持ちに変換するだけです。 このデータを横持ちに変形するためには、以下のようにクエリ(以下クエリ2)を書き換えます。クエリ1で得られたデータは、クエリ2の中でxと名前をつけています。 #クエリ2 select user_id, max(case area when "Ginza" then amount else null end) as G

    SQLで縦持ちと横持ちを変形する | ブログ一覧 | DATUM STUDIO株式会社
  • SQL Training 2021

    バクラクでのSystem Risk Records導入による変化と改善の取り組み/Changes and Improvement Initiatives Resulting from the Implementation of System Risk Records

    SQL Training 2021
  • SQLによるデータ分析のテクニック - Qiita

    概要 前処理大全を読み、以下の理由から感銘を受けたものを記載する。 データ分析で、これに近いことを頼まれた(このような面倒くさい処理は、データ分析ではよくある) こんなふうにSQLを書けるんだ。めっちゃ楽やんと知った。 詳しくは前処理大全を読むことをおすすめします。 データなども「前処理大全」のgithubにあります。 前提 以下のSQLはPostgreSQLのものです。(最下部の日付の計算以外はほかでも動きそう) 内容 最も多い価格帯(最頻値)の取得 予約を格納したテーブルから、最も頻出する価格帯を取得する。 正確な価格ではなく、ROUND関数を使って千円の桁で四捨五入をしたものを対象にする。 SQL

    SQLによるデータ分析のテクニック - Qiita
  • GitHub - The-Japan-DataScientist-Society/100knocks-preprocess: データサイエンス100本ノック(構造化データ加工編)

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - The-Japan-DataScientist-Society/100knocks-preprocess: データサイエンス100本ノック(構造化データ加工編)
    michael-unltd
    michael-unltd 2024/10/31
    “データサイエンス100本ノック(構造化データ加工編)を実践するための演習問題とデータ、および環境構築のためのスクリプト一式”
  • マルチエージェントで性能が上がったText-to-SQLのいま/Text-to-SQL

    AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering

    マルチエージェントで性能が上がったText-to-SQLのいま/Text-to-SQL
  • Tableau Prepを使ったSQLトレースを行い、快適なフロー設計を考える

    Tableau Prepを使ったSQLトレースを行い、快適なフロー設計を考える Tableauでプリセールスエンジニアをしている @rsugimura17 です。今回はTableau Prep Builder、Tableau Prep Conductor のSQL トレースを行い、快適なフロー設計を考えていきます。 Tableau Prepとは? データを結合、分析に適した形式へ変換、クリーニングするためのビジュアルかつ直接的な方法を提供する Tableau のデータ変換製品です。オンプレミスでもクラウドでも、データベースまたはスプレッドシートのどこにあってもデータに接続でき、多種多様なデータへのアクセス、組み合わせ、クリーニングがコーディングなしで行えます。Tableau Prep は2つの製品で構成されています。データフローを構築するための Tableau Prep Builder、そ

    Tableau Prepを使ったSQLトレースを行い、快適なフロー設計を考える
  • 1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話

    2023/12/14「データ基盤×LLM」勉強会にて発表 https://forkwell.connpass.com/event/302234/

    1日50万件貯まるクエリのログを活かして、SQLの生成に挑戦している話