Inhaltsverzeichnis

  1. Allgemein
  2. Anforderung
  3. Umsetzung
    1. Übersicht
    2. Datenquellen (reines Einladen der Daten)
      1. AdventureWorks Demo
    3. Modelle
      1. SUB_SalesPerson
      2. SUB_Product
      3. SUB_MasterCalendar
      4. SUB_Addresses
      5. SUB_Customer
      6. MOD_AdventureWorks
    4. Applikationen
      1. APP_AdventureWorks
  4. Task Einplanung

Allgemein

Ziel dieses Dokumentes ist es, den Export und die Modellierung der Adventure-Works Daten darzustellen und zu dokumentieren.

Anforderung

Die Anforderungen an den Prozess sind in Projekt XYZ und dem dazugehörigen Anforderungsdokument (angehängt) beschrieben:

Umsetzung

Die Umsetzung der oben genannten Anforderungen wurde mit QSPACE gemacht. Eine genauere Analyse der einzelnen Schritte oder der Datenflüsse kann dort gemacht werden.

Übersicht

Nach dem Laden der Daten aus den QVDs sieht die Weiterverarbeitung bis zum Export wir folgt aus:

QVW DS_AdventureWorks Demo_DB

Automatisch durch eine gedroppte QVW generierte Datenbank mit allen benötigten Tabellen

Tables
Name Descr
AdventureWorks2014.Person.Person Enthält alle Personen, die irgendetwas mit der Firma AdventureWorks zu tun haben (Angestellte, Kunden, ...)
AdventureWorks2014.Sales.Customer Ordnet Individual Customers und Stores ihre Kundennummer zu
AdventureWorks2014.Sales.Store Verknüpft Stores mit den zuständigen Vertriebsmitarbeitern
AdventureWorks2014.Person.BusinessEntityAddress Ordnet den Entitäten ihre AddressID zu
AdventureWorks2014.Person.Address Enthält die Adressen der verschiedenen Entitäten
AdventureWorks2014.Production.Product Enthält die Produkte und Informationen zu diesen
AdventureWorks2014.Production.ProductSubcategory Ordnet der ProductSubcategoryID den entsprechenden Kategorie-Namen zu
AdventureWorks2014.Sales.SalesOrderHeader Enthält allgemeine Informationen über eine Bestellung
AdventureWorks2014.Sales.SalesOrderDetail Enthält detailliertere Informationen zu einer Bestellung (Positionen, ...)

QVW AdventureWorks Demo

Automatisch durch eine gedroppte QVW generierter Extraktor

Tables
Name Descr
Address Automate build Table "Address" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
BusinessEntityAddress Automate build Table "BusinessEntityAddress" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
Customer Automate build Table "Customer" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
Person Automate build Table "Person" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
Product Automate build Table "Product" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
ProductSubcategory Automate build Table "ProductSubcategory" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
SalesOrderDetail Automate build Table "SalesOrderDetail" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
SalesOrderHeader Automate build Table "SalesOrderHeader" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;
Store Automate build Table "Store" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

QVW SUB_SalesPerson

Modellierung der Vertriebsmitarbeiter-Tabelle

Tables
Name Descr
SalesPerson Diese Tabelle enthält alle Vertriebsmitarbeiter

QVW SUB_Product

Modelliert die Product-Tabelle

Tables
Name Descr
Product Enthält alle Produkte der Firma AdventureWorks

QVW SUB_MasterCalendar

Generierung eines Kalenders für die Bestellungen

Tables
Name Descr
Calendar Finaler Kalender für Bestellungsdaten mit Datum, Tagen, Jahren, Quartalen, ..
Calendar_Pre Autogenerate Kalender vom 01.01.2011 bis 31.12.2014

QVW SUB_Addresses

Hier werden die Adressen der Business Entities modelliert.

Tables
Name Descr
EntityAddresses Enthält Adressen aller Business Entities, verbindet BusinessEntityID mit AddressID und den entsprechenden Adressen der Privatkunden und Stores

QVW SUB_Customer

Hier wird die Kundentabelle modelliert

Tables
Name Descr
Customer vollständige Kundentabelle, enthält Stores und Individual Customers
CustomerPerson Enthält alle Privatkunden (Individual Customers) und Store Contacts
CustomerStore Enthält alle Stores, die Kunde der Firma AdventureWorks sind
Customer_Pre vollständige Kundentabelle, enthält Stores und Individual Customers
Customer_PrePre vollständige Kundentabelle, enthält Stores und Individual Customers

QVW MOD_AdventureWorks

