Commit ab7ce150 authored by suryakant's avatar suryakant

Sterlite Custom Report Updates

parent f0aa3dde
......@@ -5,7 +5,6 @@ EXCEPTION_TRACE=True
ENV=dev
# PostgreSQL DB Details
POSTGRES_URI=postgresql://svc_sterlite:sterliteSvc#1247@20.207.116.89:5946/strelite-datalakedev
POSTGRES_HOST = 20.207.116.89
POSTGRES_PORT = 5946
POSTGRES_USERNAME = svc_sterlite
......
......@@ -56,7 +56,6 @@ class PostgresDetails(BaseSettings):
env_prefix (str): The environment variable prefix for PostgreSQL settings.
"""
uri: str
host: str
port: str
username: str
......
......@@ -337,6 +337,354 @@ class SterliteRefineryQuery:
GROUP BY 1,2,3
"""
class GridPowerAvailability:
""" POWER AVAILABILITY """
QUERY_1 = """
SELECT
'Grid Power Availability' AS power_availability,
'%' AS uom,
ROUND(AVG(GRID_PLAN) :: NUMERIC, 2) AS norms,
ROUND(AVG(GRID_ACTUAL) :: NUMERIC, 2) AS on_date
FROM
(SELECT DD_1.DATE_DT AS date,
PLAN.GRID_PLAN,
CASE
WHEN ACTUAL.GRID_ACTUAL IS NULL THEN 100
ELSE ACTUAL.GRID_ACTUAL
END AS GRID_ACTUAL
FROM
(SELECT DATE(date) AS POSTING_DATE,
AREA_ICS_HEAD_VALUE::double precision AS GRID_PLAN
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) = 'grid power availability'
AND DATE_PART('day',date) = 1
GROUP BY 1,
2)PLAN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON DD_1.MNTH = DATE_PART('month',
PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year',
PLAN.POSTING_DATE)
LEFT JOIN
(SELECT DATE(date) AS POSTING_DATE,
MAX(CASE
WHEN LOWER(TRIM(LOSS_OR_GAIN_SHUTDOWN_RECTIFIER)) = 'both' THEN
((24 - COALESCE(LOSS_OR_GAIN_SHUTDOWN_DURATION::double precision,
0)) / 24) * 100
ELSE NULL
END) AS GRID_ACTUAL
FROM SEMANTIC_PROD.SHUTDOWN_DETAILS
GROUP BY 1)ACTUAL ON DD_1.DATE_DT = ACTUAL.POSTING_DATE)GRID_DATA
WHERE date BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2
"""
QUERY_2 = """
SELECT
'Grid Power Availability' AS power_availability,
'%' AS uom,
ROUND(AVG(GRID_ACTUAL) :: NUMERIC, 2) AS mtd
FROM
(SELECT DD_1.DATE_DT AS date,
PLAN.GRID_PLAN,
CASE
WHEN ACTUAL.GRID_ACTUAL IS NULL THEN 100
ELSE ACTUAL.GRID_ACTUAL
END AS GRID_ACTUAL
FROM
(SELECT DATE(date) AS POSTING_DATE,
AREA_ICS_HEAD_VALUE::double precision AS GRID_PLAN
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) = 'grid power availability'
AND DATE_PART('day',date) = 1
GROUP BY 1,
2)PLAN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON DD_1.MNTH = DATE_PART('month',
PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year',
PLAN.POSTING_DATE)
LEFT JOIN
(SELECT DATE(date) AS POSTING_DATE,
MAX(CASE
WHEN LOWER(TRIM(LOSS_OR_GAIN_SHUTDOWN_RECTIFIER)) = 'both' THEN
((24 - COALESCE(LOSS_OR_GAIN_SHUTDOWN_DURATION::double precision,
0)) / 24) * 100
ELSE NULL
END) AS GRID_ACTUAL
FROM SEMANTIC_PROD.SHUTDOWN_DETAILS
GROUP BY 1)ACTUAL ON DD_1.DATE_DT = ACTUAL.POSTING_DATE)GRID_DATA
WHERE date BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2
"""
QUERY_3 = """
SELECT
'Grid Power Availability' AS power_availability,
'%' AS uom,
ROUND(AVG(GRID_PLAN) :: NUMERIC, 2) AS norms,
ROUND(AVG(GRID_ACTUAL) :: NUMERIC, 2) AS ytd
FROM
(SELECT DD_1.DATE_DT AS date,
PLAN.GRID_PLAN,
CASE
WHEN ACTUAL.GRID_ACTUAL IS NULL THEN 100
ELSE ACTUAL.GRID_ACTUAL
END AS GRID_ACTUAL
FROM
(SELECT DATE(date) AS POSTING_DATE,
AREA_ICS_HEAD_VALUE::double precision AS GRID_PLAN
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) = 'grid power availability'
AND DATE_PART('day',date) = 1
GROUP BY 1,
2)PLAN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON DD_1.MNTH = DATE_PART('month',
PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year',
PLAN.POSTING_DATE)
LEFT JOIN
(SELECT DATE(date) AS POSTING_DATE,
MAX(CASE
WHEN LOWER(TRIM(LOSS_OR_GAIN_SHUTDOWN_RECTIFIER)) = 'both' THEN
((24 - COALESCE(LOSS_OR_GAIN_SHUTDOWN_DURATION::double precision,
0)) / 24) * 100
ELSE NULL
END) AS GRID_ACTUAL
FROM SEMANTIC_PROD.SHUTDOWN_DETAILS
GROUP BY 1)ACTUAL ON DD_1.DATE_DT = ACTUAL.POSTING_DATE)GRID_DATA
WHERE date BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2
"""
class Circulation1:
""" POWER AVAILABILITY """
QUERY_1 = """
SELECT
CIRCULATION as power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(AREA_ICS_HEAD_VALUE) AS norms,
AVG(OPERATION_HOURS) AS on_date
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT))
like ('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 1'
AND date BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2
"""
QUERY_2 = """
SELECT
CIRCULATION as power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(OPERATION_HOURS) AS mtd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT))
like ('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 1'
AND date BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2
"""
QUERY_3 = """
SELECT
CIRCULATION as power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(OPERATION_HOURS) AS ytd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT))
like ('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 1'
AND date BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2
"""
class Circulation2:
""" POWER AVAILABILITY """
QUERY_1 = """
SELECT CIRCULATION AS power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(AREA_ICS_HEAD_VALUE) AS norms,
AVG(OPERATION_HOURS) AS on_date
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) like ('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH
FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 2'
AND date BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2
"""
QUERY_2 = """
SELECT CIRCULATION AS power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(OPERATION_HOURS) AS mtd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) like
('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH
FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 2'
AND date BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2
"""
QUERY_3 = """
SELECT CIRCULATION AS power_availability,
COALESCE(RLB.AREA_ICS_HEAD_UOM, 'Hrs') AS uom,
AVG(OPERATION_HOURS) AS ytd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
OPERATION_HOURS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL) DCS
LEFT JOIN
(SELECT DATE("date") AS DATETIME,
AREA_ICS_HEAD_SELECT,
AREA_ICS_HEAD_VALUE,
AREA_ICS_HEAD_UOM
FROM SEMANTIC_PROD.AREA_ICS_HEAD_REFINERY_NORMS
WHERE LOWER(TRIM(AREA_ICS_HEAD_SELECT)) like
('%rectifier running%')
AND AREA_ICS_HEAD_VALUE IS NOT NULL
AND DATE_PART('day',
DATE(date)) = 1) RLB ON EXTRACT(MONTH
FROM date) = EXTRACT(MONTH
FROM DATE(RLB.DATETIME))
AND EXTRACT(YEAR
FROM date) = EXTRACT(YEAR
FROM DATE(RLB.DATETIME))
WHERE CIRCULATION = 'Circulation 2'
AND date BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2
"""
class Cir140KARectifierAvgCurrent:
""" POWER AVAILABILITY """
QUERY_1 = """
......@@ -518,6 +866,164 @@ class SterliteRefineryQuery:
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
"""
class AcpCcpcCcp:
""" RM ANODE RECEIPT DETAILS """
QUERY_1 = """
SELECT
first_tbl.rm_anode_receipt_details,
first_tbl.on_date,
second_tbl.mtd,
third_tbl.ytd
FROM
(
SELECT kpi as rm_anode_receipt_details, SUM(METRIC_VALUE) AS on_date
FROM
(SELECT 'ACP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCPC Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103C'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000099'
GROUP BY 1,3)TB
WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1
) as first_tbl
JOIN
(
SELECT kpi as rm_anode_receipt_details,
SUM(METRIC_VALUE) AS mtd
FROM
(SELECT 'ACP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCPC Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103C'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000099'
GROUP BY 1,3)TB
WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1
) as second_tbl
ON first_tbl.rm_anode_receipt_details=second_tbl.rm_anode_receipt_details
JOIN
(
SELECT kpi as rm_anode_receipt_details,
SUM(METRIC_VALUE) AS ytd
FROM
(SELECT 'ACP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCPC Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103C'
AND MATERIAL_ID = '330000091'
GROUP BY 1,3
UNION ALL SELECT 'CCP Anode Receipt (MT)' AS KPI,
SUM(QUANTITY::double precision) AS METRIC_VALUE,
DATE(date) AS date
FROM SEMANTIC_PROD.FACT_SPENT_ANODE
WHERE MOVEMENT_TYPE = '101'
AND PLANT = '1200'
AND STORAGE_LOCATION = '103Q'
AND MATERIAL_ID = '330000099'
GROUP BY 1,3)TB
WHERE DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1
) as third_tbl
ON second_tbl.rm_anode_receipt_details=third_tbl.rm_anode_receipt_details
"""
class BankCropStripping:
""" BANK / CROP / STRIPPING TIME """
QUERY_1 = """
SELECT
CASE
WHEN "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text)::numeric >= 1::numeric
AND "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text)::numeric <= 10::numeric THEN CONCAT('B',
"substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text),'C1')
WHEN "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text)::numeric >= 11::numeric
AND "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text)::numeric <= 22::numeric THEN CONCAT('B',
SUBSTRING(BTRIM(REFINERY_PRODUCTION_SELECT),
'\d+$'::text),
'C2')
END AS bank_crop,
ROUND(AVG(REFINARY_PRODUCTION_CE)::NUMERIC, 2) AS ce,
ROUND(SUM(REFINARY_PRODUCTION_THEORETICAL_WEIGHT)::NUMERIC, 2) AS theor_weight,
ROUND(SUM(REFINARY_PRODUCTION_ACTUAL_WEIGHT)::NUMERIC, 2) AS actual_weight,
ROUND(AVG(REFINARY_PRODUCTION_STRIPPING_TIME)::NUMERIC, 2) AS stripping_time
FROM SEMANTIC_PROD.BANKWISE_REFINERY_PRODUCTION
WHERE
REFINERY_PRODUCTION_SELECT IS NOT NULL AND
DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1
"""
class EdgeStripConsumption:
""" SPECIFIC CONSUMPTION """
QUERY_1 = """
......@@ -1502,3 +2008,264 @@ class SterliteRefineryQuery:
WHERE DATE = '{day_start_date}'
GROUP BY 1
"""
class CathodeDeposit:
""" PRODUCTION """
QUERY_1 = """
SELECT
'Cathode Production' AS production,
uom,
MAX(NORMS) AS norms,
ROUND(MAX(METRIC_VALUE):: NUMERIC, 2) AS on_date
FROM
(SELECT 'Cathode Deposit' AS KPI,
'MT' AS UOM, date,
CASE
WHEN LOWER(KPI) = 'deposit_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'deposit_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
GROUP BY 1,2,3,KPI) FOO
WHERE
DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2;
"""
QUERY_2 = """
SELECT
'Cathode Production' AS production,
uom,
MAX(NORMS) AS norms,
ROUND(MAX(METRIC_VALUE):: NUMERIC, 2) AS mtd
FROM
(SELECT 'Cathode Deposit' AS KPI,
'MT' AS UOM, date,
CASE
WHEN LOWER(KPI) = 'deposit_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'deposit_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
GROUP BY 1,2,3,KPI) FOO
WHERE
DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2;
"""
QUERY_3 = """
SELECT
'Cathode Production' AS production,
uom,
MAX(NORMS) AS norms,
ROUND(MAX(METRIC_VALUE):: NUMERIC, 2) AS ytd
FROM
(SELECT 'Cathode Deposit' AS KPI,
'MT' AS UOM, date,
CASE
WHEN LOWER(KPI) = 'deposit_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'deposit_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
GROUP BY 1,2,3,KPI) FOO
WHERE
DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2;
"""
class CathodeProductionSAP:
""" PRODUCTION """
QUERY_1 = """
SELECT
'Cathode Production SAP' AS production,
uom,
MAX(NORMS) AS norms,
MAX(METRIC_VALUE) AS on_date
FROM
(SELECT KPI,
'MT' AS UOM, date, CASE
WHEN LOWER(KPI) = 'cathode_production_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'cathode_production_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.PRODUCTION_KPI_VIEW
WHERE LOWER(KPI) like ('cathode_production%')
GROUP BY 1,2,
3,
KPI) FOO
WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2;
"""
QUERY_2 = """
SELECT
'Cathode Production SAP' AS production,
uom,
MAX(METRIC_VALUE) AS mtd
FROM
(SELECT KPI,
'MT' AS UOM, date, CASE
WHEN LOWER(KPI) = 'cathode_production_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'cathode_production_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.PRODUCTION_KPI_VIEW
WHERE LOWER(KPI) like ('cathode_production%')
GROUP BY 1,2,
3,
KPI) FOO
WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2;
"""
QUERY_3 = """
SELECT
'Cathode Production SAP' AS production,
uom,
MAX(METRIC_VALUE) AS ytd
FROM
(SELECT KPI,
'MT' AS UOM, date, CASE
WHEN LOWER(KPI) = 'cathode_production_plan' THEN SUM(METRIC_VALUE)
END AS NORMS,
CASE
WHEN LOWER(KPI) = 'cathode_production_actual' THEN SUM(METRIC_VALUE)
END AS METRIC_VALUE
FROM SEMANTIC_PROD.PRODUCTION_KPI_VIEW
WHERE LOWER(KPI) like ('cathode_production%')
GROUP BY 1,2,
3,
KPI) FOO
WHERE DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2;
"""
class DepositCellDay:
""" PRODUCTION """
QUERY_1 = """
SELECT
'Deposit / Cell / Day' AS production,
'MT' AS uom,
ROUND((SUM(DEP.DEPOSIT_PLAN) / (AVG(CELLS.CELLS_PLAN) * COUNT(1)))::
NUMERIC, 2) AS norms,
ROUND((SUM(DEP.DEPOSIT_ACTUAL) / (AVG(CELLS.CELLS_ACTUAL) * COUNT(1)))::
NUMERIC, 2) AS on_date
FROM
(SELECT date, COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_actual' THEN METRIC_VALUE
END),
0) AS DEPOSIT_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_plan' THEN METRIC_VALUE
END),
0) AS DEPOSIT_PLAN
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
WHERE LOWER(TRIM(KPI)) in ('deposit_actual',
'deposit_plan')
GROUP BY 1)DEP
LEFT JOIN
(SELECT date AS POSTING_DATE,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual'
THEN METRIC_VALUE
END),
0) AS CELLS_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan' THEN METRIC_VALUE
END),
0) AS CELLS_PLAN
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
WHERE LOWER(TRIM(KPI)) in ('operational_cells_actual',
'operational_cells_plan')
GROUP BY 1)CELLS ON DEP.DATE = CELLS.POSTING_DATE
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2;
"""
QUERY_2 = """
SELECT
'Deposit / Cell / Day' AS production,
'MT' AS uom,
ROUND((SUM(DEP.DEPOSIT_ACTUAL) / (AVG(CELLS.CELLS_ACTUAL) * COUNT(1)))::
NUMERIC, 2) AS mtd
FROM
(SELECT date, COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_actual' THEN METRIC_VALUE
END),
0) AS DEPOSIT_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_plan' THEN METRIC_VALUE
END),
0) AS DEPOSIT_PLAN
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
WHERE LOWER(TRIM(KPI)) in ('deposit_actual',
'deposit_plan')
GROUP BY 1)DEP
LEFT JOIN
(SELECT date AS POSTING_DATE,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual'
THEN METRIC_VALUE
END),
0) AS CELLS_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan' THEN METRIC_VALUE
END),
0) AS CELLS_PLAN
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
WHERE LOWER(TRIM(KPI)) in ('operational_cells_actual',
'operational_cells_plan')
GROUP BY 1)CELLS ON DEP.DATE = CELLS.POSTING_DATE
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2;
"""
QUERY_3 = """
SELECT
'Deposit / Cell / Day' AS production,
'MT' AS uom,
ROUND((SUM(DEP.DEPOSIT_ACTUAL) / (AVG(CELLS.CELLS_ACTUAL) * COUNT(1)))::
NUMERIC, 2) AS ytd
FROM
(SELECT date, COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_actual' THEN METRIC_VALUE
END),
0) AS DEPOSIT_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'deposit_plan' THEN METRIC_VALUE
END),
0) AS DEPOSIT_PLAN
FROM SEMANTIC_PROD.FINAL_DEPOSIT_KPI_VIEW
WHERE LOWER(TRIM(KPI)) in ('deposit_actual',
'deposit_plan')
GROUP BY 1)DEP
LEFT JOIN
(SELECT date AS POSTING_DATE,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual'
THEN METRIC_VALUE
END),
0) AS CELLS_ACTUAL,
COALESCE(MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan' THEN METRIC_VALUE
END),
0) AS CELLS_PLAN
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
WHERE LOWER(TRIM(KPI)) in ('operational_cells_actual',
'operational_cells_plan')
GROUP BY 1)CELLS ON DEP.DATE = CELLS.POSTING_DATE
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2;
"""
\ No newline at end of file
......@@ -79,12 +79,21 @@ class SterliteRefineryTemplate:
"YTD",
],
"query": {
"Grid Power Availability": [],
"Cir 1 Avg. Rectifier Running Hrs.": [],
"Cir 2 Avg. Rectifier Running Hrs.": [],
"Power Availability to Cir-1": [],
"Power Availability to Cir-2": [],
"Power Availability to Cell House": [],
"Grid Power Availability": [
SterliteRefineryQuery.GridPowerAvailability.QUERY_1,
SterliteRefineryQuery.GridPowerAvailability.QUERY_2,
SterliteRefineryQuery.GridPowerAvailability.QUERY_3,
],
"Cir 1 Avg. Rectifier Running Hrs.": [
SterliteRefineryQuery.Circulation1.QUERY_1,
SterliteRefineryQuery.Circulation1.QUERY_2,
SterliteRefineryQuery.Circulation1.QUERY_3,
],
"Cir 2 Avg. Rectifier Running Hrs.": [
SterliteRefineryQuery.Circulation2.QUERY_1,
SterliteRefineryQuery.Circulation2.QUERY_2,
SterliteRefineryQuery.Circulation2.QUERY_3,
],
"Cir-1 40 KA Rectifier Avg. Current": [
SterliteRefineryQuery.Cir140KARectifierAvgCurrent.QUERY_1,
SterliteRefineryQuery.Cir140KARectifierAvgCurrent.QUERY_2,
......@@ -120,7 +129,11 @@ class SterliteRefineryTemplate:
"Material",
"OPENING STOCK",
],
"query": [],
"query": {
"AcpCcpcCcp": [
SterliteRefineryQuery.AcpCcpcCcp.QUERY_1,
]
},
"data": [],
"data_column": ["rm_anode_receipt_details", "on_date",
"mtd", "ytd", "material", "opening_stock"],
......@@ -168,16 +181,36 @@ class SterliteRefineryTemplate:
"ACTUAL WEIGHT",
"STRIPPING TIME",
],
"query": [],
"query": {
"BANK / CROP": [
SterliteRefineryQuery.BankCropStripping.QUERY_1,
]
},
"data": [],
"data_column": ["bank_crop", "ce(%)", "theor_weight",
"data_column": ["bank_crop", "ce", "theor_weight",
"actual_weight", "stripping_time"],
},
},
{
"PRODUCTION": {
"columns": ["PRODUCTION", "UOM", "NORMS", "ON DATE", "MTD", "YTD"],
"query": [],
"query": {
"CathodeDeposit": [
SterliteRefineryQuery.CathodeDeposit.QUERY_1,
SterliteRefineryQuery.CathodeDeposit.QUERY_2,
SterliteRefineryQuery.CathodeDeposit.QUERY_3,
],
"CathodeProductionSAP": [
SterliteRefineryQuery.CathodeProductionSAP.QUERY_1,
SterliteRefineryQuery.CathodeProductionSAP.QUERY_2,
SterliteRefineryQuery.CathodeProductionSAP.QUERY_3,
],
"DepositCellDay": [
SterliteRefineryQuery.DepositCellDay.QUERY_1,
SterliteRefineryQuery.DepositCellDay.QUERY_2,
SterliteRefineryQuery.DepositCellDay.QUERY_3,
]
},
"data": [],
"data_column": ["production", "uom", "norms",
"on_date", "mtd", "ytd"],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment