rito Backend EngineerTokyo, JapanPHP 5 技術者認定上級試験 認定者統計検定 3 級
DjangoCongressJP 2023で以下のトークを聞いて、久しぶりにセキュリティ熱が出てきたことから、SQLインジェクションについて調べていたところ、sqlmapというツールを見つけました。 sqlmapはオープンソースのSQLインジェクションに特化している侵入テストツールです。 今回は脆弱性を抱えるWebアプリケーションを構築して、そちらに対してsqlmapを使ってSQLインジェクションを体験してみます。 ※ 今回はSQLインジェクションの学習のためのものであり、自分が管理するシステム以外に対しては決して実行しないでください。 サイト所有者の合意無しにsqlmapを使ってペネトレーションテストをすることは止めてください。 sqlmapに対応しているDBは以下になります。メジャなーRDSであれば抑えられています。 MySQL Oracle PostgreSQL Microsoft
pglite + pgvector で文章の類似度検索を実装します。 動機 とにかく手っ取り早くローカルにデータを突っ込んでおいて検索する RAG の雛形がほしかったんですが、調べても大規模ストレージを前提とした大掛かりな実装が多いです。 スクリプトを書いたらポンと実行できるセットアップ不要なものがあると、色々と実験ができます。 mastra/rag を読んでたら、簡単にできる気がしたのでやりました。ただ、chunk のドキュメント分割相当のものはまだ作ってません。そこまで難しい概念でもないので、雑に作れそうではあります。 qrdrant も検討しましたが、サーバーを建てるのが面倒でした 準備: ベクトル化用の関数 今回は @ai-sdk/openai を使ってベクトル化をします // OPENAI_API_KEY= import { openai } from "@ai-sdk/open
はじめに データ活用と生成AI 構造化されたデータと生成AI 事例 Uber LinkedIn Pinterest さいごに はじめに ikki-sanのデータ活用の民主化へのコメントをそうだなと思いながら読んで、最近自分もそんな感じの領域のことをベンダー所属のプロダクトマネージャーとしてやっているので、考えていることをまとめてみる。 この数年間で「データの民主化」はイマイチ進まなかった印象ですが、その原因は「SQLの習得難易度」によるところが大きい。そこに関しては生成AIで相当解決されるはずなので、今後はデータの民主化がスタンダードになると予想しています。— ikki / stable代表 (@ikki_mz) 2025年4月7日 データ活用と生成AI これまで社内に蓄積された構造化されたデータを取得・操作するにはSQLおよびデータベースの理解が必要であり、その理解がない人たちは誰かにデ
これは何? 私tenajimaがデータ基盤のパイプラインを作るとき、レビューするときに意識している点を言語化したものです データ基盤を作る上での考え方の一つに役立てていただければ幸いです この記事の前提 dbtを使ったデータ基盤構築を念頭に置いて書いています、dbtの記法が出てきます CTEsが使える環境を想定しています 記事内でデータエンジニアもアナリティクスエンジニアも総称してデータエンジニアと呼んでいます データ基盤を「使う側」のクエリと「作る側」のクエリの違い 最近ではファーストキャリアからデータエンジニアの方も出てきているかもしれませんが、データサイエンティスト、アナリスト、ソフトウェアエンジニアを経験してデータエンジニアを行っている人が一般的と考えています。 特にデータサイエンティスト、アナリストからデータエンジニアへの転向は私の周りでは多いように感じており、その方達は(過去の
はじめに データアナリティクス事業本部の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
慣れないと使うのを忘れがちなQUALIFY句、実は非常に便利 SQLにおけるQUALIFY句 WINDOW関数は、SQLで一番最初につまづくポイントかもしれません。 OVER PARTITION BY ああ、憂鬱…そんな初学者の方も多いのではないでしょうか。 今回はそんなWINDOW関数の結果に基づいたフィルタをかけるのに便利な QUALIFY 句についてです。 使えるプラットフォームも限られていて、現状では MySQLやPostgreSQLのようなアプリケーション系のDBでは実装されておらず、Redshift, BigQuery, Snowflakeのような分析用のDBでしか使えないものでもあるため意外と知らない人も多い?のかもしれません。 しかし個人的にはかなり便利で抑えておきたい句の一つだと思っています。 QUALIFY句とは 早速QUALIFY句とはなんぞや、というところを説明しま
前の続きです。 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 年 ,年月 ,
はじめに ちょっととっつきにくいけどとっても便利な分析関数について、なるべく分かりやすく説明してみようと思います。Oracleを対象にしていますが、他のDBでもたぶん似たようなものでしょう(無責任)。 まず分析関数とは何をするものか、ですが、一言で言うと集合関数と同じ集計動作をそれぞれの行に制限範囲で実行するものです。ここでいう集合関数とは、MAXやSUMやAVG等、GROUP BYと共に使い行をまとめるて集計計算する関数ですね。分析関数は集合関数と同様の計算をしますが、集合関数と違い行をまとめません。それぞれの行で集計計算し結果を返します。ここが集合関数との大きな違いです。 また、集合関数ではGROUP BYの同じカラム値をもつ全行を一つに集計しますが、分析関数では集計対象となる行の範囲を任意で指定できます。関数に続くOVER句でこの範囲指定を行います。集合関数と分析関数は基本同じ名前な
背景と状況 新システムにバージョンアップする際、端境期には一定期間、現システムと新システムの両方にデータ入力が必要になる場合があります。マスター登録がその代表ですが往々にして、まだ本番稼働していない新システムに入力をし忘れてしまいます。そうなると入力漏れしたデータを探さなければなりません。 やりたいこと 2つのテーブルを比較して異なるレコードのみを出力したい。要はSQLでデータを比較したい。 ※IBM Db2 V11.1 Windowsで確認していますが他のDBMSでもできるはずです。 比較するテーブル 同じスキーマで内容の異なるテーブルを比較します。別のデータベースから一方のテーブルをコピーして名前を変更します。
LookML入門 はじめに この記事では LookMLの書き方を学習していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど) 誤りなどがあれば書き直していく予定です。なお、内容につきましては2023年8月9日時点の調査内容で記載しております。あらかじめご了承ください。 LookMLに入る前におさらい さて本題ですが、LookMLとはそもそもどんなものだったでしょうかここで少しだけおさらいしましょう。 LookML は、Looker Modeling Language の略です。セマンティック データモデルを作成するために Looker で使用される言語です。LookML を使用して、SQL データベース内のディメンション、集計、計算、およびデータの関係を記述できます。 Looker は、LookML で記述されたモデルを使用して、特定のデータベースに対す
クエリ レビュー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
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 に追加された 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
縦持ちから横持ちへの変換まず、横持ちにせず、縦持ちのまま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
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
概要 前処理大全を読み、以下の理由から感銘を受けたものを記載する。 データ分析で、これに近いことを頼まれた(このような面倒くさい処理は、データ分析ではよくある) こんなふうにSQLを書けるんだ。めっちゃ楽やんと知った。 詳しくは前処理大全を読むことをおすすめします。 データなども「前処理大全」のgithubにあります。 前提 以下のSQLはPostgreSQLのものです。(最下部の日付の計算以外はほかでも動きそう) 内容 最も多い価格帯(最頻値)の取得 予約を格納したテーブルから、最も頻出する価格帯を取得する。 正確な価格ではなく、ROUND関数を使って千円の桁で四捨五入をしたものを対象にする。 SQL
Tableau Prepを使ったSQLトレースを行い、快適なフロー設計を考える Tableauでプリセールスエンジニアをしている @rsugimura17 です。今回はTableau Prep Builder、Tableau Prep Conductor のSQL トレースを行い、快適なフロー設計を考えていきます。 Tableau Prepとは? データを結合、分析に適した形式へ変換、クリーニングするためのビジュアルかつ直接的な方法を提供する Tableau のデータ変換製品です。オンプレミスでもクラウドでも、データベースまたはスプレッドシートのどこにあってもデータに接続でき、多種多様なデータへのアクセス、組み合わせ、クリーニングがコーディングなしで行えます。Tableau Prep は2つの製品で構成されています。データフローを構築するための Tableau Prep Builder、そ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く