Datenmodell für eine Vertriebsapplikation des fiktiven Unternehmens Adventure Works

Tables
Name Descr
Calendar Kalender, der sich auf das OrderDate der Bestellungen bezieht
Customer Enthält alle Kunden (Stores und Individual Customers) der Firma AdventureWorks
Product Enthält alle Produkte der Firma AdventureWorks
SalesOrderDetail Enthält detailiiertere Informationen zu Bestellungen (Posten usw.)
SalesOrderHeader Enthält allgemeine Informationen zu Bestellungen
SalesPerson Enthält eine Liste aller Vertriebsmitarbeiter

QVW APP_AdventureWorks

Vertriebsapplikation der Firma AdventureWorks

Tables
Name Descr

Table Calendar

MOD_AdventureWorks

Kalender, der sich auf das OrderDate der Bestellungen bezieht

Fields
Name Expression Descr
YearMonth
YearMonth
Year
Year
Day
Day
Month
Month
%OrderDate
%OrderDate
Quarter
Quarter

Table Customer

MOD_AdventureWorks

Enthält alle Kunden (Stores und Individual Customers) der Firma AdventureWorks

Fields
Name Expression Descr
%CustomerID
%CustomerID
AddressLine1
AddressLine1
City
City
StoreContactFlag
StoreContactFlag
AddressLine2
AddressLine2
CustomerName
CustomerName
StoreFlag
StoreFlag

Table Product

MOD_AdventureWorks

Enthält alle Produkte der Firma AdventureWorks

Fields
Name Expression Descr
ListPrice
ListPrice
SafetyStockLevel
SafetyStockLevel
ProductNumber
ProductNumber
DaysToManufacture
DaysToManufacture
Weight
Weight
ProductLine
ProductLine
ProductName
ProductName
Size
Size
StandardCost
StandardCost
Subcategory
Subcategory
Color
Color
SellEndDate
SellEndDate
Class
Class
SellStartDate
SellStartDate
SizeUnitMeasureCode
SizeUnitMeasureCode
%ProductID
%ProductID
MakeFlag
MakeFlag
FinishedGoodsFlag
FinishedGoodsFlag
ProductSubcategoryID
ProductSubcategoryID
Style
Style
ReorderPoint
ReorderPoint
ProductModelID
ProductModelID
DiscontinuedDate
DiscontinuedDate

Table SalesOrderDetail

MOD_AdventureWorks

Enthält detailiiertere Informationen zu Bestellungen (Posten usw.)

Fields
Name Expression Descr
UnitPrice
UnitPrice
UnitPriceDiscount
UnitPriceDiscount
CarrierTrackingNumber
CarrierTrackingNumber
%ProductID
ProductID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
OrderQty
OrderQty
LineTotal
LineTotal
SalesOrderDetailID
SalesOrderDetailID
%SalesOrderID
SalesOrderID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens

Table SalesOrderHeader

MOD_AdventureWorks

Enthält allgemeine Informationen zu Bestellungen

Fields
Name Expression Descr
BillToAddressID
BillToAddressID
RevisionNumber
RevisionNumber
ShipDate
ShipDate
OnlineOrderFlag
OnlineOrderFlag
%SalesOrderID
SalesOrderID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
ShipToAddressID
ShipToAddressID
TerritoryID
TerritoryID
DueDate
DueDate
SubTotal
SubTotal
SalesOrderNumber
SalesOrderNumber
%CustomerID
CustomerID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
ShipMethodID
ShipMethodID
Freight
Freight
TotalDue
TotalDue
PurchaseOrderNumber
PurchaseOrderNumber
Status
Status
TaxAmt
TaxAmt
%SalesPersonID
SalesPersonID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
%OrderDate
OrderDate
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens

Table SalesPerson

MOD_AdventureWorks

Enthält eine Liste aller Vertriebsmitarbeiter

Fields
Name Expression Descr
SalesPersonName
SalesPersonName
%SalesPersonID
%SalesPersonID

Table SalesPerson

SUB_SalesPerson

Diese Tabelle enthält alle Vertriebsmitarbeiter

Fields
Name Expression Descr
MiddleName
MiddleName
FirstName
FirstName
%SalesPersonID
BusinessEntityID
Da diese Tabelle nun nur noch SalesPersons enthält, Umbenennung in SalesPersonID. Da es sich zusätzlich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
PersonType
PersonType
LastName
LastName
SalesPersonName
LastName & ', ' & FirstName & \n\rif(MiddleName <> '', ' ' & MiddleName, '')
Zusammenfassung der getrennten Felder FirstName, LastName und MiddleName zu einem einheitlichen Namensfeld. Die Struktur des neuen Namensfeldes ist folgende: LastName, FirstName MiddleName also zum Beispiel Müller, Peter Alexander

