Skip to content

Commit 2a021b6

Browse files
committed
SLA
1 parent 4cd4e37 commit 2a021b6

File tree

3 files changed

+43
-27
lines changed

3 files changed

+43
-27
lines changed

README.md

+16-12
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ The fixed structure must be technology-agnostic. The first fields of teh fixed s
4040
* `Email: [Option[String]]` point of contact between consumers and maintainers of the Data Product. It could be the owner or a distribution list, but must be reliable and responsive.
4141
* `OwnerGroup [String]`: LDAP user/group that is owning the data product.
4242
* `DevGroup [String]`: LDAP user/group that is in charge to develop and maintain the data product.
43-
* `InformationSLA: [Option[String]]` describes what SLA the Data Product team is providing to answer additional information requests about the Data Product itself.
43+
* `SupportSLA: [Option[String]]` describes what SLA the Data Product team is providing when some support is needed.
44+
* `SupportHours: [Option[String]]` define when the suport is available. Ex During working days from 9 to 18
45+
* `ResponseTime: [Option[String]]` define the amount of time needed to take care of an incoming feature
46+
* `ResolutionTime: [Option[String]]` define the amount of time needed to fix the date
47+
* `InformationTime: [Option[String]]` define the amount of time needed to answer clarification questions.
4448
* `Status: [Option[String]]` this is an enum representing the status of this version of the Data Product. Allowed values are: `[Draft|Published|Retired]`. This is a metadata that communicates the overall status of the Data Product but is not reflected to the actual deployment status.
4549
* `Maturity: [Option[String]]` this is an enum to let the consumer understand if it is a tactical solution or not. It is really useful during migration from Data Warehouse or Data Lake. Allowed values are: `[Tactical|Strategic]`.
4650
* `Billing: [Option[Yaml]]` this is a free form key-value area where is possible to put information useful for resource tagging and billing.
@@ -94,18 +98,18 @@ Constraints:
9498
* `IntervalOfChange: [Option[String]]` how often changes in the data are reflected.
9599
* `Timeliness: [Option[String]]` the skew between the time that a business fact occurs and when it becomes visibile in the data.
96100
* `UpTime: [Option[String]]` the percentage of port availability.
97-
* `TermsAndConditions: [Option[String]]` If the data is usable only in specific environments.
98101
* `Endpoint: [Option[URL]]` this is the API endpoint that self-describe the output port and provide insightful information at runtime about the physical location of the data, the protocol must be used, etc.
99-
* `biTempBusinessTs: [Option[String]]` name of the field representing the business timestamp, as per the "bi-temporality" definition; it should match with a field in the related `Schema`
100-
* `biTempWriteTs: [Option[String]]` name of the field representing the technical (write) timestamp, as per the "bi-temporality" definition; it should match with a field in the related `Schema`
101-
* `DataSharingAgreement: [Yaml]` This part is covering usage, privacy, purpose, limitations and is independent by the data contract.
102-
* `Purpose: [Option[String]]` what is the goal of this data set.
103-
* `Billing: [Option[String]]` how a consumer will be charged back when it consumes this output port.
104-
* `Security: [Option[String]]` additional information related to security aspects, like restrictions, masking, sensibile information and privacy.
105-
* `IntendedUsage: [Option[String]]` any other information needed by the consumer in order to effectively consume the data, it could be related to technical stuff (e.g. extract no more than one year of data for good performances ) or to business domains (e.g. this data is only useful in the marketing domains).
106-
* `Limitations: [Option[String]]` If any limitation is present it must be made super clear to the consumers.
107-
* `LifeCycle: [Option[String]]` Describe how the data will be historicized and how and when it will be deleted.
108-
* `Confidentiality: [Option[String]]` Describe what a consumer should do to keep the information confidential, how to process and store it. Permission to share or report it.
102+
* `DataSharingAgreement: [Yaml]` This part is covering usage, privacy, purpose, limitations and is independent by the data contract.
103+
* `TermsAndConditions: [Option[String]]` If the data is usable only in specific environments.
104+
* `Purpose: [Option[String]]` what is the goal of this data set.
105+
* `Billing: [Option[String]]` how a consumer will be charged back when it consumes this output port.
106+
* `Security: [Option[String]]` additional information related to security aspects, like restrictions, masking, sensibile information and privacy.
107+
* `IntendedUsage: [Option[String]]` any other information needed by the consumer in order to effectively consume the data, it could be related to technical stuff (e.g. extract no more than one year of data for good performances ) or to business domains (e.g. this data is only useful in the marketing domains).
108+
* `Limitations: [Option[String]]` If any limitation is present it must be made super clear to the consumers.
109+
* `LifeCycle: [Option[String]]` Describe how the data will be historicized and how and when it will be deleted.
110+
* `Confidentiality: [Option[String]]` Describe what a consumer should do to keep the information confidential, how to process and store it. Permission to share or report it.
111+
* `biTempBusinessTs: [Option[String]]` name of the field representing the business timestamp, as per the "bi-temporality" definition; it should match with a field in the related `Schema`
112+
* `biTempWriteTs: [Option[String]]` name of the field representing the technical (write) timestamp, as per the "bi-temporality" definition; it should match with a field in the related `Schema`
109113
* `Tags: [Array[Yaml]]` Tag labels at OutputPort level, here we can have security classification for example (please refer to [OpenMetadata documentation](https://docs.open-metadata.org/v1.0.0/main-concepts/metadata-standard/schemas/type/taglabel)).
110114
* `SampleData: [Option[Yaml]]` provides a sample data of your Output Port (please refer to [OpenMetadata specification](https://docs.open-metadata.org/v1.0.0/main-concepts/metadata-standard/schemas/entity/data/table#properties)).
111115
* `SemanticLinking: [Option[Yaml]]` here we can express semantic relationships between this output port and other outputports (also coming from other domains and data products). For example, we could say that column "customerId" of our SQL Output Port references the column "id" of the SQL Output Port of the "Customer" Data Product.

data-product-specification.cue

+11-5
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,13 @@ import "strings"
5858
upTime?: string | null
5959
...
6060
}
61-
termsAndConditions?: string | null
6261
endpoint?: #URL | null
63-
biTempBusinessTs?: string | null
64-
biTempWriteTs?: string | null
62+
dataSharingAgreement: #DataSharingAgreement
6563
...
6664
}
6765

6866
#DataSharingAgreement: {
67+
termsAndConditions?: string | null
6968
purpose?: string | null
7069
billing?: string | null
7170
security?: string | null
@@ -93,9 +92,11 @@ import "strings"
9392
retentionTime?: string | null
9493
processDescription?: string | null
9594
dataContract: #DataContract
96-
dataSharingAgreement: #DataSharingAgreement
95+
biTempBusinessTs?: string | null
96+
biTempWriteTs?: string | null
9797
tags: [... #OM_Tag]
9898
sampleData?: #OM_TableData | null
99+
sampleQuery?: string | null
99100
semanticLinking?: {...} | null
100101
specific: {...}
101102
...
@@ -190,7 +191,12 @@ dataProductOwnerDisplayName: string
190191
devGroup: string
191192
ownerGroup: string
192193
email?: string | null
193-
informationSLA?: string | null
194+
supportSLA: {
195+
supportHours: string | null
196+
responseTime: string | null
197+
resolutionTime: string | null
198+
informationTime: string | null
199+
}
194200
status?: string & =~"(?i)^(draft|published|retired)$" | null
195201
maturity?: string & =~"(?i)^(tactical|strategic)$" | null
196202
billing?: {...} | null

example.yaml

+16-10
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ ownerGroup: dataproduct1_corp.com
1313
devGroup: dataproduct1_dev_corp.com
1414
ownerGroup: dataproduct1_corp.com
1515
devGroup: dataproduct1_dev_corp.com
16-
informationSLA: 2WD
16+
supportSLA:
17+
supportHours: 8x5
18+
responseTime: 1H
19+
resolutionTime: undefined
20+
informationTime: 2WD
1721
status: DRAFT
1822
maturity: Strategic
1923
billing: {}
@@ -64,16 +68,17 @@ components:
6468
intervalOfChange: 1 hours
6569
timeliness: 1 minutes
6670
upTime: 99.9%
67-
termsAndConditions: only usable in development environment
71+
6872
endpoint: https://myurl/development/my_domain/my_data_product/1.0.0/my_raw_s3_port
69-
dataSharingAgreements:
70-
purpose: this output port want to provide a rich set of profitability KPIs related to the customer
71-
billing: 5$ for each full scan
72-
security: In order to consume this output port an additional security check with compliance must be done
73-
intendedUsage: the dataset is huge so it is recommended to extract maximum 1 year of data and to use these KPIs in the marketing or sales domain, but not for customer care
74-
limitations: is not possible to use this data without a compliance check
75-
lifeCycle: the maximum retention is 10 years, and eviction is happening on the first of january
76-
confidentiality: if you want to store this data somewhere else, PII columns must be masked
73+
dataSharingAgreements:
74+
termsAndConditions: only usable in development environment
75+
purpose: this output port want to provide a rich set of profitability KPIs related to the customer
76+
billing: 5$ for each full scan
77+
security: In order to consume this output port an additional security check with compliance must be done
78+
intendedUsage: the dataset is huge so it is recommended to extract maximum 1 year of data and to use these KPIs in the marketing or sales domain, but not for customer care
79+
limitations: is not possible to use this data without a compliance check
80+
lifeCycle: the maximum retention is 10 years, and eviction is happening on the first of january
81+
confidentiality: if you want to store this data somewhere else, PII columns must be masked
7782
tags:
7883
- tagFQN: experimental
7984
source: Tag
@@ -84,6 +89,7 @@ components:
8489
labelType: Manual
8590
state: Confirmed
8691
sampleData: {}
92+
sampleQuery: select * from dp.table
8793
semanticLinking: {}
8894
specific:
8995
directory: history

0 commit comments

Comments
 (0)