Initial commit
This commit is contained in:
775
references/graphical-sql-views.md
Normal file
775
references/graphical-sql-views.md
Normal file
@@ -0,0 +1,775 @@
|
||||
# Graphical and SQL Views Reference
|
||||
|
||||
**Source**: [https://github.com/SAP-docs/sap-datasphere/tree/main/docs/Acquiring-Preparing-Modeling-Data](https://github.com/SAP-docs/sap-datasphere/tree/main/docs/Acquiring-Preparing-Modeling-Data)
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Graphical Views](#graphical-views)
|
||||
2. [SQL Views](#sql-views)
|
||||
3. [Entity-Relationship Models](#entity-relationship-models)
|
||||
4. [Intelligent Lookups](#intelligent-lookups)
|
||||
5. [View Operations](#view-operations)
|
||||
6. [Input Parameters](#input-parameters)
|
||||
7. [Data Access Controls](#data-access-controls-in-views)
|
||||
8. [Persistence](#persistence)
|
||||
9. [Validation and Performance](#validation-and-performance)
|
||||
10. [SQL Reference](#sql-reference)
|
||||
|
||||
---
|
||||
|
||||
## Graphical Views
|
||||
|
||||
Create views visually using drag-and-drop operations.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
**Required Scoped Role Privileges**:
|
||||
| Privilege | Access | Description |
|
||||
|-----------|--------|-------------|
|
||||
| Data Warehouse General | `-R------` | System access |
|
||||
| Data Warehouse Data Builder | `CRUD----` | Create/edit/delete views |
|
||||
| Space Files | `CRUD----` | Manage space objects |
|
||||
|
||||
The **DW Modeler** role template includes these privileges.
|
||||
|
||||
### Creating a Graphical View
|
||||
|
||||
1. Data Builder > New Graphical View
|
||||
2. Add source from repository or connection
|
||||
3. Add transformation nodes
|
||||
4. Configure output columns
|
||||
5. Save and deploy
|
||||
|
||||
### Output Node Properties
|
||||
|
||||
**Required Properties**:
|
||||
- Business Name (display name)
|
||||
- Technical Name (immutable after saving)
|
||||
- Package assignment (immutable after selection)
|
||||
|
||||
**Semantic Usage Options**:
|
||||
| Type | Purpose | Use Case |
|
||||
|------|---------|----------|
|
||||
| Fact | Transactional data with measures | Sales, orders |
|
||||
| Dimension | Master data for categorization | Products, customers |
|
||||
| Hierarchy | Hierarchical structure | Org chart, geography |
|
||||
| Text | Language-dependent labels | Translations |
|
||||
| Relational Dataset | Generic relational data | Any data |
|
||||
| Analytical Dataset | Analytics-ready (deprecated) | Legacy models |
|
||||
| Hierarchy with Directory | Multiple parent-child hierarchies | Complex org structures |
|
||||
|
||||
**Dimension Type**: Standard or Fiscal Time (requires fiscal calendar configuration)
|
||||
|
||||
**Exposure for Consumption**:
|
||||
- Enable OData, ODBC, JDBC access
|
||||
- Required for external BI tools
|
||||
- **Note**: DW Viewer role users can only preview if this is enabled
|
||||
|
||||
**Analytical Mode Option**:
|
||||
- Optimized for analytical queries
|
||||
- Automatic aggregation behavior
|
||||
- Sends `USE_OLAP_PLAN` hint to SAP HANA
|
||||
|
||||
**Data Preview Restrictions (DW Viewer Role)**:
|
||||
- Cannot preview data if *Expose for Consumption* is disabled
|
||||
- Can only preview data in the output node (not intermediate nodes)
|
||||
|
||||
### Editor Toolbar Tools
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| Save/Save As | Design-time repository persistence |
|
||||
| Deploy | Runtime environment activation |
|
||||
| Share | Cross-space distribution |
|
||||
| Preview Data | Node output visualization |
|
||||
| Undo/Redo | Change reversal/restoration |
|
||||
| Export | CSN/JSON file export |
|
||||
| Impact & Lineage | Dependency graph visualization |
|
||||
| Generate OData Request | OData API access preparation |
|
||||
| Runtime Metrics | Performance analysis with Explain Plan generation |
|
||||
| Generate Semantics | AI-assisted semantic type identification |
|
||||
| Versions | Version history access |
|
||||
| Details | Properties panel toggle |
|
||||
|
||||
### Key Constraint
|
||||
|
||||
**Operator Limitation**: You can only create ONE of each operator type (Filter, Projection, Calculated Columns, Aggregation) per source or join.
|
||||
|
||||
### Adding Sources
|
||||
|
||||
**Source Types**:
|
||||
- Local tables
|
||||
- Remote tables
|
||||
- Views
|
||||
- Shared entities
|
||||
|
||||
**Source Browser**:
|
||||
- Browse connections
|
||||
- Search objects
|
||||
- Preview data
|
||||
|
||||
### Join Operations
|
||||
|
||||
**Creating Joins**:
|
||||
1. Drag second source onto canvas
|
||||
2. Connect to existing source
|
||||
3. Select join type
|
||||
4. Configure join conditions
|
||||
|
||||
**Join Types**:
|
||||
| Type | Result |
|
||||
|------|--------|
|
||||
| Inner | Matching rows only |
|
||||
| Left Outer | All left + matching right |
|
||||
| Right Outer | All right + matching left |
|
||||
| Full Outer | All rows from both |
|
||||
| Cross | Cartesian product |
|
||||
|
||||
**Join Conditions**:
|
||||
```
|
||||
Table1.customer_id = Table2.customer_id
|
||||
Table1.year = Table2.fiscal_year AND Table1.month = Table2.period
|
||||
```
|
||||
|
||||
### Union Operations
|
||||
|
||||
**Creating Unions**:
|
||||
1. Add second source
|
||||
2. Select union operation
|
||||
3. Map columns between sources
|
||||
|
||||
**Union Types**:
|
||||
- Union All: Include duplicates
|
||||
- Union: Remove duplicates
|
||||
|
||||
### Filter Operations
|
||||
|
||||
**Filter Types**:
|
||||
- Simple filter (column = value)
|
||||
- Range filter (column BETWEEN x AND y)
|
||||
- List filter (column IN (a, b, c))
|
||||
- Pattern filter (column LIKE '%pattern%')
|
||||
|
||||
**Filter Syntax**:
|
||||
```sql
|
||||
status = 'Active'
|
||||
amount >= 1000 AND amount <= 10000
|
||||
region IN ('US', 'EU', 'APAC')
|
||||
customer_name LIKE 'A%'
|
||||
created_date IS NOT NULL
|
||||
```
|
||||
|
||||
### Aggregation Operations
|
||||
|
||||
**Group By**:
|
||||
1. Add aggregation node
|
||||
2. Select grouping columns
|
||||
3. Configure aggregate functions
|
||||
|
||||
**Aggregate Functions**:
|
||||
| Function | Description |
|
||||
|----------|-------------|
|
||||
| SUM | Total of values |
|
||||
| AVG | Average value |
|
||||
| MIN | Minimum value |
|
||||
| MAX | Maximum value |
|
||||
| COUNT | Row count |
|
||||
| COUNT DISTINCT | Unique count |
|
||||
|
||||
### Column Operations
|
||||
|
||||
**Reorder Columns**:
|
||||
- Drag columns in output panel
|
||||
- Set column order
|
||||
|
||||
**Rename Columns**:
|
||||
- Click column name
|
||||
- Enter new business name
|
||||
|
||||
**Exclude Columns**:
|
||||
- Uncheck columns in output panel
|
||||
- Hidden from downstream
|
||||
|
||||
### Calculated Columns
|
||||
|
||||
**Creating Calculated Columns**:
|
||||
1. Add calculated column
|
||||
2. Enter expression
|
||||
3. Set data type
|
||||
4. Name column
|
||||
|
||||
**Expression Types**:
|
||||
- Arithmetic: `price * quantity`
|
||||
- String: `CONCAT(first_name, ' ', last_name)`
|
||||
- Conditional: `CASE WHEN status = 'A' THEN 'Active' ELSE 'Inactive' END`
|
||||
- Date: `YEAR(order_date)`
|
||||
|
||||
### Conversion Columns
|
||||
|
||||
**Currency Conversion**:
|
||||
1. Add currency conversion column
|
||||
2. Select source amount column
|
||||
3. Select source currency column
|
||||
4. Configure target currency
|
||||
5. Set exchange rate type
|
||||
|
||||
**Unit Conversion**:
|
||||
1. Add unit conversion column
|
||||
2. Select source quantity column
|
||||
3. Select source unit column
|
||||
4. Configure target unit
|
||||
|
||||
**Geo Coordinates**:
|
||||
1. Add geo coordinates column
|
||||
2. Select latitude/longitude columns
|
||||
3. Configure coordinate system
|
||||
|
||||
### Replacing Sources
|
||||
|
||||
**Replace Source**:
|
||||
1. Select source node
|
||||
2. Choose "Replace"
|
||||
3. Select new source
|
||||
4. Remap columns
|
||||
|
||||
**Process Source Changes**:
|
||||
- Detect schema changes
|
||||
- Update mappings
|
||||
- Handle removed columns
|
||||
|
||||
---
|
||||
|
||||
## SQL Views
|
||||
|
||||
Create views using SQL or SQLScript.
|
||||
|
||||
### Creating an SQL View
|
||||
|
||||
1. Data Builder > New SQL View
|
||||
2. Write SQL statement
|
||||
3. Validate syntax
|
||||
4. Save and deploy
|
||||
|
||||
### Language Options
|
||||
|
||||
| Language | Capabilities | Use Case |
|
||||
|----------|--------------|----------|
|
||||
| SQL (Standard Query) | SELECT with JOIN, UNION operators | Standard views |
|
||||
| SQLScript (Table Function) | IF, loops, complex structures | Advanced logic |
|
||||
|
||||
### Critical Syntax Requirements
|
||||
|
||||
**Double Quotes Mandatory**: Use double quotes for all table, column, and alias references in SELECT statements.
|
||||
```sql
|
||||
-- Correct
|
||||
SELECT "customer_id", "customer_name" AS "name" FROM "customers"
|
||||
|
||||
-- Incorrect - will fail
|
||||
SELECT customer_id, customer_name AS name FROM customers
|
||||
```
|
||||
|
||||
**LIMIT vs TOP**: Use LIMIT keyword (TOP is not supported)
|
||||
```sql
|
||||
-- Correct
|
||||
SELECT * FROM orders LIMIT 100
|
||||
|
||||
-- Incorrect
|
||||
SELECT TOP 100 * FROM orders
|
||||
```
|
||||
|
||||
**Format Button**: Available for SQL only (not SQLScript)
|
||||
|
||||
### Data Preview Constraints
|
||||
|
||||
- Data preview unavailable when any source is cross-space shared with input parameters
|
||||
- Wide tables may truncate results to prevent memory issues
|
||||
|
||||
### Basic SQL View
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
customer_id,
|
||||
customer_name,
|
||||
region,
|
||||
country
|
||||
FROM customers
|
||||
WHERE active = 'Y'
|
||||
```
|
||||
|
||||
### SQL View with Joins
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
o.order_id,
|
||||
o.order_date,
|
||||
c.customer_name,
|
||||
p.product_name,
|
||||
ol.quantity,
|
||||
ol.unit_price
|
||||
FROM orders o
|
||||
INNER JOIN customers c ON o.customer_id = c.customer_id
|
||||
INNER JOIN order_lines ol ON o.order_id = ol.order_id
|
||||
INNER JOIN products p ON ol.product_id = p.product_id
|
||||
```
|
||||
|
||||
### SQL View with Aggregation
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
customer_id,
|
||||
YEAR(order_date) AS order_year,
|
||||
COUNT(*) AS order_count,
|
||||
SUM(order_amount) AS total_amount,
|
||||
AVG(order_amount) AS avg_amount
|
||||
FROM orders
|
||||
GROUP BY customer_id, YEAR(order_date)
|
||||
```
|
||||
|
||||
### SQLScript Views
|
||||
|
||||
**Table Variables**:
|
||||
```sql
|
||||
DO BEGIN
|
||||
lt_customers = SELECT * FROM customers WHERE region = 'US';
|
||||
lt_orders = SELECT * FROM orders WHERE customer_id IN (SELECT customer_id FROM :lt_customers);
|
||||
|
||||
SELECT * FROM :lt_orders;
|
||||
END;
|
||||
```
|
||||
|
||||
**Control Flow**:
|
||||
```sql
|
||||
DO BEGIN
|
||||
DECLARE lv_year INTEGER := YEAR(CURRENT_DATE);
|
||||
|
||||
IF :lv_year > 2024 THEN
|
||||
SELECT * FROM orders WHERE order_year = :lv_year;
|
||||
ELSE
|
||||
SELECT * FROM archive_orders WHERE order_year = :lv_year;
|
||||
END IF;
|
||||
END;
|
||||
```
|
||||
|
||||
### Input Parameters in SQL Views
|
||||
|
||||
**Parameter Definition**:
|
||||
```sql
|
||||
-- Input parameter: IP_REGION (String)
|
||||
SELECT *
|
||||
FROM customers
|
||||
WHERE region = :IP_REGION
|
||||
```
|
||||
|
||||
**Multiple Parameters**:
|
||||
```sql
|
||||
-- IP_START_DATE (Date), IP_END_DATE (Date), IP_REGION (String)
|
||||
SELECT *
|
||||
FROM orders
|
||||
WHERE order_date BETWEEN :IP_START_DATE AND :IP_END_DATE
|
||||
AND region = :IP_REGION
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Entity-Relationship Models
|
||||
|
||||
Visual data modeling with entities and associations.
|
||||
|
||||
### Creating an E-R Model
|
||||
|
||||
1. Data Builder > New E-R Model
|
||||
2. Add entities (tables/views)
|
||||
3. Create associations
|
||||
4. Save and deploy
|
||||
|
||||
### Adding Entities
|
||||
|
||||
**Create Table**:
|
||||
- Define columns
|
||||
- Set primary key
|
||||
- Configure properties
|
||||
|
||||
**Create View**:
|
||||
- Define SELECT statement
|
||||
- Configure output
|
||||
|
||||
**Add Existing**:
|
||||
- Drag from repository
|
||||
- Reference existing objects
|
||||
|
||||
### Creating Associations
|
||||
|
||||
1. Select source entity
|
||||
2. Draw line to target entity
|
||||
3. Configure join columns
|
||||
4. Set cardinality
|
||||
|
||||
**Association Properties**:
|
||||
| Property | Options |
|
||||
|----------|---------|
|
||||
| Cardinality | 1:1, 1:n, n:1, n:m |
|
||||
| Join Type | Inner, Left Outer |
|
||||
| Semantic | Reference, Composition |
|
||||
|
||||
### Adding Related Entities
|
||||
|
||||
**Discover Related**:
|
||||
- Analyze existing associations
|
||||
- Suggest related entities
|
||||
- Auto-create associations
|
||||
|
||||
---
|
||||
|
||||
## Intelligent Lookups
|
||||
|
||||
Match and enrich data using fuzzy logic when traditional joins fail due to data quality issues.
|
||||
|
||||
**Purpose**: Merge data from two entities even when problems joining them exist (unreliable foreign keys, inconsistent naming, data quality issues).
|
||||
|
||||
### Technical Architecture
|
||||
|
||||
**Component Structure**:
|
||||
1. Input entity with mandatory pairing column
|
||||
2. Lookup entity with designated return columns
|
||||
3. Rule node (exact or fuzzy matching)
|
||||
4. Output view configuration
|
||||
|
||||
### Pairing Column Requirements
|
||||
|
||||
The pairing column identifies individual records:
|
||||
- Typically ID fields or unique identifiers
|
||||
- Can be a calculated column concatenating multiple values
|
||||
- Falls back to key column if primary identifier unavailable
|
||||
|
||||
### Creating an Intelligent Lookup
|
||||
|
||||
1. Data Builder > New Intelligent Lookup
|
||||
2. Add input entity
|
||||
3. Add lookup entity
|
||||
4. **Define pairing column**
|
||||
5. Configure match rules
|
||||
6. Define output
|
||||
|
||||
### Match Rule Types
|
||||
|
||||
**Exact Match**:
|
||||
```yaml
|
||||
rule: exact_customer_id
|
||||
input_column: customer_id
|
||||
lookup_column: customer_key
|
||||
match_type: exact
|
||||
```
|
||||
|
||||
**Fuzzy Match**:
|
||||
```yaml
|
||||
rule: fuzzy_company_name
|
||||
input_column: company_name
|
||||
lookup_column: organization_name
|
||||
match_type: fuzzy
|
||||
threshold: 0.8
|
||||
```
|
||||
|
||||
### Fuzzy Match Configuration
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-----------|-------------|---------|
|
||||
| Threshold | Match score (0-1) | 0.8 |
|
||||
| Algorithm | Matching algorithm | Levenshtein |
|
||||
| Case Sensitive | Match case | No |
|
||||
|
||||
### Result Categories
|
||||
|
||||
Results are color-coded with percentages on rule symbols:
|
||||
|
||||
| Category | Color | Description | Actions |
|
||||
|----------|-------|-------------|---------|
|
||||
| Matched | Green | Records matched against lookup data | Can reject |
|
||||
| Review | Green | Fuzzy matches between review/matched thresholds | Approve or reject |
|
||||
| Multiple | Yellow | Records matching 2+ lookup records | Select candidate |
|
||||
| Unmatched | Red | No matching lookup record found | Manual match |
|
||||
| Unprocessed | Grey | New records not processed since last run | Run lookup |
|
||||
|
||||
### Processing Results
|
||||
|
||||
**Matched Results**:
|
||||
- Single match: Auto-assign
|
||||
- Multiple matches: Review/select candidates
|
||||
- No match: Manual assignment
|
||||
|
||||
**Unmatched Results**:
|
||||
- Create new lookup records
|
||||
- Manual matching
|
||||
- Skip records
|
||||
|
||||
### Rule Management
|
||||
|
||||
**Modification Handling**:
|
||||
- Modifying rules prompts deletion of subsequent results
|
||||
- User-confirmed matches can be preserved or deleted
|
||||
|
||||
**Adding Rules**:
|
||||
- **Add Rule for Multiple Matches**: Applies AND logic to narrow down candidates
|
||||
- **Add Rule for Unmatched Records**: Targets unmatched category for re-processing
|
||||
|
||||
**Important**: Redeployment required after rule modification before re-execution
|
||||
|
||||
### Multi-Rule Lookups
|
||||
|
||||
Combine multiple rules:
|
||||
1. Exact match on ID
|
||||
2. Fuzzy match on name
|
||||
3. Location-based match
|
||||
|
||||
**Example: Address Enrichment**
|
||||
```yaml
|
||||
rules:
|
||||
- exact: postal_code
|
||||
- fuzzy: street_name (0.85)
|
||||
- fuzzy: city_name (0.9)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## View Operations
|
||||
|
||||
### Saving and Deploying
|
||||
|
||||
**Save**: Store definition
|
||||
**Deploy**: Activate for use
|
||||
|
||||
**Deployment Validation**:
|
||||
- Syntax check
|
||||
- Dependency check
|
||||
- Semantic validation
|
||||
|
||||
### Object Dependencies
|
||||
|
||||
**View Dependencies**:
|
||||
```
|
||||
View A (deployed)
|
||||
└── View B (requires A)
|
||||
└── View C (requires B)
|
||||
```
|
||||
|
||||
**Impact Analysis**:
|
||||
- Find dependent objects
|
||||
- Assess change impact
|
||||
- Plan modifications
|
||||
|
||||
### Lineage Analysis
|
||||
|
||||
**Column Lineage**:
|
||||
- Track column origins
|
||||
- Understand transformations
|
||||
- Document data flow
|
||||
|
||||
**Impact Lineage**:
|
||||
- Identify downstream impact
|
||||
- Plan changes safely
|
||||
|
||||
### Version Management
|
||||
|
||||
**Version History**:
|
||||
- View all versions
|
||||
- Compare versions
|
||||
- Restore previous version
|
||||
|
||||
---
|
||||
|
||||
## Input Parameters
|
||||
|
||||
Runtime parameters for dynamic filtering.
|
||||
|
||||
### Creating Input Parameters
|
||||
|
||||
1. Open view properties
|
||||
2. Add input parameter
|
||||
3. Configure type and default
|
||||
4. Use in filter/expression
|
||||
|
||||
### Parameter Types
|
||||
|
||||
| Type | Use Case | Example |
|
||||
|------|----------|---------|
|
||||
| String | Text filtering | Region code |
|
||||
| Integer | Numeric filtering | Year |
|
||||
| Date | Date filtering | Start date |
|
||||
| Timestamp | DateTime filtering | As-of timestamp |
|
||||
|
||||
### Parameter Usage
|
||||
|
||||
**In Filters**:
|
||||
```sql
|
||||
WHERE region = :IP_REGION
|
||||
```
|
||||
|
||||
**In Expressions**:
|
||||
```sql
|
||||
CASE WHEN year = :IP_YEAR THEN 'Current' ELSE 'Historical' END
|
||||
```
|
||||
|
||||
**Default Values**:
|
||||
```yaml
|
||||
parameter: IP_YEAR
|
||||
type: Integer
|
||||
default: YEAR(CURRENT_DATE)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Data Access Controls in Views
|
||||
|
||||
Apply row-level security to views.
|
||||
|
||||
### Applying Data Access Control
|
||||
|
||||
1. Open view properties
|
||||
2. Select "Data Access Control"
|
||||
3. Choose DAC object
|
||||
4. Map columns
|
||||
5. Deploy
|
||||
|
||||
### DAC Integration
|
||||
|
||||
**Criteria Mapping**:
|
||||
```yaml
|
||||
view_column: region
|
||||
dac_criteria: user_region
|
||||
```
|
||||
|
||||
**Multiple Criteria**:
|
||||
```yaml
|
||||
mappings:
|
||||
- region: user_region
|
||||
- company_code: user_company
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Persistence
|
||||
|
||||
Store view results for improved performance.
|
||||
|
||||
### Enabling Persistence
|
||||
|
||||
1. Open view properties
|
||||
2. Enable persistence
|
||||
3. Configure refresh schedule
|
||||
4. Deploy
|
||||
|
||||
### Persistence Options
|
||||
|
||||
| Option | Description |
|
||||
|--------|-------------|
|
||||
| Scheduled | Refresh at intervals |
|
||||
| On-Demand | Manual refresh |
|
||||
| Delta | Incremental refresh |
|
||||
|
||||
### Partitioning Persisted Views
|
||||
|
||||
**Partition by Date**:
|
||||
```yaml
|
||||
partition_column: order_date
|
||||
partition_type: range
|
||||
partition_function: monthly
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Validation and Performance
|
||||
|
||||
### Validating View Data
|
||||
|
||||
**Data Preview**:
|
||||
- View sample data
|
||||
- Check row counts
|
||||
- Verify calculations
|
||||
|
||||
**Validation Rules**:
|
||||
- Data type checks
|
||||
- Null checks
|
||||
- Business rules
|
||||
|
||||
### Analyzing View Performance
|
||||
|
||||
**Performance Analysis**:
|
||||
- Execution time
|
||||
- Row counts
|
||||
- Resource usage
|
||||
|
||||
**Optimization Tips**:
|
||||
- Filter early
|
||||
- Minimize joins
|
||||
- Use appropriate indexes
|
||||
- Consider persistence
|
||||
|
||||
---
|
||||
|
||||
## SQL Reference
|
||||
|
||||
### Common SQL Functions
|
||||
|
||||
**String Functions**:
|
||||
| Function | Example |
|
||||
|----------|---------|
|
||||
| CONCAT | CONCAT(a, b) |
|
||||
| SUBSTRING | SUBSTRING(s, 1, 5) |
|
||||
| UPPER/LOWER | UPPER(name) |
|
||||
| TRIM | TRIM(text) |
|
||||
| LENGTH | LENGTH(string) |
|
||||
| REPLACE | REPLACE(s, 'old', 'new') |
|
||||
|
||||
**Numeric Functions**:
|
||||
| Function | Example |
|
||||
|----------|---------|
|
||||
| ROUND | ROUND(num, 2) |
|
||||
| FLOOR/CEIL | FLOOR(num) |
|
||||
| ABS | ABS(value) |
|
||||
| MOD | MOD(a, b) |
|
||||
| POWER | POWER(base, exp) |
|
||||
|
||||
**Date Functions**:
|
||||
| Function | Example |
|
||||
|----------|---------|
|
||||
| YEAR | YEAR(date) |
|
||||
| MONTH | MONTH(date) |
|
||||
| DAY | DAY(date) |
|
||||
| ADD_DAYS | ADD_DAYS(date, 7) |
|
||||
| DATEDIFF | DATEDIFF(d1, d2) |
|
||||
| CURRENT_DATE | CURRENT_DATE |
|
||||
|
||||
**Conversion Functions**:
|
||||
| Function | Example |
|
||||
|----------|---------|
|
||||
| CAST | CAST(num AS VARCHAR) |
|
||||
| TO_DATE | TO_DATE(str, 'YYYY-MM-DD') |
|
||||
| TO_DECIMAL | TO_DECIMAL(str, 10, 2) |
|
||||
|
||||
### Window Functions
|
||||
|
||||
```sql
|
||||
-- Row number
|
||||
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date)
|
||||
|
||||
-- Running total
|
||||
SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date)
|
||||
|
||||
-- Rank
|
||||
RANK() OVER (PARTITION BY region ORDER BY sales DESC)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Documentation Links
|
||||
|
||||
- **Graphical Views**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/27efb47](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/27efb47)
|
||||
- **SQL Views**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/81920e4](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/81920e4)
|
||||
- **E-R Models**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/a91c042](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/a91c042)
|
||||
- **Intelligent Lookups**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/8f29f80](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/8f29f80)
|
||||
- **SQL Reference**: [https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/6a37cc5](https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/6a37cc5)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-11-22
|
||||
Reference in New Issue
Block a user