blob: 10d829fdee5fbea56e4235e0e4a62119b73771d8 [file] [log] [blame]
#############################################################################################################
# Owner: Customer Main
# Created by: yangstanley@, hillz@
# Created: April 8, 2021
# Purpose: This table includes a list of legal entities which could be Association, corporation, partnership,
# proprietorship, non-profit institution, government institution, or individual that has legal standing
# in the eyes of law. Associated with each other via a legal hierarchy.
#
# This table is partitioned by data injection date(_PARTITIONDATE)
#############################################################################################################
view: demo_l4c {
derived_table: {
sql: WITH legal_entities AS (
SELECT
legal_entity_id
, name
, address.revision AS revision
, address.region_code AS region_code
, address.language_code AS language_code
, address.postal_code AS postal_code
, address.sorting_code AS sorting_code
, address.administrative_area AS administrative_area
, address.locality AS locality
, address.organization AS organization
, duns
, customer_id
, parent_id
, commit_timestamp
, address_lines
, recipients
, _PARTITIONDATE AS partition_date
FROM concord-prod.service_customermdm_test.legal_entities
LEFT JOIN UNNEST(address.address_lines) AS address_lines
LEFT JOIN UNNEST(address.recipients) AS recipients
WHERE _PARTITIONDATE = (
SELECT MAX(_PARTITIONDATE)
FROM concord-prod.service_customermdm_test.legal_entities
WHERE _PARTITIONDATE > DATE_ADD(CURRENT_DATE, INTERVAL -3 DAY) )
AND _PARTITIONDATE > DATE_ADD(CURRENT_DATE, INTERVAL -3 DAY)
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
)
SELECT
legal_entity_id
, name
, revision
, region_code
, language_code
, postal_code
, sorting_code
, administrative_area
, locality
, organization
, duns
, customer_id
, parent_id
, commit_timestamp
, partition_date
, STRING_AGG(address_lines, " " ORDER BY address_lines) AS address_lines
, STRING_AGG(recipients, " " ORDER BY recipients) AS recipients
FROM legal_entities
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;;
}
########## PRIMARY KEYS ##########
dimension: id {
primary_key: yes
group_label: "IDs"
label: "Billing Account ID"
description: "ID of the legal entity/billing account"
type: string
sql: ${TABLE}.legal_entity_id ;;
}
########## DIMENSIONS ##########
dimension: address_lines {
group_label: "Address"
description: "Street address of the customer. Some data are not well documented or are missing"
type: string
sql: ${TABLE}.address_lines ;;
}
dimension: administrative_area {
group_label: "Address"
description: "State/Province of the legal entity"
type: string
sql: ${TABLE}.administrative_area ;;
}
dimension_group: commit {
hidden: yes
description: "The date the legal entity's data was last committed"
type: time
datatype: datetime
sql: ${TABLE}.commit_timestamp ;;
timeframes: [date]
}
dimension: customer_id {
hidden: yes
group_label: "IDs"
description: "ID of the customer associates to the legal eneity"
type: string
sql: ${TABLE}.customer_id ;;
}
dimension: duns_id {
group_label: "IDs"
label: "D&B DUNS ID"
description: "Duns & Bradstreet ID of the legal entity"
type: string
sql: ${TABLE}.duns ;;
}
dimension: language_code {
group_label: "Address"
description: "ISO language code of the legal entity"
type: string
sql: ${TABLE}.language_code ;;
}
dimension: locality {
group_label: "Address"
description: "City of the legal entity"
type: string
sql: ${TABLE}.locality ;;
}
dimension: name {
label: "Billing Account Name"
description: "Name of the legal entity/billing account"
type: string
sql: ${TABLE}.name ;;
}
dimension: parent_id {
group_label: "IDs"
label: "Parent Billing Account ID"
description: "The ID of the parent company of the legal entity"
type: string
sql: ${TABLE}.parent_id ;;
}
dimension: postal_code {
group_label: "Address"
description: "Postal Code of the legal entity"
type: string
sql: ${TABLE}.postal_code ;;
}
dimension: region_code {
group_label: "Address"
description: "Country code of the legal entity"
type: string
sql: ${TABLE}.region_code ;;
}
dimension: sorting_code {
group_label: "Address"
description: "Last 4 digits of the 9-digit USA postal code of the legal entity"
type: string
sql: ${TABLE}.sorting_code ;;
}
########## MEASURES ##########
measure: count {
label: "Billing Account Count"
description: "Legal entity count"
type: count_distinct
sql: ${id} ;;
drill_fields: [customer_entities.id ,customer_entities.name, id ,name, duns_id, parent_id]
}
measure: count_parent {
description: "Parent Account Counts"
type: count_distinct
sql: ${parent_id} ;;
}
}