File size: 21,807 Bytes
1b95024 7f3ee7b 19f43ab 1b95024 19f43ab 1b95024 19f43ab 1b95024 19f43ab 1b95024 19f43ab 1b95024 19f43ab 1b95024 19f43ab 1b95024 e493d29 1b95024 e493d29 1b95024 e493d29 1b95024 e493d29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | ## Table: `dim_agreement`
### Schema: `public`
### All Columns and their Descriptions:
- `agreement_id` (text): Unique identifier for the agreement. This is likely the primary key.
- `customer_id` (text): Identifier for the customer associated with the agreement. This is likely a foreign key referencing a customer table.
- `agreement_type` (text): The type of agreement (e.g., Service Level Agreement, Sales Agreement).
- `agreement_name` (text): The name or title of the agreement.
- `agreement_status` (text): The current status of the agreement (e.g., Active, Inactive, Expired).
- `description` (text): A textual description of the agreement.
- `document_number` (text): The document number associated with the agreement.
- `statement_of_intent` (text): Indicates whether a statement of intent is associated with the agreement.
- `version` (text): The version number of the agreement.
- `initial_date` (timestamp without time zone): The date the agreement was initially created.
- `agreement_period_start_date` (timestamp without time zone): The start date of the agreement period.
- `agreement_period_end_date` (timestamp without time zone): The end date of the agreement period.
- `completion_date_start_date` (timestamp without time zone): The start date of the completion date.
- `completion_date_end_date` (text): The end date of the completion date.
- `auto_renewal` (text): Indicates whether the agreement has auto-renewal enabled.
- `commitment_unit` (text): The unit for the commitment amount (e.g., USD, hours).
- `rating_type` (text): The type of rating associated with the agreement.
- `commitment_amount` (text): The committed amount associated with the agreement.
- `remaining_payment_cycle` (text): The remaining payment cycle.
- `termination_date` (text): The date the agreement was terminated.
### Relationships with Other Tables (Foreign Keys):
- `customer_id` (FK) references a `customer` table (likely `dim_customer` or similar) on the `customer_id` column. This links the agreement to a specific customer.
### Cardinality of Relationships:
- Relationship with `dim_customer` (or similar) is one-to-many. One customer can have multiple agreements.
### Common Use Cases/Example Queries:
- Describe all active agreements for a specific customer.
- Analyze agreements by type or status.
- Track agreement start and end dates.
- Example SQL Snippet: `SELECT * FROM dim_agreement WHERE customer_id = 'customer_id_value' AND agreement_status = 'Active';`
### Data Constraints and Business Rules:
- `agreement_id` is likely unique and a primary key.
- `agreement_status` might have a controlled vocabulary (e.g., Active, Inactive).
- Date fields should be validated for data integrity.
- Business rules may dictate agreement approval processes or renewal cycles.
### Data Update Frequency/Volatility:
- Data is likely updated when agreements are created, modified, or terminated.
- Update frequency would depend on the business processes.
### Potential Pitfalls/Things to Avoid When Querying:
- Ensure correct date ranges when filtering by agreement period or completion dates.
- Be aware of potential data quality issues in text fields.
### Important Notes/Considerations for Querying:
- Join with the `dim_customer` table to retrieve customer information.
- Consider indexing frequently queried columns (e.g., `customer_id`, `agreement_status`, `agreement_type`).
---
## Table: `dim_customer`
### Schema: `public`
### All Columns and their Descriptions:
- `customer_id` (text): Likely the primary identifier for a customer. This is probably the primary key, although not explicitly stated.
- `customer_name` (text): The name of the customer.
- `customer_start_date` (timestamp without time zone): The date the customer record became active.
- `customer_end_date` (timestamp without time zone): The date the customer record became inactive.
- `customer_status` (text): The status of the customer (e.g., Active, Inactive).
- `is_customer_active` (integer): Indicates whether the customer is currently active (1 or 0).
- `customer_status_reason` (text): Reason for the customer's status.
- `market_segment` (text): The market segment the customer belongs to.
- `customer_segment` (text): The customer segment the customer belongs to.
- `is_individual_customer` (integer): Indicates whether the customer is an individual (1 or 0).
- `organization_name` (text): The name of the organization, if the customer is an organization.
- `trading_name` (text): The trading name of the customer.
- `organization_type_id` (text): The ID of the organization type.
- `is_head_office` (boolean): Indicates if the customer is a head office.
- `is_legal_entity` (boolean): Indicates if the customer is a legal entity.
- `organization_start_date` (timestamp without time zone): The date the organization record became active.
- `organization_end_date` (timestamp without time zone): The date the organization record became inactive.
- `birth_date` (timestamp without time zone): The birth date of the customer, if an individual.
- `death_date` (timestamp without time zone): The death date of the customer, if an individual.
- `country_of_birth` (text): The country of birth of the customer, if an individual.
- `party_status` (text): The status of the party.
- `title` (text): The title of the customer, if an individual.
- `generation` (text): The generation of the customer, if an individual.
- `preferred_given_name` (text): The preferred given name of the customer, if an individual.
- `given_name` (text): The given name of the customer, if an individual.
- `middle_name` (text): The middle name of the customer, if an individual.
- `family_name` (text): The family name of the customer, if an individual.
- `family_name_prefix` (text): The family name prefix of the customer, if an individual.
- `formatted_name` (text): The formatted name of the customer.
- `full_name` (text): The full name of the customer.
- `legal_name` (text): The legal name of the customer.
- `gender` (text): The gender of the customer, if an individual.
- `location` (text): The location of the customer.
- `marital_status` (text): The marital status of the customer, if an individual.
- `nationality` (text): The nationality of the customer, if an individual.
- `place_of_birth` (text): The place of birth of the customer, if an individual.
- `juridical_info` (text): Juridical information of the customer.
- `latitude` (text): The latitude of the customer's location.
- `longitude` (text): The longitude of the customer's location.
- `number_of_employees` (text): The number of employees for the customer, if an organization.
- `tax_exempt` (text): Indicates if the customer is tax-exempt.
- `dunning_level` (text): The dunning level for the customer.
- `contact_verified` (text): Indicates if the contact information is verified.
- `customer_number` (text): The customer number.
- `communication_method` (text): The communication method for the customer.
- `sales_agent_id` (text): The ID of the sales agent. Likely a foreign key to a `sales_agent` table.
- `account_manager_id` (text): The ID of the account manager. Likely a foreign key to an `account_manager` table.
- `sales_partner_id` (text): The ID of the sales partner. Likely a foreign key to a `sales_partner` table.
- `party_identifier` (text): The party identifier.
- `customer_revision` (bigint): The customer revision number.
- `party_revision` (bigint): The party revision number.
### Relationships with Other Tables (Foreign Keys):
- Based on the column names, it is *highly likely* that the table has foreign keys to tables such as: `sales_agent`, `account_manager`, and `sales_partner`. Without the ability to see the foreign key constraints, this is an educated guess.
### Cardinality of Relationships:
- Relationship with `sales_agent`, `account_manager`, and `sales_partner` is likely one-to-many. One sales agent/account manager/sales partner can be associated with multiple customers.
### Common Use Cases/Example Queries:
- Describe common use cases:
* Reporting on customer demographics.
* Analyzing customer sales by segment.
* Tracking customer status and activity.
* Identifying customers by sales agent or account manager.
- Example SQL Snippet:
```sql
SELECT customer_name, market_segment, customer_status
FROM dim_customer
WHERE sales_agent_id = 'XYZ123';
```
### Data Constraints and Business Rules:
- `customer_id` is likely the primary key and should be unique and not null.
- `customer_start_date` should be before or equal to `customer_end_date`.
- `is_customer_active` should reflect the status of the customer based on `customer_start_date`, `customer_end_date`, and `customer_status`.
- Data quality checks should be in place to ensure the accuracy of demographic data (e.g., valid gender, valid countries).
### Data Update Frequency/Volatility:
- The data is likely updated frequently as customer information changes.
- The volatility of the data will vary depending on the specific attributes (e.g., contact information will be more volatile than birthdate).
### Potential Pitfalls/Things to Avoid When Querying:
- Joining to other tables without properly understanding the relationships, especially the role of `sales_agent_id`, `account_manager_id`, and `sales_partner_id`.
- Incorrectly filtering on date ranges. Consider using `customer_start_date` and `customer_end_date` to filter for active customers.
- Not considering the impact of customer status when analyzing customer data.
### Important Notes/Considerations for Querying:
- Always check `is_customer_active` or `customer_status` when querying to ensure you are getting the correct set of customers.
- Be mindful of the date ranges when analyzing customer data over time.
- Use the appropriate join conditions when joining with other tables.
- Consider the impact of null values in fields such as `birth_date`, `death_date`, etc.
---
## Table: `dim_product`
### Schema: `public`
### All Columns and their Descriptions:
* **product\_id (text):** Likely the primary identifier for the product. It's a text field. It is likely the primary key, though I don't have FK information.
* **customer\_id (text):** The identifier for the customer associated with the product. Foreign key to the `dim_customer` table (inferred, as I lack foreign key info).
* **agreement\_id (text):** An identifier for the agreement related to the product. Foreign key to the `dim_agreement` table (inferred).
* **agreement\_name (text):** The name of the agreement related to the product.
* **product\_offering\_id (text):** An identifier for the product offering. Potentially a foreign key to a `dim_product_offering` table (inferred).
* **product\_offering\_name (text):** The name of the product offering.
* **product\_name (text):** The name of the product.
* **place\_id (text):** An identifier related to the product's location or place. Foreign key to `dim_place` (inferred).
* **product\_class (text):** Categorization of the product (e.g., service, hardware).
* **product\_status (text):** The current status of the product (e.g., active, inactive).
* **is\_product\_active (integer):** Indicates if the product is active (1) or not (0).
* **is\_product\_suspended (integer):** Indicates if the product is suspended (1) or not (0).
* **is\_product\_in\_active (integer):** Indicates if the product is inactive (1) or not (0).
* **is\_bundle (boolean):** Indicates if the product is part of a bundle (true) or not (false).
* **order\_date (timestamp without time zone):** The date the product was ordered.
* **start\_date (timestamp without time zone):** The date the product service started.
* **price\_type (text):** The type of pricing associated with the product (e.g., recurring, one-time).
* **price\_type\_value (text):** The value associated with the price type.
* **recurring\_charge\_period (text):** The period for recurring charges (e.g., monthly, annually).
* **tax\_rate (double precision):** The tax rate applied to the product.
* **duty\_free\_amount (double precision):** The duty-free amount for the product.
* **tax\_included\_amount (double precision):** The amount of tax included in the product price.
* **add\_product\_order\_item\_id (text):** Identifier for adding a product to an order item.
* **delete\_product\_order\_item\_id (text):** Identifier for deleting a product from an order item.
* **sales\_agent\_id (text):** The identifier of the sales agent. Foreign key to `dim_sales_agent` (inferred).
* **sales\_partner\_id (text):** The identifier of the sales partner. Foreign key to `dim_sales_partner` (inferred).
* **commitment\_duration\_units (text):** The units for the commitment duration (e.g., months, years).
* **commitment\_duration (double precision):** The duration of the commitment.
* **commitment\_term\_name (text):** The name of the commitment term.
* **commitment\_term\_type (text):** The type of commitment term.
* **usage\_duration\_units (text):** The units for the usage duration.
* **usage\_duration (double precision):** The duration of the product usage.
* **usage\_term\_name (text):** The name of the usage term.
* **usage\_term\_type (text):** The type of usage term.
* **guarantee\_amount (text):** The amount of guarantee associated with the product.
* **device\_type (text):** The type of device associated with the product.
* **gl\_code (text):** General Ledger code associated with the product.
* **infrastructure (text):** The infrastructure associated with the product.
* **ip\_address (text):** The IP address associated with the product.
* **mac\_address (text):** The MAC address associated with the product.
* **oss\_code (text):** OSS code associated with the product.
* **smart\_card\_serialnumber (text):** The serial number of the smart card associated with the product.
* **sla (text):** Service Level Agreement associated with the product.
* **spec\_type (text):** Specification type of the product.
* **specsub\_type (text):** Specification subtype of the product.
* **resource\_model (text):** The resource model associated with the product.
* **rating\_type (text):** The type of rating associated with the product.
* **postpaid\_type (text):** The postpaid type associated with the product.
* **brand\_name (text):** The brand name of the product.
* **tv\_infrastructure (text):** The TV infrastructure associated with the product.
* **revision (bigint):** Revision number of the product.
* **href (text):** Hypertext reference (URL) associated with the product.
### Relationships with Other Tables (Foreign Keys):
* **customer\_id:** Foreign key referencing `dim_customer`.
* **agreement\_id:** Foreign key referencing `dim_agreement`.
* **product\_offering\_id:** Foreign key referencing `dim_product_offering`.
* **place\_id:** Foreign key referencing `dim_place`.
* **sales\_agent\_id:** Foreign key referencing `dim_sales_agent`.
* **sales\_partner\_id:** Foreign key referencing `dim_sales_partner`.
### Cardinality of Relationships:
* Relationship with `dim_customer` is likely one-to-many (one customer can have many products).
* Relationship with `dim_agreement` is likely one-to-many (one agreement can have many products).
* Relationship with `dim_product_offering` is likely one-to-many (one product offering can be associated with many products).
* Relationship with `dim_place` is likely one-to-many (one place can have many products).
* Relationship with `dim_sales_agent` is likely one-to-many (one sales agent can be associated with many products).
* Relationship with `dim_sales_partner` is likely one-to-many (one sales partner can be associated with many products).
### Common Use Cases/Example Queries:
* **Tracking Product Details:** Retrieving detailed information about a specific product.
* Example SQL Snippet: `SELECT * FROM dim_product WHERE product_id = 'your_product_id';`
* **Customer Product Overview:** Listing all products associated with a specific customer.
* Example SQL Snippet: `SELECT * FROM dim_product WHERE customer_id = 'your_customer_id';`
* **Aggregating product counts:** Calculating the number of products per product offering.
* Example SQL Snippet: `SELECT product_offering_name, count(*) FROM dim_product GROUP BY product_offering_name;`
### Data Constraints and Business Rules:
* `product_id` is likely unique and not null.
* `is_product_active`, `is_product_suspended`, and `is_product_in_active` should be mutually exclusive (only one can be true at a time).
* Date fields (order\_date, start\_date) should be consistent with business timelines.
### Data Update Frequency/Volatility:
* Data is likely updated frequently, with changes reflecting product status, customer associations, and order information.
### Potential Pitfalls/Things to Avoid When Querying:
* Ensure proper joins when querying across related tables (e.g., `dim_customer`, `dim_agreement`).
* Be aware of product lifecycle (status) when filtering data. Consider `is_product_active` and other status flags.
* Performance can suffer if large datasets are queried without appropriate indexes.
### Important Notes/Considerations for Querying:
* Always join to other dimension tables (e.g., `dim_customer`, `dim_agreement`) to get a complete view of the product's context.
* Use appropriate date ranges when analyzing product activity over time.
* Consider the business rules related to product states when building queries.
---
## Table: `dim_product_order_item`
### Schema: `public`
### All Columns and their Descriptions:
- `product_order_item_id` (text): Unique identifier for a product order item. Likely the primary key.
- `product_order_id` (text): Likely a foreign key referencing a table containing product order information (e.g., `dim_product_order`).
- `customer_id` (text): Likely a foreign key referencing the `dim_customer` table.
- `agreement_id` (text): Likely a foreign key referencing the `dim_agreement` table.
- `agreement_name` (text): Name of the agreement.
- `order_item_agreement_id` (text): Identifier for the order item agreement.
- `order_item_agreement_name` (text): Name of the order item agreement.
- `billing_account_id` (text): Identifier for the billing account.
- `sales_channel` (text): The sales channel through which the order was placed.
- `order_date` (timestamp without time zone): The date the order was placed.
- `order_status` (type): The status of the order (list status type: ACKNOWLEDGED,ASSESSING,CANCELLATION,CANCELLED,COMPLETED,INPROGRESS).
- `order_item_status` (text): The status of the order item.
- `order_description` (text): Description of the order.
- `order_revision` (bigint): The revision number of the order.
- `order_class` (text): The class of the order.
- `order_href` (text): Hyperlink related to the order.
- `order_item_type` (text): The type of the order item (e.g., 'Product', 'Service').
- `quantity` (bigint): The quantity of the product ordered.
- `order_item_price_type` (text): The price type of the order item (e.g., 'Recurring', 'One-time').
- `order_item_recurring_charge_period` (text): The recurring charge period if applicable.
- `order_item_tax_rate` (double precision): The tax rate applied to the order item.
- `order_item_duty_free_amount` (double precision): The duty-free amount of the order item.
- `order_item_tax_included_amount` (double precision): The tax-included amount of the order item.
- `order_item_action` (text): The action performed on the order item (e.g., 'Add', 'Update', 'Delete').
### Relationships with Other Tables (Foreign Keys):
- `customer_id` (FK) references `dim_customer`: Links the order item to a specific customer.
- `agreement_id` (FK) references `dim_agreement`: Links the order item to a specific agreement.
- `product_order_id`(FK) references `dim_product`: links the order item to a specific product order.
### Cardinality of Relationships:
- Relationship with `dim_customer` is one-to-many. One customer can have multiple order items.
- Relationship with `dim_agreement` is one-to-many. One agreement can have multiple order items.
- Relationship with `dim_product_order` is one-to-many. One product order can have multiple order items.
### Common Use Cases/Example Queries:
- Track sales and revenue by customer, product, and agreement.
- Analyze order item status and trends.
- Calculate total revenue and taxes.
- Example SQL Snippet: `SELECT sum(quantity * order_item_tax_included_amount) FROM dim_product_order_item WHERE customer_id = 'customer123';`
### Data Constraints and Business Rules:
- `product_order_item_id` should be unique.
- `order_date` should be a valid date.
- `quantity` should be a non-negative number.
- `order_item_tax_rate`, `order_item_duty_free_amount`, and `order_item_tax_included_amount` should be valid numeric values.
### Data Update Frequency/Volatility:
- Data is likely updated frequently, reflecting new orders, order updates, and cancellations.
### Potential Pitfalls/Things to Avoid When Querying:
- Ensure correct join conditions when joining with other tables.
- Be mindful of the `order_item_status` to filter for relevant order items.
- Consider time-based filtering using `order_date` for trend analysis.
### Important Notes/Considerations for Querying:
- This table is central to understanding product order details.
- Join with `dim_customer` and `dim_agreement` for customer and agreement details. |