Table Product

SUB_Product

Enthält alle Produkte der Firma AdventureWorks

Fields
Name Expression Descr
ListPrice
ListPrice
DiscontinuedDate
DiscontinuedDate
Class
Class
SellEndDate
SellEndDate
StandardCost
StandardCost
ProductName
Name
Da es sich hier um Produkte handelt, Umbenennung in ProductName, um Verwechslungen vorzubeugen
MakeFlag
MakeFlag
ProductNumber
ProductNumber
DaysToManufacture
DaysToManufacture
SellStartDate
SellStartDate
ProductModelID
ProductModelID
Subcategory
Name
Size
Size
Style
Style
Color
Color
Weight
Weight
SizeUnitMeasureCode
SizeUnitMeasureCode
%ProductID
ProductID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
ReorderPoint
ReorderPoint
FinishedGoodsFlag
FinishedGoodsFlag
ProductSubcategoryID
ProductSubcategoryID
ProductLine
ProductLine
SafetyStockLevel
SafetyStockLevel

Table Calendar

SUB_MasterCalendar

Finaler Kalender für Bestellungsdaten mit Datum, Tagen, Jahren, Quartalen, ..

Fields
Name Expression Descr
Day
day(Number)
(Rück-) Interpretation des Feldes Number als Datum (ab dem 01.01.2011 bis zum 31.12.2014) bzw. als Tag
YearMonth
date(monthstart(Number), 'YYYY_MM')
(Rück-) Interpretation des Feldes Number als Datum (ab dem 01.01.2011 bis zum 31.12.2014) bzw. als Feld mit der Form YYYY_MM also z.B. 2014_03 (März 2014) oder 2011_10 (Oktober 2011)
Year
year(Number)
(Rück-) Interpretation des Feldes Number als Datum (ab dem 01.01.2011 bis zum 31.12.2014) bzw. als Jahr
Quarter
'Q' & ceil(month(Number)/3)
Ableiten eines Feldes Quarter (Quartal) aus dem Feld Number. Das Feld Number (welches als Datum vom 01.01.2011 bis zum 31.12.2014 interpretiert werden kann) wird zunächst als Monat interpretiert und dann in die Quartalszahl umgewandelt. Schlussendlich wird noch ein 'Q' davor gesetzt, sodass sich entsprechend Q1, Q2, Q3, Q4 ergibt.
%OrderDate
date(Number)
(Rück-) Interpretation des Feldes Number als Datum (ab dem 01.01.2011 bis zum 31.12.2014). Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
Month
month(Number)
(Rück-) Interpretation des Feldes Number als Datum (ab dem 01.01.2011 bis zum 31.12.2014) bzw. als Monat

Table Calendar_Pre

SUB_MasterCalendar

Autogenerate Kalender vom 01.01.2011 bis 31.12.2014

Fields
Name Expression Descr
Number
num(date('01.01.2011'))+RowNo()-1
Automatische Generierung eines Feldes Number, das in der ersten Zeile die zum 01.01.2011 korrespondierende Zahl beinhaltet und dann jeweils immer pro Zeile um 1 höher wird (und dann demenstprechend in Zeile 2 den 02.01.2011 repräsentiert u.s.w.)

Table Address

AdventureWorks Demo

Automate build Table "Address" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
City
City
AddressLine1
AddressLine1
AddressID
AddressID
AddressLine2
AddressLine2

Table BusinessEntityAddress

AdventureWorks Demo

Automate build Table "BusinessEntityAddress" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
AddressID
AddressID
BusinessEntityID
BusinessEntityID

Table Customer

AdventureWorks Demo

Automate build Table "Customer" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
CustomerID
CustomerID
PersonID
PersonID
StoreID
StoreID

Table Person

AdventureWorks Demo

Automate build Table "Person" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
MiddleName
MiddleName
BusinessEntityID
BusinessEntityID
PersonType
PersonType
FirstName
FirstName
LastName
LastName

Table Product

AdventureWorks Demo

Automate build Table "Product" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
ProductID
ProductID
ListPrice
ListPrice
Class
Class
DiscontinuedDate
DiscontinuedDate
Color
Color
SafetyStockLevel
SafetyStockLevel
ProductNumber
ProductNumber
Style
Style
SellStartDate
SellStartDate
FinishedGoodsFlag
FinishedGoodsFlag
ProductSubcategoryID
ProductSubcategoryID
Weight
Weight
Name
Name
MakeFlag
MakeFlag
ProductModelID
ProductModelID
Size
Size
SizeUnitMeasureCode
SizeUnitMeasureCode
ProductLine
ProductLine
StandardCost
StandardCost
SellEndDate
SellEndDate
ReorderPoint
ReorderPoint
DaysToManufacture
DaysToManufacture

