Initial commit
This commit is contained in:
675
references/data-modeling.md
Normal file
675
references/data-modeling.md
Normal file
@@ -0,0 +1,675 @@
|
||||
# Data Modeling Reference
|
||||
|
||||
**Source**: [https://github.com/SAP-docs/sap-datasphere/tree/main/docs/Acquiring-Preparing-Modeling-Data/Modeling-Data-in-the-Data-Builder](https://github.com/SAP-docs/sap-datasphere/tree/main/docs/Acquiring-Preparing-Modeling-Data/Modeling-Data-in-the-Data-Builder)
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Analytic Models](#analytic-models)
|
||||
2. [Dimensions](#dimensions)
|
||||
3. [Facts and Measures](#facts-and-measures)
|
||||
4. [Hierarchies](#hierarchies)
|
||||
5. [Variables](#variables)
|
||||
6. [Currency and Unit Conversion](#currency-and-unit-conversion)
|
||||
7. [Structures](#structures)
|
||||
8. [Business Builder](#business-builder)
|
||||
9. [Semantic Types](#semantic-types)
|
||||
10. [Associations](#associations)
|
||||
|
||||
---
|
||||
|
||||
## Analytic Models
|
||||
|
||||
Analytic models provide analytics-ready semantic structures for SAP Analytics Cloud.
|
||||
|
||||
### Terminology Differences
|
||||
|
||||
Key terminology differences between facts and analytic models:
|
||||
|
||||
| In Fact Source | In Analytic Model |
|
||||
|----------------|-------------------|
|
||||
| Input parameters | Variables |
|
||||
| Attributes | Dimensions |
|
||||
|
||||
### Critical Constraints
|
||||
|
||||
- **LargeString limitation**: Attributes of type LargeString are not consumable in SAP Analytics Cloud
|
||||
- **Three-minute timeout**: Data preview and query execution have a 3-minute timeout
|
||||
- **Story resave required**: Modified analytic models require story resave in SAP Analytics Cloud
|
||||
- **Dimension deselection**: Dimensions used in associations cannot be deselected
|
||||
|
||||
### Creating an Analytic Model
|
||||
|
||||
**From Scratch**:
|
||||
1. Data Builder > New Analytic Model
|
||||
2. Add fact source
|
||||
3. Add dimension associations
|
||||
4. Define measures
|
||||
5. Configure variables
|
||||
6. Save and deploy
|
||||
|
||||
**From Existing View/Table**:
|
||||
1. Open view or table
|
||||
2. Select "Create Analytic Model"
|
||||
3. Automatic fact/dimension detection
|
||||
4. Refine and deploy
|
||||
|
||||
### Model Components
|
||||
|
||||
| Component | Purpose | Cardinality |
|
||||
|-----------|---------|-------------|
|
||||
| Fact | Transactional data | 1 per model |
|
||||
| Dimension | Master data | 0..n per model |
|
||||
| Measure | Metrics | 1..n per model |
|
||||
| Variable | Parameters | 0..n per model |
|
||||
|
||||
### Fact Sources
|
||||
|
||||
**Supported Sources**:
|
||||
- Views (graphical, SQL)
|
||||
- Local tables
|
||||
- Remote tables
|
||||
|
||||
**Requirements**:
|
||||
- Must contain measurable columns
|
||||
- Should have dimension keys
|
||||
- Recommended: time dimension key
|
||||
|
||||
### Adding Dimensions
|
||||
|
||||
1. Select fact source
|
||||
2. Identify dimension key columns
|
||||
3. Associate dimension views/tables
|
||||
4. Map key columns
|
||||
|
||||
### Changing Model Sources
|
||||
|
||||
**Replace Fact Source**:
|
||||
1. Open analytic model
|
||||
2. Select new fact source
|
||||
3. Remap associations
|
||||
4. Verify measures
|
||||
|
||||
**Change Underlying Model**:
|
||||
- Update source view
|
||||
- Propagate changes
|
||||
- Validate model integrity
|
||||
|
||||
### Data Preview
|
||||
|
||||
Preview data in analytic models:
|
||||
- Select dimensions to display
|
||||
- Choose measures
|
||||
- Apply filters
|
||||
- Verify aggregations
|
||||
|
||||
---
|
||||
|
||||
## Dimensions
|
||||
|
||||
Dimensions categorize and filter analytical data.
|
||||
|
||||
### Creating Dimensions
|
||||
|
||||
**Dimension View Requirements**:
|
||||
- Key column(s)
|
||||
- Text column (optional)
|
||||
- Hierarchy columns (optional)
|
||||
- Additional attributes
|
||||
|
||||
### Dimension Types
|
||||
|
||||
| Type | Use Case | Features |
|
||||
|------|----------|----------|
|
||||
| Standard | General categorization | Key, text, attributes |
|
||||
| Time | Calendar filtering | Date hierarchies |
|
||||
| Fiscal Time | Custom calendars | Fiscal periods |
|
||||
| Text Entity | Translations | Language-dependent |
|
||||
|
||||
### Time Dimensions
|
||||
|
||||
**Standard Time Dimension**:
|
||||
```
|
||||
Year > Quarter > Month > Week > Day
|
||||
```
|
||||
|
||||
**Creating Time Data**:
|
||||
1. Space Settings > Time Data
|
||||
2. Select calendar type
|
||||
3. Define date range
|
||||
4. Generate time tables
|
||||
|
||||
### Fiscal Time Dimensions
|
||||
|
||||
Custom fiscal calendars:
|
||||
- Define fiscal year start
|
||||
- Configure periods
|
||||
- Map to calendar dates
|
||||
|
||||
**Fiscal Variants**:
|
||||
- Standard (12 months)
|
||||
- 4-4-5 week calendar
|
||||
- Custom period definitions
|
||||
|
||||
### Dimension Attributes
|
||||
|
||||
**Attribute Types**:
|
||||
- Key attributes (identifiers)
|
||||
- Text attributes (descriptions)
|
||||
- Calculated attributes
|
||||
- Reference attributes
|
||||
|
||||
**Prefix/Suffix**:
|
||||
Add prefixes or suffixes to distinguish attributes:
|
||||
```
|
||||
MATERIAL_ID -> DIM_MATERIAL_ID
|
||||
```
|
||||
|
||||
### Time Dependency
|
||||
|
||||
Enable time-dependent attributes (SCD Type 2):
|
||||
|
||||
1. Enable time dependency on dimension
|
||||
2. Define valid-from/valid-to columns
|
||||
3. Query returns values valid at reference date
|
||||
|
||||
---
|
||||
|
||||
## Facts and Measures
|
||||
|
||||
### Creating Facts
|
||||
|
||||
**Fact Requirements**:
|
||||
- At least one measure column
|
||||
- Dimension key columns
|
||||
- Optional: time key column
|
||||
|
||||
### Measure Types
|
||||
|
||||
| Type | Description | Use Case |
|
||||
|------|-------------|----------|
|
||||
| Simple | Direct aggregation | SUM(amount) |
|
||||
| Calculated | Derived measure | revenue - cost |
|
||||
| Restricted | Filtered measure | SUM(amount) WHERE region='US' |
|
||||
| Count Distinct | Unique values | COUNT(DISTINCT customer) |
|
||||
| Non-Cumulative | Point-in-time | Inventory balance |
|
||||
| Currency Conversion | Dynamic conversion | Convert to target currency |
|
||||
| Unit Conversion | Dynamic conversion | Convert to target unit |
|
||||
|
||||
### Simple Measures
|
||||
|
||||
Define aggregation behavior:
|
||||
|
||||
```yaml
|
||||
measure: total_sales
|
||||
aggregation: SUM
|
||||
source_column: sales_amount
|
||||
```
|
||||
|
||||
### Calculated Measures
|
||||
|
||||
**Expression Examples**:
|
||||
```sql
|
||||
-- Profit margin
|
||||
(revenue - cost) / revenue * 100
|
||||
|
||||
-- Year-over-year growth
|
||||
(current_sales - previous_sales) / previous_sales * 100
|
||||
|
||||
-- Weighted average
|
||||
SUM(price * quantity) / SUM(quantity)
|
||||
```
|
||||
|
||||
### Restricted Measures
|
||||
|
||||
Apply filters to measures:
|
||||
|
||||
```yaml
|
||||
measure: us_sales
|
||||
base_measure: total_sales
|
||||
filter: region = 'US'
|
||||
```
|
||||
|
||||
**Multiple Restrictions**:
|
||||
```yaml
|
||||
filter: region = 'US' AND year = 2024
|
||||
```
|
||||
|
||||
### Count Distinct Measures
|
||||
|
||||
Count unique values:
|
||||
|
||||
```yaml
|
||||
measure: unique_customers
|
||||
type: COUNT_DISTINCT
|
||||
source_column: customer_id
|
||||
```
|
||||
|
||||
### Non-Cumulative Measures
|
||||
|
||||
Point-in-time values (not additive over time):
|
||||
|
||||
**Use Cases**:
|
||||
- Inventory levels
|
||||
- Account balances
|
||||
- Headcount
|
||||
|
||||
**Configuration**:
|
||||
1. Set measure as non-cumulative
|
||||
2. Define exception aggregation (LAST, FIRST, AVG)
|
||||
3. Specify aggregation dimension
|
||||
|
||||
### Aggregation and Exception Aggregation
|
||||
|
||||
**Standard Aggregation**:
|
||||
| Type | Behavior |
|
||||
|------|----------|
|
||||
| SUM | Add values |
|
||||
| MIN | Minimum value |
|
||||
| MAX | Maximum value |
|
||||
| COUNT | Count rows |
|
||||
| AVG | Average value |
|
||||
|
||||
**Exception Aggregation**:
|
||||
Override standard aggregation for specific dimensions:
|
||||
- LAST: Last value
|
||||
- FIRST: First value
|
||||
- NOP: No aggregation
|
||||
|
||||
---
|
||||
|
||||
## Hierarchies
|
||||
|
||||
Navigation structures for drill-down analysis.
|
||||
|
||||
### Hierarchy Types
|
||||
|
||||
| Type | Structure | Example |
|
||||
|------|-----------|---------|
|
||||
| Level-Based | Fixed levels | Year > Quarter > Month |
|
||||
| Parent-Child | Recursive | Org hierarchy |
|
||||
| External | Reference table | Custom hierarchy |
|
||||
|
||||
### Creating Level-Based Hierarchies
|
||||
|
||||
1. Add hierarchy to dimension
|
||||
2. Define level columns
|
||||
3. Set level order
|
||||
4. Configure node properties
|
||||
|
||||
### Creating Parent-Child Hierarchies
|
||||
|
||||
1. Define parent column
|
||||
2. Define child column
|
||||
3. Configure orphan handling
|
||||
4. Set root detection
|
||||
|
||||
### Hierarchy with Directory
|
||||
|
||||
Use directory table to define hierarchy nodes:
|
||||
|
||||
**Directory Table Structure**:
|
||||
```
|
||||
node_id | parent_id | node_name | level
|
||||
H1 | null | Root | 1
|
||||
H2 | H1 | Region | 2
|
||||
H3 | H2 | Country | 3
|
||||
```
|
||||
|
||||
### External Hierarchies
|
||||
|
||||
Reference external hierarchy definitions:
|
||||
- BW hierarchies
|
||||
- Custom hierarchy tables
|
||||
- Time hierarchies
|
||||
|
||||
---
|
||||
|
||||
## Variables
|
||||
|
||||
Runtime parameters for analytic models.
|
||||
|
||||
### Variable Types
|
||||
|
||||
| Type | Purpose | Example |
|
||||
|------|---------|---------|
|
||||
| Standard | General filtering | Region selection |
|
||||
| Reference Date | Time filtering | Reporting date |
|
||||
| Filter | Predefined filters | Current year |
|
||||
| Restricted Measure | Measure parameters | Currency selection |
|
||||
|
||||
### Creating Variables
|
||||
|
||||
1. Open analytic model
|
||||
2. Add variable
|
||||
3. Define type and properties
|
||||
4. Set default value
|
||||
5. Configure input help
|
||||
|
||||
### Standard Variables
|
||||
|
||||
**Properties**:
|
||||
- Name and description
|
||||
- Data type
|
||||
- Selection type (single, multiple, range)
|
||||
- Default value
|
||||
|
||||
### Reference Date Variables
|
||||
|
||||
Control time-dependent queries:
|
||||
- Current date
|
||||
- Specific date
|
||||
- Relative date (yesterday, last month)
|
||||
|
||||
### Filter Variables
|
||||
|
||||
Predefined filter combinations:
|
||||
```yaml
|
||||
variable: current_fiscal_year
|
||||
filters:
|
||||
- fiscal_year = CURRENT_FISCAL_YEAR
|
||||
```
|
||||
|
||||
### Derived Variables
|
||||
|
||||
Calculate variable values from other variables:
|
||||
```yaml
|
||||
variable: previous_year
|
||||
derived_from: selected_year - 1
|
||||
```
|
||||
|
||||
### Dynamic Defaults
|
||||
|
||||
Set defaults based on context:
|
||||
- Current user
|
||||
- Current date
|
||||
- System variables
|
||||
|
||||
---
|
||||
|
||||
## Currency and Unit Conversion
|
||||
|
||||
Dynamic conversion in analytic models.
|
||||
|
||||
### Currency Conversion
|
||||
|
||||
**Requirements**:
|
||||
- TCUR* tables (SAP standard)
|
||||
- Exchange rate types
|
||||
- Reference date
|
||||
|
||||
### Setting Up Currency Conversion
|
||||
|
||||
1. Import TCUR tables (TCURR, TCURV, TCURF, TCURX)
|
||||
2. Create currency conversion views
|
||||
3. Enable conversion on measures
|
||||
4. Configure target currency
|
||||
|
||||
### Currency Conversion Measure
|
||||
|
||||
```yaml
|
||||
measure: sales_usd
|
||||
type: currency_conversion
|
||||
source_measure: sales_local
|
||||
source_currency: local_currency
|
||||
target_currency: 'USD'
|
||||
exchange_rate_type: 'M'
|
||||
reference_date: posting_date
|
||||
```
|
||||
|
||||
### Currency Conversion Scenarios
|
||||
|
||||
| Scenario | Configuration |
|
||||
|----------|---------------|
|
||||
| Fixed target | target_currency = 'USD' |
|
||||
| Variable target | target_currency = :IP_CURRENCY |
|
||||
| Source currency column | source_currency = currency_key |
|
||||
|
||||
### Unit Conversion
|
||||
|
||||
**Requirements**:
|
||||
- T006* tables (SAP standard)
|
||||
- Unit conversion factors
|
||||
|
||||
### Setting Up Unit Conversion
|
||||
|
||||
1. Import T006 tables (T006, T006A, T006D)
|
||||
2. Create unit conversion views
|
||||
3. Enable conversion on measures
|
||||
4. Configure target unit
|
||||
|
||||
### Unit Conversion Measure
|
||||
|
||||
```yaml
|
||||
measure: quantity_kg
|
||||
type: unit_conversion
|
||||
source_measure: quantity
|
||||
source_unit: unit_of_measure
|
||||
target_unit: 'KG'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Structures
|
||||
|
||||
Group measures for organized presentation.
|
||||
|
||||
### Creating Structures
|
||||
|
||||
1. Add structure to analytic model
|
||||
2. Define structure members
|
||||
3. Configure member properties
|
||||
|
||||
### Structure Members
|
||||
|
||||
**Types**:
|
||||
- Simple member (reference measure)
|
||||
- Calculated member (expression)
|
||||
- Restricted member (filtered)
|
||||
|
||||
### Calculated Structure Members
|
||||
|
||||
```yaml
|
||||
member: profit_margin
|
||||
expression: ([revenue] - [cost]) / [revenue] * 100
|
||||
```
|
||||
|
||||
### Restricted Structure Members
|
||||
|
||||
```yaml
|
||||
member: us_revenue
|
||||
base_member: revenue
|
||||
restriction: region = 'US'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Business Builder
|
||||
|
||||
Create business-oriented semantic models for consumption by SAP Analytics Cloud and Microsoft Excel.
|
||||
|
||||
### Business Builder Purpose
|
||||
|
||||
The Business Builder "combines, refines, and enriches Data Builder objects" with these benefits:
|
||||
- **Loose Coupling**: Data source switching without disrupting reporting
|
||||
- **Measure Enrichment**: Add derived, calculated measures and new attributes
|
||||
- **Reusability**: Single business entities used across multiple models
|
||||
|
||||
### Business Builder Objects
|
||||
|
||||
| Object | Purpose | Contains |
|
||||
|--------|---------|----------|
|
||||
| Business Entity | Reusable component | Attributes, associations |
|
||||
| Fact Model | Intermediate layer (optional) | Facts, dimensions |
|
||||
| Consumption Model | Star schema for analytics | Business entities, measures |
|
||||
| Perspective | Exposed view for BI tools | Selected measures/dimensions |
|
||||
|
||||
### Workflow
|
||||
|
||||
```
|
||||
Data Builder Objects
|
||||
↓
|
||||
Business Entities (consume Data Builder entities)
|
||||
↓
|
||||
Fact Models (optional intermediate layer)
|
||||
↓
|
||||
Consumption Models (star schemas)
|
||||
↓
|
||||
Perspectives (expose to SAP Analytics Cloud, Excel, BI clients)
|
||||
```
|
||||
|
||||
### Creating Business Entities
|
||||
|
||||
1. Business Builder > New Business Entity
|
||||
2. Select data source (from Data Builder)
|
||||
3. Define key
|
||||
4. Add attributes
|
||||
5. Define associations
|
||||
6. **Loose coupling**: Can switch data source later without breaking reports
|
||||
|
||||
### Business Entity Types
|
||||
|
||||
**Dimension Entity**:
|
||||
- Master data
|
||||
- Key and text
|
||||
- Hierarchy support
|
||||
|
||||
**Transaction Entity**:
|
||||
- Transactional data
|
||||
- Measures
|
||||
- Dimension references
|
||||
|
||||
### Creating Fact Models
|
||||
|
||||
1. Business Builder > New Fact Model
|
||||
2. Add fact entities
|
||||
3. Add dimension entities
|
||||
4. Define measures
|
||||
5. Configure filters
|
||||
|
||||
### Creating Consumption Models
|
||||
|
||||
1. Business Builder > New Consumption Model
|
||||
2. Add fact model
|
||||
3. Configure perspectives
|
||||
4. Add filters
|
||||
5. Set authorizations
|
||||
|
||||
### Perspectives
|
||||
|
||||
Perspectives expose data to external tools:
|
||||
- SAP Analytics Cloud
|
||||
- Microsoft Excel
|
||||
- Other BI clients
|
||||
- OData API consumers
|
||||
|
||||
**Creating Perspectives**:
|
||||
1. Open consumption model
|
||||
2. Create new perspective
|
||||
3. Select measures to expose
|
||||
4. Select dimensions to include
|
||||
5. Configure default filters
|
||||
6. Deploy
|
||||
|
||||
### Authorization Scenarios
|
||||
|
||||
Row-level security in Business Builder:
|
||||
|
||||
1. Create authorization scenario
|
||||
2. Define criteria (user attributes)
|
||||
3. Assign to consumption model
|
||||
|
||||
### Import from SAP BW/4HANA
|
||||
|
||||
Import BW models:
|
||||
- CompositeProviders
|
||||
- InfoObjects
|
||||
- Queries
|
||||
|
||||
---
|
||||
|
||||
## Semantic Types
|
||||
|
||||
Define column semantics for SAP Analytics Cloud.
|
||||
|
||||
### Attribute Semantic Types
|
||||
|
||||
| Type | Purpose | Example |
|
||||
|------|---------|---------|
|
||||
| Key | Identifier | customer_id |
|
||||
| Text | Description | customer_name |
|
||||
| Currency | Currency code | currency_key |
|
||||
| Unit | Unit of measure | uom |
|
||||
| Date | Date value | order_date |
|
||||
|
||||
### Measure Semantic Types
|
||||
|
||||
| Type | Purpose |
|
||||
|------|---------|
|
||||
| Amount | Currency amounts |
|
||||
| Quantity | Measured quantities |
|
||||
| Count | Counted values |
|
||||
| Percentage | Ratios |
|
||||
|
||||
### Setting Semantic Types
|
||||
|
||||
1. Open view/table properties
|
||||
2. Select column
|
||||
3. Set semantic type
|
||||
4. Configure related columns
|
||||
|
||||
---
|
||||
|
||||
## Associations
|
||||
|
||||
Define relationships between entities.
|
||||
|
||||
### Association Types
|
||||
|
||||
| Type | Cardinality | Use Case |
|
||||
|------|-------------|----------|
|
||||
| To-One | n:1 | Fact to dimension |
|
||||
| To-Many | 1:n | Parent to children |
|
||||
|
||||
### Creating Associations
|
||||
|
||||
1. Select source entity
|
||||
2. Add association
|
||||
3. Select target entity
|
||||
4. Map key columns
|
||||
5. Configure properties
|
||||
|
||||
### Association Properties
|
||||
|
||||
**Join Type**:
|
||||
- Inner (default)
|
||||
- Left Outer
|
||||
|
||||
**Cardinality**:
|
||||
- Exactly One
|
||||
- Zero or One
|
||||
- Many
|
||||
|
||||
### Text Associations
|
||||
|
||||
Link dimension to text entity:
|
||||
```yaml
|
||||
association: customer_text
|
||||
target: customer_texts
|
||||
join: customer_id = text_customer_id
|
||||
filter: language = :SYSTEM_LANGUAGE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Documentation Links
|
||||
|
||||
- **Analytic Models**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/e5fbe9e](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/e5fbe9e)
|
||||
- **Business Builder**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/3829d46](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/3829d46)
|
||||
- **Dimensions**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/5aae0e9](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/5aae0e9)
|
||||
- **Measures**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/e4cc3e8](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/e4cc3e8)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-11-22
|
||||
Reference in New Issue
Block a user