‘Webメディア&ラボ’ カテゴリーのアーカイブ

【データ活用塾 動画講座】RedShiftの課題をイッキに解決【番外編】

2025年3月25日 火曜日

平素より大変お世話になっております。

昨年よりご紹介してまいりましたデータ活用塾動画講座「Amazon Redshiftによるビッグデータ分析」は、Redshiftはハイパフォーマンスで運用が楽、それゆえ注目され、現在、導入を検討中という企業様・団体様も多くいらっしゃるということで、針原森夫氏が少しでも参考にしていただきたいと制作・公開を進めてきたシリーズでした。

ただし、Redshiftにはいくつか課題があることもわかってきました。
まず、SQLを使いこなせないとデータ分析はできない、Redshift自体の操作にも、コストをかけない利用法・運用法にも相当な専門知識が必要です。専任の人材を確保するか、現場の方々が時間と手間をかけてSQLやRedshiftを習得していくか、どちらかを選ばないといけません。

「Z-Adam」は、現状のRedshiftのいくつかの課題を一気に解決し、SQLの知識はなくとも、GUIの直感的な操作で集計・分析が行えます。
Excelのピボットテーブルを使ったことのある方なら、誰でもお使いいただけます。
今回の「番外編」では、そういった内容をまとめて公開しています。

「Redshiftは自社の現場に向いているのだろうか」
「Redshiftの活用にあまり自信が持てないが、他の選択肢はないのだろうか」
「Z-Adamの名前は知っているが、実際に使われている様子を見てみたい」
そういった声にお応えできる動画となっております。ぜひごらんください。

★【番外編】Z-Adamを使った集計・分析
https://youtu.be/0bSdg6N1VzQ

★【再生リスト】ビッグデータ分析に最適な「Amazon Redshift」の概要と分析事例の紹介
https://www.youtube.com/playlist?list=PLgz2176WVdt6iuToyN6uq4l6T6EvEFywU

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

人気のデータサイエンス系eラーニングコンテンツによる人材育成
法人・自治体向け「データサイエンティスト育成支援サービス」
https://www.zetta.co.jp/bigdata/dsis/

——————————————————————————–
================================================================================
団体受講用特別価格にてご提供
================================================================================
ダブダブ社の人気データサイエンス系コンテンツ「スタビジ」「スタアカ」を使い、わかりやすい表現、網羅的なカリキュラムで、高度デジタル人材の育成を強力にバックアップするものです。
法人・自治体向けサービスとして、団体受講用特別価格にてご提供いたします。

================================================================================
法人向けのサービスも充実。無料体験も用意
================================================================================
基礎編となる「スタビジ」は完全無料でのご提供で、実践的スキルを身につけるための「スタアカ」は無料体験をご用意しています。

「スタアカ」法人向けプランは、次のような特長があります。
◎全コース受講し放題
◎フォーラム質問し放題(Q&A)
◎進捗状況がわかるレポートサービス付き
◎修了証発行(プランオリジナル)

================================================================================
知識習得だけでなく実践的な内容を随時追加・アップデート
================================================================================
「スタビジ」「スタアカ」は、データサイエンティスト関連資格の教材としてお使いいただけるだけの網羅的内容が盛り込まれています。
ただし、当サービスは資格取得だけでなく、さらにその先を見据えており、知識や技術のアップデートを常に心がけています。

わが国に高度デジタル人材を増やしていくことが自らの使命であると考えております。
日本が、統計や分析を得意とする国になっていくことを願ってやみません。

データサイエンティスト協会が示す資格試験範囲とカリキュラムの対応表をはじめ、サービスの詳細はこちらをごらんください。

★法人・自治体向け「データサイエンティスト育成支援サービス」
https://www.zetta.co.jp/bigdata/dsis/

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

データサイエンスを学ぶならスタビジアカデミー(スタアカ)!

——————————————————————————–

スタアカの概要をYouTubeでご覧いただけます。
https://www.youtube.com/watch?v=F5Erqilyhfs

——————————————————————————–

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

最後までごらんいただき誠にありがとうございました。
クラウドという普及への新たな推進力を得て、データウェアハウス(DWH)は次の局面へ移行しています。
しかし、パフォーマンスや操作性、コストメリットなどの優位性は、クラウドだけのものではありません。
Z-Adamはオンプレミス、サブスクリプション、スタンドアロンとさまざまな利用形態が選べますが、簡単操作・高速処理・経済性の点でZ-AdamはクラウドDWHを凌いでいると確信しています。

ご質問・ご相談などありましたら、お気軽にお問い合わせください。

Renaissa Research Institute, Inc.


【完成】Redshiftによる分析手順をご紹介 【データ活用塾 番外編】

2025年2月28日 金曜日
データ活用塾番外編である動画講座「Amazon Redshiftによるビッグデータ分析」完成のお知らせです。
1から5分ほどの動画計16本は、データ分析の一般的な手順からAWSアカウント作成を含むRedshiftの概要と、そして新たに加わったRedshiftによる実際の分析手順まで、針原森生氏による解説によって構成されております。
シンプルで高速ながら、設定や操作がわかりにくいという声もあるRedshiftの「攻略法」をぜひごらんください。

#14 【Redshiftでデータ分析 】Redshiftによる単純集計とクロス集計

#15【Redshiftの課題】SQL文の作成が大変・意外とかかる利用料

#16【Redshiftの課題解決方法】クロス集計を簡単に行う方法

「Amazon Redshift」によるビッグデータ分析【再生リスト】
https://www.youtube.com/playlist?list=PLgz2176WVdt6iuToyN6uq4l6T6EvEFywU

 

Renaissa Research Institute, Inc.


SQL初心者でもOK!Redshift Serverlessでデータ分析を始めよう! 「Redshift Serverless」を使った集計のSQL文を詳しく解説

