Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:55:17 +08:00
commit 5f83ab42ed
12 changed files with 6080 additions and 0 deletions

675
references/data-modeling.md Normal file
View 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