Table ProductSubcategory

AdventureWorks Demo

Automate build Table "ProductSubcategory" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
ProductSubcategoryID
ProductSubcategoryID
Name
Name

Table SalesOrderDetail

AdventureWorks Demo

Automate build Table "SalesOrderDetail" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
SalesOrderDetailID
SalesOrderDetailID
UnitPrice
UnitPrice
SalesOrderID
SalesOrderID
UnitPriceDiscount
UnitPriceDiscount
CarrierTrackingNumber
CarrierTrackingNumber
ProductID
ProductID
OrderQty
OrderQty
LineTotal
LineTotal

Table SalesOrderHeader

AdventureWorks Demo

Automate build Table "SalesOrderHeader" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
CustomerID
CustomerID
SalesPersonID
SalesPersonID
PurchaseOrderNumber
PurchaseOrderNumber
ShipToAddressID
ShipToAddressID
SalesOrderID
SalesOrderID
DueDate
DueDate
OrderDate
OrderDate
TaxAmt
TaxAmt
TotalDue
TotalDue
SalesOrderNumber
SalesOrderNumber
Freight
Freight
OnlineOrderFlag
OnlineOrderFlag
ShipDate
ShipDate
Status
Status
RevisionNumber
RevisionNumber
ShipMethodID
ShipMethodID
SubTotal
SubTotal
BillToAddressID
BillToAddressID
TerritoryID
TerritoryID

Table Store

AdventureWorks Demo

Automate build Table "Store" by import from QVW "AdventureWorks Demo".\n\rParsed Code:\n\r\;

Fields
Name Expression Descr
BusinessEntityID
BusinessEntityID
Name
Name

Table EntityAddresses

SUB_Addresses

Enthält Adressen aller Business Entities, verbindet BusinessEntityID mit AddressID und den entsprechenden Adressen der Privatkunden und Stores

Fields
Name Expression Descr
AddressLine2
AddressLine2
AddressLine1
AddressLine1
City
City
AddressID
AddressID
BusinessEntityID
BusinessEntityID

Table Customer

SUB_Customer

vollständige Kundentabelle, enthält Stores und Individual Customers

Fields
Name Expression Descr
%CustomerID
CustomerID
Da es sich um ein Schlüsselfeld handelt, Voransetzen eines Prozentzeichens
CustomerName
CustomerName
City
City
StoreContactFlag
if(StoreID<> Null() AND PersonID <> Null(), '1', '0')
Hier wird eine Flag erstellt, die genau dann '1' ist, wenn es sich bei dem Kunden um einen Store MIT Store Contact handelt und 0 ist, wenn es sich bei dem Kunden um einen reinen Store OHNE Store Contact handelt.
AddressLine1
AddressLine1
AddressLine2
AddressLine2
StoreFlag
if(StoreID <> Null(), '1', '0')
Hier wird eine Flag erstellt, die genau dann 1 ist, wenn es sich bei dem Kunden um einen Store handelt (mit oder ohne Store Contact) und 0 ist, wenn es sich bei dem Kunden um einen Privatkunden handelt.

Table CustomerPerson

SUB_Customer

Enthält alle Privatkunden (Individual Customers) und Store Contacts

Fields
Name Expression Descr
CustomerPersonName
LastName & ', ' & FirstName & \n\rif(MiddleName <> '', ' ' & MiddleName, '')
Zusammenfassung der getrennten Felder FirstName, LastName und MiddleName zu einem einheitlichen Namensfeld. Die Struktur des neuen Namensfeldes ist folgende: LastName, FirstName MiddleName also zum Beispiel Müller, Peter Alexander
PersonID
BusinessEntityID
Da es sich nur um Personen (Individual Customer und Store Contacts) handelt und andere Business Entities (z.B. Stores) rausgefiltert wurden, Uminterpretation von BusinessEntityID zu einer PersonID

Table CustomerStore

SUB_Customer

Enthält alle Stores, die Kunde der Firma AdventureWorks sind

Fields
Name Expression Descr
StoreID
BusinessEntityID
Da es sich nur um Stores handelt, Umbenennung in StoreID
StoreName
Name
Da es sich nur um Stores handelt, Umbenennung in StoreName