2025年1月28日 火曜日

 
YouTubeチャンネル「ルネッサ総合研究所 Webメディア&ラボ」では、AWSのアカウント作成から、Redshiftによるデータ集計・分析までを、丁寧に紹介しています。
 
このページでは、YouTubeの動画「Redshiftによる単純集計とクロス集計」を見ていただいたた方から要望の多かった、データ集計を行う際のSQL文の記述内容と、使用しているコマンドSELECT文、GROUP BY句、JOIN句など、集計に必須のSQL文について解説します(各行ごとの記述内容についてコメントでも解説)。
 

-------------------------
【YouTubeで解説している動画はこちら】
-------------------------
【再生リスト:Amazon Redshiftによるビッグデータ分析
Redshiftによる単純集計とクロス集計 #14 https://youtu.be/S5Zri7Qx8i4

 
動画で紹介している3つのSQL文は、いずれもPOSデータをはじめに分析し、店舗ごとの売上や客数などの情報を集計・比較するためのクエリです。
 
これらのSQL文は、POSデータの集計や分析を行う上で非常に一般的なもので、特にROLLUP句やCASE WHEN句、JOIN句などは、複雑な集計を行う際に役立ち、様々なビジネスロジックに応用できます。
 
ぜひ、この解説を参考に、Redshift Serverlessでデータ分析を始めてみませんか?
掲載している内容をサンプルとして活用し、売上データの分析はもちろん、Redshiftを使った様々なデータ集計・分析ができるようになります。

 
-------------------------
【こんな方におすすめ】
-------------------------
・Redshift Serverlessを使ってみたいけど、SQLが初めての方
・売上データを分析して、ビジネスに活かしたい方
・顧客の行動を可視化したい方
 

-------------------------
【学べること】
-------------------------
・Redshift Serverlessの基本的な使い方
・集計に必須のSQL文(SELECT、GROUP BY、JOINなど)
・売上分析による施策の検討方法

 
それでは、詳しく見ていきましょう。
 

-------------------------
【使用データ】
-------------------------
・データの内容:POSデータ
・ファイル形式:CSVファイル(カンマ区切り、UTF-8)
・データサイズ:約1.2GB
・データ件数 :1,000万件
・期間    :1年
-------------------------

-------------------------
【データ項目】
-------------------------
・店舗CD  :storecd
・年月日   :ymd
・販売時刻  :hms
・レシート番号:receipt
・顧客番号  :customer
・年齢    :age
・性別    :sex
・JANCD :jan
・メーカー名 :maker
・商品名   :item
・規格    :standard
・単価    :price
・数量    :quantity
・大分類CD :cate1cd
・中分類CD :cate2cd
・基礎分類CD:cate3cd
-------------------------

 

-------------------------
【SQL文の解説】
-------------------------

 

-------------------------
●単純集計:店舗別売上比較
-------------------------
単純集計:店舗別売上比較

・目的:店舗ごとの売上金額、数量、一品単価、バスケット数、バスケット単価、買上点数、会員数を集計
・特徴:ROLLUP句を用いて、店舗ごとの集計と全店舗の合計も同時に算出

select
    storecd as 店舗CD,                                                                                                               -- 店舗コード
    to_char(sum(abs(price)*quantity), 'fm999,999,999,999') as 売上金額,                                                              -- 期間内の店舗ごとの売上金額
    to_char(sum(quantity), 'fm999,999,999,999') as 数量,                                                                             -- 期間内の店舗ごとの販売数量
    to_char(round(cast(sum(abs(price)*quantity) as decimal)/sum(quantity), 2), 'fm999,999,999,999.9') as 一品単価,                   -- 期間内の店舗ごとの一品あたりの平均単価
    to_char(count(distinct receipt), 'fm999,999,999,999') as バスケット数,                                                           -- 期間内の店舗ごとのレシート数をカウント
    to_char(round(cast(sum(abs(price)*quantity) as decimal)/count(distinct receipt), 2), 'fm999,999,999,999.9') as バスケット単価,   -- 期間内の店舗ごとのバスケットあたりの平均金額
    to_char(round(cast(sum(quantity) as decimal)/count(distinct receipt), 2), 'fm999,999,999,999.9') as 買上点数,                    -- 期間内の店舗ごとのバスケットあたりの平均購入商品数
    to_char(count(distinct customer), 'fm999,999,999,999') as 会員数                                                                 -- 期間内の店舗ごとの会員数
from posdata                                                                                                                         -- 対象テーブル:POSデータ
where ymd >= 20240301 and ymd < 20250301                                                                                             -- 集計対象期間:2024年3月1日から2025年2月28日まで
group by ROLLUP(storecd)                                                                                                             -- 店舗コードでグループ化、小計(全店舗)算出
order by 店舗CD                                                                                                                      -- 店舗コードを使って昇順でソート

 

-------------------------
●店舗別売上_前年比
-------------------------
店舗別売上-前年比

・目的: 1つ目のSQLで得られた結果を基に、前年同期との比較を行い、売上金額、数量などの増減率を計算
・特徴: 今年度のデータと前年度のデータをJOINして比較

select
    master_store.storename as 店舗名,                                                                                                     -- 店舗マスタテーブルから店舗名を取得
    to_char(thisyear.売上金額, 'fm999,999,999,999') as 当年売上金額,                                                                      -- 当年の売上金額
    to_char(lastyear.売上金額, 'fm999,999,999,999') as 前年売上金額,                                                                      -- 前年の売上金額
    round((cast(thisyear.売上金額 as decimal)/cast(lastyear.売上金額 as decimal))*100, 1) || '%' as 売上金額_前年比,                      -- 売上金額の前年比を計算し、%表示
    to_char(thisyear.数量, 'fm999,999,999,999') as 当年売上数量,                                                                          -- 当年の売上数量
    to_char(lastyear.数量, 'fm999,999,999,999') as 前年売上数量,                                                                          -- 前年の売上数量
    round((cast(thisyear.数量 as decimal)/cast(lastyear.数量 as decimal)) * 100, 1) || '%' as 数量_前年比,                                -- 売上数量の前年比を計算し、%表示
    to_char(round(thisyear.一品単価, 2), 'fm999,999,999,999.9') as 当年一品単価,                                                          -- 当年の一品単価
    to_char(round(lastyear.一品単価, 2), 'fm999,999,999,999.9') as 前年一品単価,                                                          -- 前年の一品単価
    round((cast(thisyear.一品単価 as decimal)/cast(lastyear.一品単価 as decimal)) * 100, 1) || '%' as 一品単価_前年比,                    -- 売上数量の前年比を計算し、%表示
    to_char(thisyear.バスケット数, 'fm999,999,999,999') as 当年バスケット数,                                                              -- 当年のバスケット数
    to_char(lastyear.バスケット数, 'fm999,999,999,999') as 前年バスケット数,                                                              -- 前年のバスケット数
    round((cast(thisyear.バスケット数 as decimal)/cast(lastyear.バスケット数 as decimal)) * 100, 1) || '%' as バスケット数_前年比,        -- バスケット数の前年比を計算し、%表示
    to_char(round(thisyear.バスケット単価, 2), 'fm999,999,999,999.9') as 当年バスケット単価,                                              -- 当年のバスケット単価
    to_char(round(lastyear.バスケット単価, 2), 'fm999,999,999,999.9') as 前年バスケット単価,                                              -- 前年のバスケット単価
    round((cast(thisyear.バスケット単価 as decimal)/cast(lastyear.バスケット単価 as decimal)) * 100, 1) || '%' as バスケット単価_前年比,  -- バスケット単価の前年比を計算し、%表示
    to_char(round(thisyear.買上点数, 2), 'fm999,999,999,999.9') as 当年買上点数,                                                          -- 当年の買上点数
    to_char(round(lastyear.買上点数, 2), 'fm999,999,999,999.9') as 前年買上点数,                                                          -- 前年の買上点数
    round((cast(thisyear.買上点数 as decimal)/cast(lastyear.買上点数 as decimal)) * 100, 1) || '%' as 当年買上点数_前年比,                -- 買上点数の前年比を計算し、%表示
    to_char(thisyear.会員数, 'fm999,999,999,999') as 当年会員数,                                                                          -- 当年の会員数
    to_char(lastyear.会員数, 'fm999,999,999,999') as 前年会員数,                                                                          -- 前年の会員数
    round((cast(thisyear.会員数 as decimal)/cast(lastyear.会員数 as decimal)) * 100, 1) || '%' as 会員数_前年比                           -- 会員数の前年比を計算し、%表示
from
(
    select                                                         -- 当年の売上データを取得するサブクエリ
        coalesce(storecd,0) as 店舗CD,                             -- 店舗コード(NULLの場合は0に置換)
        sum(abs(price)*quantity) as 売上金額,                      -- 売上金額を計算
        sum(quantity) as 数量,                                     -- 数量を計算
        cast(売上金額 as decimal)/数量 as 一品単価,                -- 一品単価を計算
        count(distinct receipt) as バスケット数,                   -- バスケット数を計算
        cast(売上金額 as decimal)/バスケット数 as バスケット単価,  -- バスケット単価を計算
        cast(数量 as decimal)/バスケット数 as 買上点数,            -- 買上点数を計算
        count(distinct customer) as 会員数                         -- 会員数を計算
    from posdata                                                   -- 集計対象データ
    where ymd >= 20240301 and ymd < 20250301                       -- 集計対象期間:2024年3月1日~2025年2月28日
    group by ROLLUP(storecd)                                       -- 店舗コードでグループ化し、小計を算出
) as thisyear
join
(
    select                                                         -- 前年の売上データを取得するサブクエリ
        coalesce(storecd,0) as 店舗CD,                             -- 店舗コード(NULLの場合は0に置換)
        sum(abs(price)*quantity) as 売上金額,                      -- 売上金額を計算
        sum(quantity) as 数量,                                     -- 数量を計算
        cast(売上金額 as decimal)/数量 as 一品単価,                -- 一品単価を計算
        count(distinct receipt) as バスケット数,                   -- バスケット数を計算
        cast(売上金額 as decimal)/バスケット数 as バスケット単価,  -- バスケット単価を計算
        cast(数量 as decimal)/バスケット数 as 買上点数,            -- 買上点数を計算
        count(distinct customer) as 会員数                         -- 会員数を計算
    from posdata                                                   -- 集計対象データ
    where ymd >= 20230301 and ymd < 20240301                       -- 集計対象期間:2023年3月1日~2024年2月28日
    group by ROLLUP(storecd)
) as lastyear
on thisyear.店舗CD = lastyear.店舗CD                               -- 当年と前年のデータで店舗コードを結合
join master_store on thisyear.店舗CD = master_store.storecd        -- 店舗マスタテーブルと結合
order by thisyear.店舗CD                                           -- 店舗コードで昇順にソート

 

-------------------------
●店舗別売上_月別前年比(3か月)
-------------------------
店舗別売上-前年比(月別3か月)

・目的: 2つのSQLと同様に、店舗ごとの売上などを集計し、前年同月比を計算し、月ごとの詳細な比較ができるよう集計
・特徴: CASE WHEN句を用いて、月ごとの売上金額などを算出

select
    master_store.storename as 店舗名                                                                                                 -- 店舗名を取得
    ,to_char(thisyear.3月売上金額, 'fm999,999,999,999') as "2024年3月売上金額"                                                      -- 当年3月の売上金額
    ,to_char(lastyear.3月売上金額, 'fm999,999,999,999') as "2023年3月売上金額"                                                      -- 前年3月の売上金額
    ,round((cast(thisyear.3月売上金額 as decimal)/cast(lastyear.3月売上金額 as decimal))*100, 1) || '%' as 前年同月比              -- 売上金額の前年同月比を計算し、%表示
    ,to_char(thisyear.3月数量, 'fm999,999,999,999') as "2024年3月売上数量"                                                          -- 当年3月の売上数量
    ,to_char(lastyear.3月数量, 'fm999,999,999,999') as "2023年3月売上数量"                                                          -- 前年3月の売上数量
    ,round((cast(thisyear.3月数量 as decimal)/cast(lastyear.3月数量 as decimal))*100, 1) || '%' as 前年同月比                      -- 売上数量の前年同月比を計算し、%表示
    ,to_char(round(thisyear.3月一品単価, 2), 'fm999,999,999,999.9') as "2024年3月一品単価"                                          -- 当年3月の一品単価
    ,to_char(round(lastyear.3月一品単価, 2), 'fm999,999,999,999.9') as "2023年3月一品単価"                                          -- 前年3月の一品単価
    ,round((cast(thisyear.3月一品単価 as decimal)/cast(lastyear.3月一品単価 as decimal))*100, 1) || '%' as 前年同月比              -- 一品単価の前年同月比を計算し、%表示
    ,to_char(thisyear.3月バスケット数, 'fm999,999,999,999') as "2024年3月バスケット数"                                              -- 当年3月のバスケット数
    ,to_char(lastyear.3月バスケット数, 'fm999,999,999,999') as "2023年3月バスケット数"                                              -- 前年3月のバスケット数
    ,round((cast(thisyear.3月バスケット数 as decimal)/cast(lastyear.3月バスケット数 as decimal))*100, 1) || '%' as 前年同月比      -- バスケット数の前年同月比を計算し、%表示
    ,to_char(round(thisyear.3月バスケット単価, 2), 'fm999,999,999,999.9') as "2024年3月バスケット単価"                              -- 当年3月のバスケット単価
    ,to_char(round(lastyear.3月バスケット単価, 2), 'fm999,999,999,999.9') as "2023年3月バスケット単価"                              -- 前年3月のバスケット単価
    ,round((cast(thisyear.3月バスケット単価 as decimal)/cast(lastyear.3月バスケット単価 as decimal))*100, 1) || '%' as 前年同月比  -- バスケット単価の前年同月比を計算し、%表示
    ,to_char(round(thisyear.3月買上点数, 2), 'fm999,999,999,999.9') as "2024年3月買上点数"                                          -- 当年3月の買上点数
    ,to_char(round(lastyear.3月買上点数, 2), 'fm999,999,999,999.9') as "2023年3月買上点数"                                          -- 前年3月の買上点数
    ,round((cast(thisyear.3月買上点数 as decimal)/cast(lastyear.3月買上点数 as decimal))*100, 1) || '%' as 前年同月比              -- 買上点数の前年同月比を計算し、%表示
    ,to_char(thisyear.3月会員数, 'fm999,999,999,999') as "2024年3月会員数"                                                          -- 当年3月の会員数
    ,to_char(lastyear.3月会員数, 'fm999,999,999,999') as "2023年3月会員数"                                                          -- 前年3月の会員数
    ,round((cast(thisyear.3月会員数 as decimal)/cast(lastyear.3月会員数 as decimal))*100, 1) || '%' as 前年同月比                  -- 会員数の前年同月比を計算し、%表示
    ,to_char(thisyear.4月売上金額, 'fm999,999,999,999') as "2024年4月売上金額"                                                      -- 当年4月の売上金額
    ,to_char(lastyear.4月売上金額, 'fm999,999,999,999') as "2023年4月売上金額"                                                      -- 前年4月の売上金額
    ,round((cast(thisyear.4月売上金額 as decimal)/cast(lastyear.4月売上金額 as decimal))*100, 1) || '%' as 前年同月比              -- 売上金額の前年同月比を計算し、%表示
    ,to_char(thisyear.4月数量, 'fm999,999,999,999') as "2024年4月売上数量"                                                          -- 当年4月の売上数量
    ,to_char(lastyear.4月数量, 'fm999,999,999,999') as "2023年4月売上数量"                                                          -- 前年4月の売上数量
    ,round((cast(thisyear.4月数量 as decimal)/cast(lastyear.4月数量 as decimal))*100, 1) || '%' as 前年同月比                      -- 売上数量の前年同月比を計算し、%表示
    ,to_char(round(thisyear.4月一品単価, 2), 'fm999,999,999,999.9') as "2024年4月一品単価"                                          -- 当年4月の一品単価
    ,to_char(round(lastyear.4月一品単価, 2), 'fm999,999,999,999.9') as "2023年4月一品単価"                                          -- 前年4月の一品単価
    ,round((cast(thisyear.4月一品単価 as decimal)/cast(lastyear.4月一品単価 as decimal))*100, 1) || '%' as 前年同月比              -- 一品単価の前年同月比を計算し、%表示
    ,to_char(thisyear.4月バスケット数, 'fm999,999,999,999') as "2024年4月バスケット数"                                              -- 当年4月のバスケット数
    ,to_char(lastyear.4月バスケット数, 'fm999,999,999,999') as "2023年4月バスケット数"                                              -- 前年4月のバスケット数
    ,round((cast(thisyear.4月バスケット数 as decimal)/cast(lastyear.4月バスケット数 as decimal))*100, 1) || '%' as 前年同月比      -- バスケット数の前年同月比を計算し、%表示
    ,to_char(round(thisyear.4月バスケット単価, 2), 'fm999,999,999,999.9') as "2024年4月バスケット単価"                              -- 当年4月のバスケット単価
    ,to_char(round(lastyear.4月バスケット単価, 2), 'fm999,999,999,999.9') as "2023年4月バスケット単価"                              -- 前年4月のバスケット単価
    ,round((cast(thisyear.4月バスケット単価 as decimal)/cast(lastyear.4月バスケット単価 as decimal))*100, 1) || '%' as 前年同月比  -- バスケット単価の前年同月比を計算し、%表示
    ,to_char(round(thisyear.4月買上点数, 2), 'fm999,999,999,999.9') as "2024年4月買上点数"                                          -- 当年4月の買上点数
    ,to_char(round(lastyear.4月買上点数, 2), 'fm999,999,999,999.9') as "2023年4月買上点数"                                          -- 前年4月の買上点数
    ,round((cast(thisyear.4月買上点数 as decimal)/cast(lastyear.4月買上点数 as decimal))*100, 1) || '%' as 前年同月比              -- 買上点数の前年同月比を計算し、%表示
    ,to_char(thisyear.4月会員数, 'fm999,999,999,999') as "2024年4月会員数"                                                          -- 当年4月の会員数
    ,to_char(lastyear.4月会員数, 'fm999,999,999,999') as "2023年4月会員数"                                                          -- 前年4月の会員数
    ,round((cast(thisyear.4月会員数 as decimal)/cast(lastyear.4月会員数 as decimal))*100, 1) || '%' as 前年同月比                  -- 会員数の前年同月比を計算し、%表示
    ,to_char(thisyear.5月売上金額, 'fm999,999,999,999') as "2024年5月売上金額"                                                      -- 当年5月売上金額
    ,to_char(lastyear.5月売上金額, 'fm999,999,999,999') as "2023年5月売上金額"                                                      -- 前年5月売上金額
    ,round((cast(thisyear.5月売上金額 as decimal)/cast(lastyear.5月売上金額 as decimal))*100, 1) || '%' as 前年同月比              -- 売上金額の前年同月比を計算し、%表示
    ,to_char(thisyear.5月数量, 'fm999,999,999,999') as "2024年5月売上数量"                                                          -- 当年5月売上数量
    ,to_char(lastyear.5月数量, 'fm999,999,999,999') as "2023年5月売上数量"                                                          -- 前年5月売上数量
    ,round((cast(thisyear.5月数量 as decimal)/cast(lastyear.5月数量 as decimal))*100, 1) || '%' as 前年同月比                      -- 売上数量の前年同月比を計算し、%表示
    ,to_char(round(thisyear.5月一品単価, 2), 'fm999,999,999,999.9') as "2024年5月一品単価"                                          -- 当年5月一品単価
    ,to_char(round(lastyear.5月一品単価, 2), 'fm999,999,999,999.9') as "2023年5月一品単価"                                          -- 前年5月一品単価
    ,round((cast(thisyear.5月一品単価 as decimal)/cast(lastyear.5月一品単価 as decimal))*100, 1) || '%' as 前年同月比              -- 一品単価の前年同月比を計算し、%表示
    ,to_char(thisyear.5月バスケット数, 'fm999,999,999,999') as "2024年5月バスケット数"                                              -- 当年5月バスケット数
    ,to_char(lastyear.5月バスケット数, 'fm999,999,999,999') as "2023年5月バスケット数"                                              -- 前年5月バスケット数
    ,round((cast(thisyear.5月バスケット数 as decimal)/cast(lastyear.5月バスケット数 as decimal))*100, 1) || '%' as 前年同月比      -- バスケット数の前年同月比を計算し、%表示
    ,to_char(round(thisyear.5月バスケット単価, 2), 'fm999,999,999,999.9') as "2024年5月バスケット単価"                              -- 当年5月のバスケット単価
    ,to_char(round(lastyear.5月バスケット単価, 2), 'fm999,999,999,999.9') as "2023年5月バスケット単価"                              -- 前年5月のバスケット単価
    ,round((cast(thisyear.5月バスケット単価 as decimal)/cast(lastyear.5月バスケット単価 as decimal))*100, 1) || '%' as 前年同月比  -- バスケット単価の前年同月比を計算し、%表示
    ,to_char(round(thisyear.5月買上点数, 2), 'fm999,999,999,999.9') as "2024年5月買上点数"                                          -- 当年5月の買上点数
    ,to_char(round(lastyear.5月買上点数, 2), 'fm999,999,999,999.9') as "2023年5月買上点数"                                          -- 前年5月の買上点数
    ,round((cast(thisyear.5月買上点数 as decimal)/cast(lastyear.5月買上点数 as decimal))*100, 1) || '%' as 前年同月比              -- 買上点数の前年同月比を計算し、%表示
    ,to_char(thisyear.5月会員数, 'fm999,999,999,999') as "2024年5月会員数"                                                          -- 当年5月の会員数
    ,to_char(lastyear.5月会員数, 'fm999,999,999,999') as "2023年5月会員数"                                                          -- 前年4月の会員数
    ,round((cast(thisyear.5月会員数 as decimal)/cast(lastyear.5月会員数 as decimal))*100, 1) || '%' as 前年同月比                  -- 会員数の前年同月比を計算し、%表示
from
(
select                                                                                                                               -- 当年の売上データを取得するサブクエリ
        coalesce(storecd,0) as 店舗CD                                                                                                -- 店舗コード(NULLの場合は0に置換)
        ,sum(case when (ymd >= 20240301 and ymd <= 20240331) then abs(price)*quantity else 0 end) as "3月売上金額"                  -- 3月売上金額を計算 (CASE WHENを使って月別に集計)
        ,sum(case when (ymd >= 20240401 and ymd <= 20240430) then abs(price)*quantity else 0 end) as "4月売上金額"                  -- 4月売上金額
        ,sum(case when (ymd >= 20240501 and ymd <= 20240531) then abs(price)*quantity else 0 end) as "5月売上金額"                  -- 5月売上金額
        ,sum(case when (ymd >= 20240301 and ymd <= 20240331) then quantity else 0 end) as "3月数量"                                 -- 3月売上数量を計算 (CASE WHENを使って月別に集計)
        ,sum(case when (ymd >= 20240401 and ymd <= 20240430) then quantity else 0 end) as "4月数量"                                 -- 4月売上数量
        ,sum(case when (ymd >= 20240501 and ymd <= 20240531) then quantity else 0 end) as "5月数量"                                 -- 5月売上数量
        ,cast(3月売上金額 as decimal)/3月数量 as "3月一品単価"                                                                    -- 3月一品単価を計算 (CASE WHENを使って月別に集計)
        ,cast(4月売上金額 as decimal)/4月数量 as "4月一品単価"                                                                    -- 4月一品単価
        ,cast(5月売上金額 as decimal)/5月数量 as "5月一品単価"                                                                    -- 5月一品単価
        ,count(distinct case when (ymd >= 20240301 and ymd <= 20240331) then receipt else null end) as "3月バスケット数"            -- 3月バスケット数を計算 (CASE WHENを使って月別に集計。DISINCTで重複を除外)
        ,count(distinct case when (ymd >= 20240401 and ymd <= 20240430) then receipt else null end) as "4月バスケット数"            -- 4月バスケット数
        ,count(distinct case when (ymd >= 20240501 and ymd <= 20240531) then receipt else null end) as "5月バスケット数"            -- 5月バスケット数
        ,cast(3月売上金額 as decimal)/3月バスケット数 as "3月バスケット単価"                                                      -- 3月バスケット単価を計算 (CASE WHENを使って月別に集計)
        ,cast(4月売上金額 as decimal)/4月バスケット数 as "4月バスケット単価"                                                      -- 4月バスケット単価
        ,cast(5月売上金額 as decimal)/5月バスケット数 as "5月バスケット単価"                                                      -- 5月バスケット単価
        ,cast(3月数量 as decimal)/3月バスケット数 as "3月買上点数"                                                                -- 3月買上点数を計算 (CASE WHENを使って月別に集計)
        ,cast(4月数量 as decimal)/4月バスケット数 as "4月買上点数"                                                                -- 4月買上点数
        ,cast(5月数量 as decimal)/5月バスケット数 as "5月買上点数"                                                                -- 5月買上点数
        ,count(distinct case when (ymd >= 20240301 and ymd <= 20240331) then customer else null end) as "3月会員数"                 -- 3月会員数を計算 (CASE WHENを使って月別に集計。DISINCTで重複を除外)
        ,count(distinct case when (ymd >= 20240401 and ymd <= 20240430) then customer else null end) as "4月会員数"                 -- 4月会員数
        ,count(distinct case when (ymd >= 20240501 and ymd <= 20240531) then customer else null end) as "5月会員数"                 -- 5月会員数
    from posdata                                                                                                                     -- 集計対象テーブル
    where ymd >= 20240301 and ymd <= 20240531                                                                                        -- 集計対象期間:2024年3月1日~5月31日のデータ
    group by ROLLUP(storecd)                                                                                                         -- 店舗コードでグループ化し、小計を算出
) as thisyear
join
(
select                                                                                                                               -- 前年の売上データを取得するサブクエリ
        coalesce(storecd,0) as 店舗CD
        ,sum(case when (ymd >= 20230301 and ymd <= 20230331) then abs(price)*quantity else 0 end) as "3月売上金額"
        ,sum(case when (ymd >= 20230401 and ymd <= 20230430) then abs(price)*quantity else 0 end) as "4月売上金額"
        ,sum(case when (ymd >= 20230501 and ymd <= 20230531) then abs(price)*quantity else 0 end) as "5月売上金額"
        ,sum(case when (ymd >= 20230301 and ymd <= 20230331) then quantity else 0 end) as "3月数量"
        ,sum(case when (ymd >= 20230401 and ymd <= 20230430) then quantity else 0 end) as "4月数量"
        ,sum(case when (ymd >= 20230501 and ymd <= 20230531) then quantity else 0 end) as "5月数量"
        ,cast(3月売上金額 as decimal)/3月数量 as "3月一品単価"
        ,cast(4月売上金額 as decimal)/4月数量 as "4月一品単価"
        ,cast(5月売上金額 as decimal)/5月数量 as "5月一品単価"
        ,count(distinct case when (ymd >= 20230301 and ymd <= 20230331) then receipt else null end) as "3月バスケット数"
        ,count(distinct case when (ymd >= 20230401 and ymd <= 20230430) then receipt else null end) as "4月バスケット数"
        ,count(distinct case when (ymd >= 20230501 and ymd <= 20230531) then receipt else null end) as "5月バスケット数"
        ,cast(3月売上金額 as decimal)/3月バスケット数 as "3月バスケット単価"
        ,cast(4月売上金額 as decimal)/4月バスケット数 as "4月バスケット単価"
        ,cast(5月売上金額 as decimal)/5月バスケット数 as "5月バスケット単価"
        ,cast(3月数量 as decimal)/3月バスケット数 as "3月買上点数"
        ,cast(4月数量 as decimal)/4月バスケット数 as "4月買上点数"
        ,cast(5月数量 as decimal)/5月バスケット数 as "5月買上点数"
        ,count(distinct case when (ymd >= 20230301 and ymd <= 20230331) then customer else null end) as "3月会員数"
        ,count(distinct case when (ymd >= 20230401 and ymd <= 20230430) then customer else null end) as "4月会員数"
        ,count(distinct case when (ymd >= 20230501 and ymd <= 20230531) then customer else null end) as "5月会員数"
    from posdata
    where ymd >= 20230301 and ymd <= 20230531
    group by ROLLUP(storecd)
) as lastyear
on thisyear.店舗CD = lastyear.店舗CD                                                                                                 -- 当年と前年のデータで店舗コードを結合
join master_store on thisyear.店舗CD = master_store.storecd                                                                          -- 店舗マスタテーブルと結合
order by thisyear.店舗CD                                                                                                             -- 店舗コードで昇順にソート

 
 

-------------------------
【使用している主なコマンドの解説】
-------------------------

 

●SELECT文
・目 的:データベースからデータを取り出す
・使い方:SELECT 項目名 FROM テーブル名
・構 文:SELECT column1, column2, …
       FROM table_name
       WHERE condition;
       *column1, column2, …: 取得したいカラム名を指定
       *table_name: データを取得するテーブル名
       *WHERE condition: 取得するデータの条件を指定

●FROM句
・目 的:データを取得する対象のテーブルの指定
・使い方:FROM テーブル名

●WHERE句
・目 的:取得するデータを絞り込むための条件の指定
・使い方:WHERE 条件式
・例  :where ymd >= 20240301 and ymd < 20250301
       ※ymdカラムの値が2024年3月1日以降かつ2025年3月1日未満のデータを取得

●GROUP BY句
・目 的:データをグループ化し、各グループの集計
・使い方:GROUP BY 項目名
・例  :group by ROLLUP(storecd)
       ※storecdカラムでグループ化し、さらに全店舗の合計も算出

●ROLLUP句
・目 的:GROUP BY句と併用し、階層的な集計(グループ階層を作成し、小計や合計を計算)
・例  :上記の例のように、店舗ごとの集計と全店舗の合計を同時に算出

●SUM関数
・目 的:数値型のデータの合計を計算
・使い方:SUM(カラム名)

●COUNT関数
・目 的:データの数を数える。
・使い方:COUNT(*)         (すべての行を数える)
       COUNT(DISTINCT カラム名) (指定したカラムの異なる値の数を数える)

●TO_CHAR関数
・目 的:数値データを文字列に変換
・例  :to_char(sum(abs(price)*quantity), ‘fm999,999,999,999’)
       ※売上金額を3桁区切りで表示

●ROUND関数
・目 的:小数点以下を丸める
・使い方:ROUND(数値, 小数点以下の桁数)

●CAST関数
・目 的:データ型を変換
・使い方:CAST(値 AS データ型)

●JOIN句
・目 的:複数のテーブルのデータを結合
・使い方:JOIN テーブル名 ON 結合条件
・例  :join master_store on thisyear.店舗CD = master_store.storecd
       ※thisyearテーブルとmaster_storeテーブルを店舗CDで結合する。

●COALESCE関数
・目 的:NULL値を他の値に置換
・使い方:COALESCE(値1, 値2)

●CASE WHEN句
・目 的:複数の条件分岐
・使い方:CASE WHEN 条件1 THEN 値1
       WHEN 条件2 THEN 値2
       ELSE 値3
       END
・例  :sum(case when(ymd >= 20240301 and ymd <= 20240331)
       then abs(price)*quantity else 0 end)
       ※ymdが2024年3月の場合、売上金額を計算し、それ以外は0とする

●ORDER BY
・目 的:結果を特定の項目で昇順または降順にソート
・使い方:ORDER BY 項目名 ASC/DESC

●その他
・abs(price): 絶対値を計算することで、マイナス値の価格を正の値に変換
・distinct :重複するデータを排除し、一意な値だけを数える
・別   名: ASキーワードを使って、カラムやテーブルに別名を付けることが可能
・演算子  : +, -, *, /, >, <, =などの演算子を用いて条件式や計算式を記述


=========================

■ Amaozn Redshift
  高速でシンプルかつ費用対効果の高いデータウェアハウスサービス
  https://aws.amazon.com/jp/redshift/
■ Z-Adam
  大量データの分析に最適な環境と高速集計を実現する新世代統計集計システム
  https://www.zetta.co.jp/products/z-adam/

=========================

■ データサイエンティスト育成支援サービス[スタビジ/スタアカ]
  人気のデータサイエンス系eラーニングコンテンツによる人材育成
  法人・自治体向け「データサイエンティスト育成支援サービス」
  https://www.zetta.co.jp/bigdata/dsis/
■ スタアカ(ご紹介YouTube)
  データサイエンスを学ぶならスタビジアカデミー(スタアカ)!
  https://www.youtube.com/watch?v=F5Erqilyhfs
■ スタアカ
  AIデータサイエンス特化スクール
  https://toukei-lab.com/achademy/
■ スタビジ(Webメディア)
  ビジネスに活かせるデータサイエンス(Statistics business)を発信するメディア
  https://toukei-lab.com/
■ スタビジ(YouTube)
  誰でもAIデータサイエンス by ウマたん
  https://www.youtube.com/@aiby8596
■ Udemy:ウマたん(上野佑馬)
  AI、データサイエンス、デジタルマーケティング、プログラミングを学ぶなら
  https://www.udemy.com/user/shang-ye-you-ma/

Renaissa Research Institute, Inc.


わかりやすく解説:「Amazon Redshift」によるビッグデータ分析 – 全コンテンツ紹介

2024年12月10日 火曜日

ビッグデータ分析に最適な「Amazon Redshift」の概要と分析事例の紹介

この動画では、大規模データ分析に最適な「Amazon Redshift」の概要と分析について学ぶことができます。

