Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sterlite_custom_reports
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
suryakant
sterlite_custom_reports
Commits
ab7ce150
Commit
ab7ce150
authored
Oct 11, 2023
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sterlite Custom Report Updates
parent
f0aa3dde
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
810 additions
and
12 deletions
+810
-12
dev-variables.env
dev-variables.env
+0
-1
scripts/configurations/__init__.py
scripts/configurations/__init__.py
+0
-1
scripts/core/db/postgres/custom_report_query.py
scripts/core/db/postgres/custom_report_query.py
+767
-0
scripts/template/sterlite_report_template.py
scripts/template/sterlite_report_template.py
+43
-10
No files found.
dev-variables.env
View file @
ab7ce150
...
@@ -5,7 +5,6 @@ EXCEPTION_TRACE=True
...
@@ -5,7 +5,6 @@ EXCEPTION_TRACE=True
ENV=dev
ENV=dev
# PostgreSQL DB Details
# PostgreSQL DB Details
POSTGRES_URI=postgresql://svc_sterlite:sterliteSvc#1247@20.207.116.89:5946/strelite-datalakedev
POSTGRES_HOST = 20.207.116.89
POSTGRES_HOST = 20.207.116.89
POSTGRES_PORT = 5946
POSTGRES_PORT = 5946
POSTGRES_USERNAME = svc_sterlite
POSTGRES_USERNAME = svc_sterlite
...
...
scripts/configurations/__init__.py
View file @
ab7ce150
...
@@ -56,7 +56,6 @@ class PostgresDetails(BaseSettings):
...
@@ -56,7 +56,6 @@ class PostgresDetails(BaseSettings):
env_prefix (str): The environment variable prefix for PostgreSQL settings.
env_prefix (str): The environment variable prefix for PostgreSQL settings.
"""
"""
uri
:
str
host
:
str
host
:
str
port
:
str
port
:
str
username
:
str
username
:
str
...
...
scripts/core/db/postgres/custom_report_query.py
View file @
ab7ce150
...
@@ -337,6 +337,354 @@ class SterliteRefineryQuery:
...
@@ -337,6 +337,354 @@ class SterliteRefineryQuery:
GROUP BY 1,2,3
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
:
class
Cir140KARectifierAvgCurrent
:
""" POWER AVAILABILITY """
""" POWER AVAILABILITY """
QUERY_1
=
"""
QUERY_1
=
"""
...
@@ -518,6 +866,164 @@ class SterliteRefineryQuery:
...
@@ -518,6 +866,164 @@ class SterliteRefineryQuery:
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
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
:
class
EdgeStripConsumption
:
""" SPECIFIC CONSUMPTION """
""" SPECIFIC CONSUMPTION """
QUERY_1
=
"""
QUERY_1
=
"""
...
@@ -1502,3 +2008,264 @@ class SterliteRefineryQuery:
...
@@ -1502,3 +2008,264 @@ class SterliteRefineryQuery:
WHERE DATE = '{day_start_date}'
WHERE DATE = '{day_start_date}'
GROUP BY 1
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
scripts/template/sterlite_report_template.py
View file @
ab7ce150
...
@@ -79,12 +79,21 @@ class SterliteRefineryTemplate:
...
@@ -79,12 +79,21 @@ class SterliteRefineryTemplate:
"YTD"
,
"YTD"
,
],
],
"query"
:
{
"query"
:
{
"Grid Power Availability"
:
[],
"Grid Power Availability"
:
[
"Cir 1 Avg. Rectifier Running Hrs."
:
[],
SterliteRefineryQuery
.
GridPowerAvailability
.
QUERY_1
,
"Cir 2 Avg. Rectifier Running Hrs."
:
[],
SterliteRefineryQuery
.
GridPowerAvailability
.
QUERY_2
,
"Power Availability to Cir-1"
:
[],
SterliteRefineryQuery
.
GridPowerAvailability
.
QUERY_3
,
"Power Availability to Cir-2"
:
[],
],
"Power Availability to Cell House"
:
[],
"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"
:
[
"Cir-1 40 KA Rectifier Avg. Current"
:
[
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_1
,
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_1
,
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_2
,
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_2
,
...
@@ -120,7 +129,11 @@ class SterliteRefineryTemplate:
...
@@ -120,7 +129,11 @@ class SterliteRefineryTemplate:
"Material"
,
"Material"
,
"OPENING STOCK"
,
"OPENING STOCK"
,
],
],
"query"
:
[],
"query"
:
{
"AcpCcpcCcp"
:
[
SterliteRefineryQuery
.
AcpCcpcCcp
.
QUERY_1
,
]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"rm_anode_receipt_details"
,
"on_date"
,
"data_column"
:
[
"rm_anode_receipt_details"
,
"on_date"
,
"mtd"
,
"ytd"
,
"material"
,
"opening_stock"
],
"mtd"
,
"ytd"
,
"material"
,
"opening_stock"
],
...
@@ -168,16 +181,36 @@ class SterliteRefineryTemplate:
...
@@ -168,16 +181,36 @@ class SterliteRefineryTemplate:
"ACTUAL WEIGHT"
,
"ACTUAL WEIGHT"
,
"STRIPPING TIME"
,
"STRIPPING TIME"
,
],
],
"query"
:
[],
"query"
:
{
"BANK / CROP"
:
[
SterliteRefineryQuery
.
BankCropStripping
.
QUERY_1
,
]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"bank_crop"
,
"ce
(
%
)
"
,
"theor_weight"
,
"data_column"
:
[
"bank_crop"
,
"ce"
,
"theor_weight"
,
"actual_weight"
,
"stripping_time"
],
"actual_weight"
,
"stripping_time"
],
},
},
},
},
{
{
"PRODUCTION"
:
{
"PRODUCTION"
:
{
"columns"
:
[
"PRODUCTION"
,
"UOM"
,
"NORMS"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"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"
:
[],
"data_column"
:
[
"production"
,
"uom"
,
"norms"
,
"data_column"
:
[
"production"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"on_date"
,
"mtd"
,
"ytd"
],
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment