SQL server 2014用のサンプルDBを入れてみる
参考になったサイト
下のサイトを参考にする。
SQL Serverのサンプルデータベースの移り変わり(Pubs、Northwind、AdventureWorks) - あおきのTechメモ
DL元はこれ。
解凍待ちのあいだ考えたこと
入れる前に解凍する前に不安なのは、
データが綺麗すぎたらやだな、
英語なのはやだな、の2点。
RDBの構造が企業っぽいのは素晴らしいなー、というのはsummaryを見て感じた。
Rのirisとかはキレイすぎて逆に大変よね。
社外にはデータを持ち出せない(当たり前)から、
家ではサンプルを使って分析用のコード書くわけだけど、就業時間中に前処理でハマる。
むしろDirty sampleとかあったりするのかな。こういうニーズは多そう。
あ、できた。この辺は慣れてるから割愛する。っておえー!
解凍後に思ったこと
多いわ!!!!!!!
というわけでとりあえず自分の練習に使えそうなテーブルだけピックアップする。
id:aoki1210さんの記事にスキーマの画像があった。ありがたやありがたや。
- SalesOrderHeader
- [SalesOrderID],[CustomerID]
- SalesOrderDetail
- [SalesOrderID],[ProductID]
- Product
- [ProductID]
- Customer
- [CustomerID],[PersonID]
- Person
- [BusinessEntityID]
とりあえずこの5つのテーブル(と、キー)から始める。
CustomerとPersonの名寄せが[PersonID] <-> [BusinessEntityID]
というのはリアルな感じでなかなかよろしいですな。
AW4meというDBを作って5つのテーブルだけ移植。
Create database AW4me go USE [AdventureWorks2014] select * into [AW4me].[dbo].[SalesOrderHeader] from Sales.SalesOrderHeader select * into [AW4me].[dbo].[SalesOrderDetail] from Sales.SalesOrderDetail select * into [AW4me].[dbo].[Product] from Production.Product select * into [AW4me].[dbo].[Customer] from Sales.Customer select [BusinessEntityID] ,[PersonType] ,[NameStyle] ,[Title] ,[FirstName] ,[MiddleName] ,[LastName] ,[Suffix] ,[EmailPromotion] ,[rowguid] ,[ModifiedDate] into [AW4me].[dbo].[Person] FROM [AdventureWorks2014].[Person].[Person]
Personだけxmlスキーマで持って来れなかったので一部削っている。
結合できるチェックに内部結合のクエリを書く。
USE AW4me SELECT DISTINCT TOP 100 Cu.[CustomerID] ,Sod.[SalesOrderID] ,Pe.[BusinessEntityID] ,Pr.[ProductID] FROM Person pe INNER JOIN Customer Cu ON Cu.[PersonID] = Pe.[BusinessEntityID] INNER JOIN SalesOrderHeader Soh ON Soh.[CustomerID] = Cu.[CustomerID] INNER JOIN SalesOrderDetail Sod ON Sod.[SalesOrderID] = Soh.[SalesOrderID] INNER JOIN Product Pr ON Pr.[ProductID] =Sod.[ProductID]
結果はこう。
IDがbigintっぽいので、不整合なID同士でくっつけても
くっついちゃうんじゃないかとちょっと不安になる。
ただ、ProductやPersonのデータにほどよくNULLがあるのは素晴らしい。
ここからキューブをつくり、エクセルからPowerPivotで引っ張ってくるのが今日中にしたい作業だ。