-----
【再生リスト】
ビッグデータ分析に最適な「Amazon Redshift」の概要と分析事例の紹介

-------
【内   容】
■ はじめに
● ビッグデータ分析に最適な「Amazon Redshift」の概要と分析事例の紹介 – はじめに –
大規模データ分析に最適な「Amazon Redshift」の概要と分析について学ぶことができます。

■ データ分析の方法
● 問題解決方法【PPDACサイクル】
Redshiftによるデータ分析を行う前にデータ分析手法について解説。
データ分析の目的は問題解決。
その問題解決を行う際のデータ分析手法として「PPDACサイクル」というフレームワークを用います。

●「PPDACサイクル」を使ったコンビニエンスストアの課題解決例
問題解決フレームワーク「PPDACサイクル」を使った例として、コンビニエンスストアの課題解決について解説。

● データ分析の前準備【データチェックとクレンジング】
データ分析の前準備となる「データチェック」と「データクレンジング」について解説。

● データ分析【クロス集計とカテゴライズ】
データ分析において最も重要な「クロス集計」と、「カテゴライズ」について解説。

■ クロス集計の重要性
● クロス集計でほとんどの分析ができる
クロス集計の重要性について解説。

■ Amazon Redshiftの概要
● Amazon Redshiftの概要とデータ分析の流れ
大規模なデータ分析を効率的に行うための強力なツール「Amazon Redshift」の概要について解説。

■ Redshiftを使用したデータ分析
● AWSアカウントの作成
初めてRedshiftを使う人を想定して、AWSアカウントの作成について解説。

● AWSマネジメントコンソールへのサインイン
「AWSマネジメントコンソール」へのサインイン方法について解説。

● IAMのロール作成:Amazon S3のアクセス権限の設定
分析対象データを保管しておく「Amazon S3」へのアクセス権限の設定を行う「IAMのロール作成」について解説。

● S3へのデータ登録
分析対象データを「Amazon S3」へ格納する方法について解説。

● Redshift Serverlessの設定
データ分析を行う際に利用する、AWSが提供するデータウェアハウスサービス「Redshift Serverless」の設定方法について解説。

● RedshiftにS3のデータをロード
「Amazon S3」に格納した分析対象データを、「Redshift Serverless」にロードする方法について解説。

● Redshiftによる単純集計とクロス集計
「Redshift Serverless」を使った単純集計と、クロス集計の方法について解説。

■ Redshiftの課題
● SQL文の作成が大変 ● 利用料金が意外とかかる
「Amazon Redshiftの課題」について解説。

■ Redshiftの課題を解決する方法
● 簡単にクロス集計を行う方法
「Redshift」の課題の解決方法について解説。

-----
■ Amaozn Redshift
高速でシンプルかつ費用対効果の高いデータウェアハウスサービス
https://aws.amazon.com/jp/redshift/

■ Z-Adam
大量データの分析に最適な環境と高速集計を実現する新世代統計集計システム
https://www.zetta.co.jp/products/z-adam/
-----
■ データサイエンティスト育成支援サービス[スタビジ/スタアカ]
人気のデータサイエンス系eラーニングコンテンツによる人材育成
法人・自治体向け「データサイエンティスト育成支援サービス」
https://www.zetta.co.jp/bigdata/dsis/

■ スタアカ(ご紹介YouTube)
データサイエンスを学ぶならスタビジアカデミー(スタアカ)!
https://www.youtube.com/watch?v=F5Erqilyhfs

■ スタアカ
AIデータサイエンス特化スクール
https://toukei-lab.com/achademy/

■ スタビジ(Webメディア)
ビジネスに活かせるデータサイエンス(Statistics business)を発信するメディア
https://toukei-lab.com/

■ スタビジ(YouTube)
誰でもAIデータサイエンス by ウマたん
https://www.youtube.com/@aiby8596

■ Udemy:ウマたん(上野佑馬)
AI、データサイエンス、デジタルマーケティング、プログラミングを学ぶなら
https://www.udemy.com/user/shang-ye-you-ma/

Renaissa Research Institute, Inc.


Amazon Redshiftによるビッグデータ分析の方法をYouTubeで公開

2024年12月3日 火曜日

YouTubeチャンネル「ルネッサ総合研究所 Webメディア&ラボ」にて、「Amazon Redshiftによるビッグデータ分析」というテーマで、Redshiftを使ったビッグデータ活用方法に関する動画を順次公開中です。

大量データの集計処理に最適といわれているAmazon Redshift。
そのRedshiftを使用するために必要なAWSのアカウントの作成から、IAMによるセキュリティ設定、S3へのデータアップロード、そしてRedshiftによるデータ集計・分析までを、はじめてAWSを利用する方にも分かりやすく、丁寧に紹介していきます。

また、データ集計におけるポイントも詳しく紹介しています。

Amazon Redshiftによるビッグデータ分析
https://www.youtube.com/playlist?list=PLgz2176WVdt6iuToyN6uq4l6T6EvEFywU

Renaissa Research Institute, Inc.


Webメディア&ラボ 始動

2024年12月3日 火曜日

ルネッサ総合研究所は、Webに関する情報やIT関連の情報などを発信する「Webメディア&ラボ」を始動しました。

現在、YouTubeチャンネル「ルネッサ総合研究所 Webメディア&ラボ」にて、「Amazon Redshiftによるビッグデータ分析」というテーマで、順次動画を公開中です。

ルネッサ総合研究所 Webメディア&ラボ
https://www.youtube.com/@rrrij-web-media

 

Amazon Redshiftによるビッグデータ分析
https://www.youtube.com/playlist?list=PLgz2176WVdt6iuToyN6uq4l6T6EvEFywU

Renaissa Research Institute, Inc.