Table Customer_Pre

SUB_Customer

vollständige Kundentabelle, enthält Stores und Individual Customers

Fields
Name Expression Descr
CustomerID
CustomerID
City
City
AddressLine1
AddressLine1
StoreID
StoreID
PersonID
PersonID
AddressLine2
AddressLine2
CustomerName
if(StoreID <> Null(), if(PersonID <> Null(), StoreName & ' / ' & CustomerPersonName, StoreName), CustomerPersonName)
Erstellung des Feldes CustomerName. Wenn es sich um einen Store mit Store Contact handelt (entsprechend sind also StoreID und PersonID nichtt-leer) wird als Kundenname StoreName / Store Contact Person Name verwendet, also zum Beispiel BikeStoreMünchen / Peter Müller (mit Peter Müller als Ansprechpartner vom BikeStoreMünchen). Wenn es sich hingegen um einen reinen Store ohne bestimmten Store Contact handelt, wird als Kundenname der Name des Stores übernommen, also z.B. BikeStoreMünchen. Handelt es sich dagegen nur um einen Privatkunden, wird der Name des Privatkunden als Kundenname übernommen.

Table Customer_PrePre

SUB_Customer

vollständige Kundentabelle, enthält Stores und Individual Customers

Fields
Name Expression Descr
StoreName
StoreName
BusinessEntityID
BusinessEntityID
CustomerID
CustomerID
AddressLine2
AddressLine2
StoreID
StoreID
AddressLine1
AddressLine1
AddressID
AddressID
City
City
PersonID
PersonID
CustomerPersonName
CustomerPersonName

Table AdventureWorks2014.Person.Person

DS_AdventureWorks Demo_DB

Enthält alle Personen, die irgendetwas mit der Firma AdventureWorks zu tun haben (Angestellte, Kunden, ...)

Fields
Name Expression Descr
PersonType
FirstName
LastName
MiddleName
BusinessEntityID

Table AdventureWorks2014.Sales.Customer

DS_AdventureWorks Demo_DB

Ordnet Individual Customers und Stores ihre Kundennummer zu

Fields
Name Expression Descr
StoreID
PersonID
CustomerID

Table AdventureWorks2014.Sales.Store

DS_AdventureWorks Demo_DB

Verknüpft Stores mit den zuständigen Vertriebsmitarbeitern

Fields
Name Expression Descr
BusinessEntityID
Name

Table AdventureWorks2014.Person.BusinessEntityAddress

DS_AdventureWorks Demo_DB

Ordnet den Entitäten ihre AddressID zu

Fields
Name Expression Descr
AddressID
BusinessEntityID

Table AdventureWorks2014.Person.Address

DS_AdventureWorks Demo_DB

Enthält die Adressen der verschiedenen Entitäten

Fields
Name Expression Descr
AddressLine2
AddressLine1
AddressID
City

Table AdventureWorks2014.Production.Product

DS_AdventureWorks Demo_DB

Enthält die Produkte und Informationen zu diesen

Fields
Name Expression Descr
ListPrice
StandardCost
ProductID
MakeFlag
Color
ProductNumber
DaysToManufacture
Weight
ReorderPoint
ProductModelID
ProductLine
SellStartDate
Class
ProductSubcategoryID
SafetyStockLevel
Style
Name
Size
SizeUnitMeasureCode
SellEndDate
FinishedGoodsFlag
DiscontinuedDate

Table AdventureWorks2014.Production.ProductSubcategory

DS_AdventureWorks Demo_DB

Ordnet der ProductSubcategoryID den entsprechenden Kategorie-Namen zu

Fields
Name Expression Descr
Name
ProductSubcategoryID

Table AdventureWorks2014.Sales.SalesOrderHeader

DS_AdventureWorks Demo_DB

Enthält allgemeine Informationen über eine Bestellung

Fields
Name Expression Descr
OnlineOrderFlag
SalesPersonID
SalesOrderNumber
RevisionNumber
CustomerID
PurchaseOrderNumber
DueDate
Freight
SalesOrderID
TerritoryID
ShipToAddressID
TaxAmt
ShipMethodID
ShipDate
BillToAddressID
TotalDue
OrderDate
Status
SubTotal

Table AdventureWorks2014.Sales.SalesOrderDetail

DS_AdventureWorks Demo_DB

Enthält detailliertere Informationen zu einer Bestellung (Positionen, ...)

Fields
Name Expression Descr
ProductID
UnitPriceDiscount
CarrierTrackingNumber
OrderQty
SalesOrderDetailID
SalesOrderID
UnitPrice
LineTotal