feat(1c): ingest company registry workbook
This commit is contained in:
@@ -25,6 +25,16 @@ CREATE TABLE IF NOT EXISTS analytics_1c.raw_1c_companies
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (ingested_at, source_file);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS analytics_1c.raw_1c_company_registry
|
||||
(
|
||||
ingested_at DateTime DEFAULT now(),
|
||||
source_file String,
|
||||
source_sheet String,
|
||||
payload String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (ingested_at, source_file, source_sheet);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS analytics_1c.raw_reglog
|
||||
(
|
||||
ingested_at DateTime DEFAULT now(),
|
||||
|
||||
@@ -53,6 +53,23 @@ CREATE TABLE IF NOT EXISTS analytics_1c.companies
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (infobase, ts);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS analytics_1c.company_registry
|
||||
(
|
||||
ts DateTime,
|
||||
source_file String,
|
||||
source_sheet LowCardinality(String),
|
||||
company_name String,
|
||||
company_key String,
|
||||
assignee_name String,
|
||||
registry_status LowCardinality(String),
|
||||
share_text String,
|
||||
key_contour UInt8,
|
||||
inn String,
|
||||
kpp String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (company_key, ts, source_sheet);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS analytics_1c.reglog_events
|
||||
(
|
||||
ts DateTime,
|
||||
|
||||
@@ -101,6 +101,20 @@ SELECT
|
||||
FROM analytics_1c.companies
|
||||
GROUP BY infobase;
|
||||
|
||||
CREATE OR REPLACE VIEW analytics_1c.v_company_registry_current AS
|
||||
SELECT
|
||||
company_key,
|
||||
argMax(company_name, ts) AS company_name,
|
||||
argMax(assignee_name, ts) AS assignee_name,
|
||||
argMax(registry_status, ts) AS registry_status,
|
||||
argMax(share_text, ts) AS share_text,
|
||||
argMax(key_contour, ts) AS key_contour,
|
||||
argMax(inn, ts) AS inn,
|
||||
argMax(kpp, ts) AS kpp,
|
||||
max(ts) AS last_registry_snapshot_at
|
||||
FROM analytics_1c.company_registry
|
||||
GROUP BY company_key;
|
||||
|
||||
CREATE OR REPLACE VIEW analytics_1c.v_company_portfolio_overview AS
|
||||
WITH
|
||||
base AS
|
||||
@@ -137,6 +151,11 @@ company_state AS
|
||||
SELECT *
|
||||
FROM analytics_1c.v_companies_current
|
||||
),
|
||||
registry_state AS
|
||||
(
|
||||
SELECT *
|
||||
FROM analytics_1c.v_company_registry_current
|
||||
),
|
||||
signals AS
|
||||
(
|
||||
SELECT
|
||||
@@ -196,6 +215,12 @@ SELECT
|
||||
if(company_state.organization != '', company_state.organization, base.organization) AS organization,
|
||||
base.counterparty AS counterparty,
|
||||
if(company_state.company_name != '', company_state.company_name, base.counterparty) AS company_name,
|
||||
ifNull(registry_state.assignee_name, '') AS registry_assignee_name,
|
||||
ifNull(registry_state.registry_status, '') AS registry_status,
|
||||
ifNull(registry_state.share_text, '') AS registry_share_text,
|
||||
ifNull(registry_state.key_contour, 0) AS registry_key_contour,
|
||||
ifNull(registry_state.inn, '') AS registry_inn,
|
||||
ifNull(registry_state.kpp, '') AS registry_kpp,
|
||||
ifNull(company_state.owner_user, '') AS owner_user,
|
||||
ifNull(company_state.base_id, '') AS base_id,
|
||||
ifNull(company_state.base_path, '') AS base_path,
|
||||
@@ -229,6 +254,7 @@ SELECT
|
||||
ifNull(signals.top_signal, '') AS top_signal
|
||||
FROM base
|
||||
LEFT JOIN company_state ON company_state.infobase = base.infobase
|
||||
LEFT JOIN registry_state ON registry_state.company_key = trimBoth(replaceRegexpAll(replaceRegexpAll(replaceRegexpAll(upperUTF8(base.counterparty), '(^|\\s)20[0-9]{2}($|\\s)', ' '), '[^0-9A-ZА-ЯЁ]+', ' '), '\\s+', ' '))
|
||||
LEFT JOIN d7 ON d7.infobase = base.infobase AND d7.counterparty = base.counterparty
|
||||
LEFT JOIN d30 ON d30.infobase = base.infobase AND d30.counterparty = base.counterparty
|
||||
LEFT JOIN signals ON signals.infobase = base.infobase AND signals.counterparty = base.counterparty
|
||||
|
||||
Reference in New Issue
Block a user