Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今さら聞けないシリーズ - はじめてのSQL

今さら聞けないシリーズ - はじめてのSQL

こちらのウェビナーのスライドです。

今さら聞けないシリーズ : はじめてのSQL
https://pages.databricks.com/webinar-202211-SQL.html

今さら聞けないSQL #SQL - Qiita https://qiita.com/taka_yayoi/items/da227cec883c410de78e

Takaaki Yayoi

May 13, 2024
Tweet

More Decks by Takaaki Yayoi

Other Decks in Technology

Transcript

  1. 自己紹介 弥生 隆明 (やよい たかあき) シニアソリューションアーキテクト ▪ 2020年からデータブリックス ジャパンにおいて、プレセー ルス、POCに従事

    ▪ 前職はコンサルティングファーム、総合電機メーカーにて データ分析・Webサービス構築などに従事。 インド赴任経験あり。 ▪ これまでに使ったことがあるDBMSはOracle, HiRDB, MySQL, SQL Serverなどです。 ▪ Qiitaでいろいろ書いています。
  2. ©2022 Databricks Inc. — All rights reserved 日本初のデータブリックス本を出版しました データブリックス クイックスタートガイド

    • 「データブリックスって聞くけど、一体どういうものなのだろうか」と思われている方、データブリックスを触り始めた方を対象として、 データブリックス・ジャパンのエンジニアの有志で本書を執筆しました。本書をご一読いただければ、データブリックスとは何か、 データブリックスをどのように使うのかを一通り理解できる内容となっています。 • データとAIを活用して業務を変えたい、機械学習モデルを本格的に運用することを前提としてデータ /AI基盤を構築したいと考えら れている方に本書が一助になれば幸いです。 1章 Databricks(データブリックス)とは? 1. はじめに 2. 背景 3. レイクハウスの誕生 4. データブリックスとは 5. コンセプト 6. アーキテクチャ 7. 主要機能 8. コスト 2章 データブリックスのセットアップ 1. データブリックスのセットアップ - AWS 2. Azure Databricksのセットアップ 3. データブリックスのセットアップ - Google Cloud 3章 データブリックスを使ってみる 1. データブリックスのユーザー・グループ 2. Databricksクラスター 3. Databricksノートブック 4. データブリックスのジョブ 4章 ユースケース別ガイド 1. データエンジニアリング 2. 機械学習 3. BI 5章 ツール連携 1. Repos 2. Partner Connect 6章 MLOpsの実現に向けて
  3. ©2022 Databricks Inc. — All rights reserved SQLとは SQLが何かをお話しする前にデータやデータベースの話をさせてください •

    データとは • データベースとは データとは1人または複数の人や物や事象に関する定性的または定量的な値の集まりである。 データ - Wikipedia コンピューティングにおいて、 データベースは、電子的に保存され、 アクセスできる組織化された データの集合である。 データベース - Wikipedia 氏名:やまだ たろう 年齢:25 性別:男 氏名:いしかわ はな 年齢:23 性別:女 ・・・
  4. ©2022 Databricks Inc. — All rights reserved SQLとは 大量データを管理するデータベースに問い合わせるための言語がSQLです •

    SQL(Structured Query Language)とは SQLは、関係データベース管理システム (RDBMS) において、データの操作や定義を行うための データベース言 語(問い合わせ言語) 、ドメイン固有言語である。プログラミングにおいてデータベースへのアクセスのために、 他の プログラミング言語と併用される 。 SQL - Wikipedia 顧客データベースから特定の 顧客のデータを取り出したい 口座データベースの残高を更 新したい ユーザーが退会したのでユー ザーデータを削除したい SQLを使います SQLを使います SQLを使います
  5. ©2022 Databricks Inc. — All rights reserved SQLとは データベースにあるデータをどの様に処理するのかをSQLで記述します 行(row/record)

    列(column) • 列「Prefecture」のデータをすべてください。 • 列「pref_no」の昇順で並び替えたデータをください。 • 列「Prefecture」が「Hokkaido」であるすべての行をください。 • 列「date_timestamp」から年月を取り出し、「Prefecture」と年月ごとの「Cases」の合計をください。 テーブル「covid_cases」
  6. ©2022 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    SQLは以下のタイプから構成されています。 ◦ DDL(Data Definition Language) ▪ データベース、テーブルなどを作成、削除します ▪ CREATE/DROP/ALTER ◦ DML(Data Manipulation Language) ▪ テーブルを検索したり、変更します ▪ SELECT/INSERT/UPDATE/DELETE ◦ DCL(Data Control Language) ▪ テーブルに対する権限設定などを行います ▪ GRANT/REVOKE
  7. ©2022 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    とにもかくにもSELECTからです。 ◦ SELECT(選択する)の名前が示す通り、取り出すデータを選択するために使用します。 ◦ 通常SELECTはFROM(から)と組み合わせます。FROMではデータを取り出すテーブルを指定します。 SELECT Prefecture FROM covid_cases; SELECT(選択) Prefecture FROM(から) covid_cases; covid_casesからPrefectureを選択
  8. ©2022 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    SELECTをいろいろカスタマイズしていきます 。 ◦ 上の例ではテーブルのすべての行を取り出してしまいます 。 ◦ WHERE(そこでは〜である)と抽出条件を組み合わせることで、取り出す行を限定することができます 。 SELECT * FROM covid_cases WHERE Prefecture=”Hokkaido”; SELECT(選択) * FROM(から) covid_cases WHERE(そこでは〜である) Prefecture=”Hokkaido”; covid_casesから、そこではPrefecture=”Hokkaido” であるすべての列を選択 *は「すべての 列」を意味しま す。
  9. ©2022 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    データベースを操作できる環境で以下の SQLを実行して、必要とするデータを取得していきます。 ◦ SELECT ◦ GROUP BY ◦ CREATE VIEW ◦ 関数 ◦ 述語(predicate) ◦ CASE ◦ UNION ◦ JOIN • データベースを操作できる環境は色々ありますが、ここでは Databricksのレイクハウスプラットフォームを使用します。
  10. ©2022 Databricks Inc. — All rights reserved SQLで何ができる? データベースにあるデータに対して任意の操作が行えます •

    次に、以下のSQLを実行してテーブルを更新していきます。 ◦ INSERT ◦ UPDATE ◦ DELETE ◦ SELECT AS OF • この他にも「MERGE(INSERT + UPDATE)」などがありますが、今回は割愛します。
  11. ©2022 Databricks Inc. — All rights reserved コラム1:SQLの読み方 英語の文法として読むと理解しやすいです •

    SQLの柔軟性は素晴らしいものですが、その代償としていくらでも複雑になり得ます 。 • 複雑なSQLを理解するには、 ◦ フォーマットして可読性を上げ、 ◦ 英語の文を読む語順(SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY)でブロックを把 握し、 ▪ FROMに記述されているテーブルから、 ▪ WHEREに記述されている抽出条件に基づいてレコードを抽出し、 ▪ GROUP BYに指定されている集約キーでグルーピングし、 ▪ HAVINGに記述されている条件に基づいてグループを絞り込み、 ▪ ORDER BYに指定されているソートキーで並び替えて、 ▪ SELECTに指定されている列 ◦ を取得する。 • という流れで私は読んでいます。
  12. ©2022 Databricks Inc. — All rights reserved • 以下のようなSQLを想定します。 •

    大抵のIDEにはフォーマッター(formatter)が搭載されているのでそれを活用します。 コラム1:SQLの読み方 サンプルで説明します。
  13. ©2022 Databricks Inc. — All rights reserved • 以下のように整形されますので、前述の順序で処理を理解します。 コラム1:SQLの読み方

    サンプルで説明します。 ①default.people10mというテーブルから ②firstNameが「Mary」かつgengerが「F」のレコードを抽出し ③birthYearでグルーピングし ④birthYearの昇順で並び替え ⑤birthDateの年をbirthYearとし、グループごとの行数を totalとして取得する
  14. ©2022 Databricks Inc. — All rights reserved コラム2:ローコード・ノーコードツール SQLを知らなくてもローコード・ノーコードツールがあるじゃないか •

    確かにローコード・ノーコードツールは便利です。定型文を書く手間を省くことができるなど、試行錯誤の過程で生産性を高 める役に立ちます。 • しかし、ノーコードツールで作成したロジックを本格運用する際には以下を検討した上で全体的なワークフローを設計すべ きです。 機能性 コードはノーコードツールよりもリッチであり、多くの場合、5倍から10倍豊富です。同じソフトウェアにおいて、ドラッグ&ドロップのUIとコードベースのAPIを比較し てください。ソフトウェアの開発者は、ノーコードインタフェースに組み込む前にAPIに新機能を組み込みます。多くの機能はノーコードバージョンに取り込まれることはあ りません。これは、数多くのオペレーターをグラフィカルなUIに取り込むには制限があるためです。 柔軟性 ノーコードツールは一部の機能しかサポートしていないため、開発者は重要と考えるものにフォーカスします。シンプルな分析を行っているのであれば問題あり ません。そうでなければ不幸なことになります。コードは無制限の柔軟性を持っています。これが、データサイエンス向けのすべてのノーコードツールに、ユーザーが コードを挿入できるようなコードノード機能がある理由です。 透明性 コードはありのままであり、検査に対してオープンです。ノーコードツールではこれは常に真となりません。データサイエンティストは、自分の作業の精度に対して 説明責任を持ちます。分析が適切ではなかったとしてもツールに文句を言うことはできません。コーディングをしているのであれば、データから洞察に至る処理パイプラ インは完全に可視化されます。 効率性 誰もゼロからコーディングはしません。データサイエンスチームは再利用なコードのコンポーネントを整理し共有します。実行性能を改善し、計算インフラストラク チャへのインパクトを最小化するために、コードを調整・チューニングすることができます。これはノーコードツールでは不可能です。 なぜ我々はコードを書くのか - Qiita
  15. ©2022 Databricks Inc. — All rights reserved SQL応用編 前のセクションではテーブルのデータに対してSQLを使用しましたが... •

    処理の要件が複雑化するに伴い、さまざまな拡張が為されてます。 ◦ JSONなど1行の中にネストされたデータの取り扱い ◦ 関数を引数に取る高階関数 ◦ 地理空間情報の取り扱い
  16. ©2022 Databricks Inc. — All rights reserved まとめ SQLは手段であって目的ではありません •

    SQLは何かしらの目的のもとでデータを加工、取得するために用いるものです ◦ ダッシュボードに表示するデータを準備するためにSQLを用い、ダッシュボードからビジ ネス上の洞察を得る。 ◦ 機械学習のトレーニングデータを準備するためにSQLを用い、機械学習モデルに品質 の良いデータを入力することで、精度の高いモデルを構築し、高精度な需要予測を実現 する。 • SQL(Structured Query Language)とは SQLは、関係データベース管理システム (RDBMS) において、データの操作や定義を行うための データベース言 語(問い合わせ言語) 、ドメイン固有言語である。プログラミングにおいてデータベースへのアクセスのために、 他の プログラミング言語と併用される 。
  17. ©2022 Databricks Inc. — All rights reserved まとめ DatabricksでSQLを活用してビジネス価値を生み出してみませんか •

    ノートブック、SQLエディタのサポート • SQLの結果をダッシュボード、機械学 習などとシームレスに連携 • 並列分散処理による高速化 • 高度な要件に答えるSQL拡張 ブリックスちゃん SQL ローコードツールによるデータ操作
  18. ©2022 Databricks Inc. — All rights reserved まとめ 見てみたい! もっと知りたい!

    試してみたい! デモ・ハンズオン ご興味のテーマに関し て深堀 PoC • 実環境を使ったデモや、一時的に触っ ていただける環境を活用したハンズオ ンを実施 • デモ・ハンズオン共に、ETLや機械学 習といったテーマでご案内 • セキュリティ・ガバナンス、アーキテク チャー、課金体系等気になる点に関し て追加での説明 or 資料共有 • 類似サービスとの比較・相違点等のご 紹介 • 無償でPoCをサポート • 通常2週間のPoC期間中、Databricks 使用料と技術サポートを無償でご提供 • パブリッククラウドのストレージ、コン ピュートコストはお客様ご負担となりま す (AWSの場合S3やEC2等) Databricksにご興味が出たらお声がけください
  19. ©2021 Databricks Inc. — All rights reserved 27 JEDAIは、データブリックスを最大限 ご活用いただくための有益な情報を

    ご提供するとともに、ユーザー同士 がつながり、関係を深めることができ る場として活動いたします。
 2021年は5回の開催を予定していま す。ぜひお気軽にご参加ください。
 データブリックス・ジャパン株式会社 
 Senior Customer Success Engineer 
 徳元 大輔
 通信事業者で様々な業務を経験した 後にビッグデータ業界に。現在は Databricks Japanでポストセールス の頼れるなんでも屋さんを目指して いる。趣味は、飲み食べ歩き・キック ボクシングと過度なエクササイズ・海 外SF小説。好きな映画:ブレードラン ナー、パルプフィクション。座右の銘: 無欲は怠惰の元である。
 お客様セッション
 5・7・9・11・1月開催(予定)
 データブリックスをご利用頂いてるお客様企業やデータ&AIのプロ フェッショナルをお招きして、実際現場で苦悩されている点や、さらに は普段他では話すことのできないハプニング、ココでしか聞けない開 発秘話など、存分にお話いただきます。
 セッションの他にも、Q&Aの時間をたっぷり設け、オンラインの枠を 超えた、できる限りインタラクティブなコミュニケーションが取れるよう にいたします。
 テーマ別セッション
 6・8・10・12月開催(予定)
 データプロジェクトにおける世界の最新トレンドからAI/機械学習プロ ジェクトの実運用まで、毎回テーマを設定し、弊社のパートナー様や弊 社のデータ&AI プロフェッショナルが、ご説明します。セッションの他に も、Q&Aの時間をたっぷり設け、オンラインの枠を超えた、できる限り インタラクティブなコミュニケーションが取れるようにいたします。
 プログラム概要
 コミュニティへの登録方法
 コミュニティの運営は「Connpass」を利用いたします。
 こちらの登録は、Eメールアドレスに加え、各種ソーシャルアカウント(Twitter, Facebook)との連携が可能です。
 ご登録はこちら>
 https://jedai.connpass.com/
 Community Guide 

  20. ©2022 Databricks Inc. — All rights reserved 参考リンク集 • ウェビナーで使用したノートブック・資料

    ◦ https://github.com/taka-yayoi/public_repo_2/tree/master/sql_webinar ◦ Databricksにおける準構造化データへのSQLクエリー ◦ Databricksが正式にデータウェアハウスのパフォーマンス世界記録を達成 ◦ Databricksの高階関数 ◦ Mosaicを用いた大規模地理空間情報処理 • 書籍「データブリックス クイックスタートガイド」 ◦ https://www.amazon.co.jp/dp/B09V1YXFVQ/ • データブリックス漫画シリーズ ◦ https://databricks.com/discover/manga-series-jp • データブリックスユーザー会 ◦ https://jedai.connpass.com/ • データブリックスのQiitaページ ◦ https://qiita.com/organizations/databricks