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
1ebecec7
Commit
1ebecec7
authored
Oct 11, 2023
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sterlite Custom Report Updates
parent
ab7ce150
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
416 additions
and
6 deletions
+416
-6
scripts/core/db/postgres/custom_report_query.py
scripts/core/db/postgres/custom_report_query.py
+385
-1
scripts/template/sterlite_report_template.py
scripts/template/sterlite_report_template.py
+31
-5
No files found.
scripts/core/db/postgres/custom_report_query.py
View file @
1ebecec7
...
@@ -2268,4 +2268,388 @@ class SterliteRefineryQuery:
...
@@ -2268,4 +2268,388 @@ class SterliteRefineryQuery:
GROUP BY 1)CELLS ON DEP.DATE = CELLS.POSTING_DATE
GROUP BY 1)CELLS ON DEP.DATE = CELLS.POSTING_DATE
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2;
GROUP BY 1,2;
"""
"""
\ No newline at end of file
class
PowerAvailabilityCir1
:
""" POWER AVAILABILITY """
QUERY_1
=
"""
SELECT
'Power Availability to Cir-1' AS power_availability,
'
%
' AS uom,
ROUND(AVG(AREA_ICS_HEAD_VALUE)::NUMERIC, 2) AS norms,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS on_date
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
'Power Availability to Cir-1' AS power_availability,
'
%
' AS uom,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS mtd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
'Power Availability to Cir-1' AS power_availability,
'
%
' AS uom,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS ytd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
PowerAvailabilityCir2
:
""" POWER AVAILABILITY """
QUERY_1
=
"""
SELECT
'Power Availability to Cir-2' AS power_availability,
'
%
' AS uom,
ROUND(AVG(AREA_ICS_HEAD_VALUE)::NUMERIC, 2) AS norms,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS on_date
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
'Power Availability to Cir-2' AS power_availability,
'
%
' AS uom,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS mtd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
'Power Availability to Cir-2' AS power_availability,
'
%
' AS uom,
ROUND(AVG(RHRSPCT)::NUMERIC, 2) AS ytd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(OPERATION_HOURS / 24) * 100 AS RHRSPCT
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 ('
%
Power Availability
%
')
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
PowerAvailabilityCellHouse
:
""" POWER AVAILABILITY """
QUERY_1
=
"""
SELECT
'Power Availability to Cell House' AS power_availability,
'
%
' AS uom,
ROUND(AVG(AREA_ICS_HEAD_VALUE)::NUMERIC, 2) AS norms,
ROUND(AVG(CIRPCTG)::NUMERIC, 2) AS on_date
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(AVG(OPERATION_HOURS) / 24) * 100 AS CIRPCTG
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL
GROUP BY 1,2) 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 ('
%
power availability
%
')
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))
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2;
"""
QUERY_2
=
"""
SELECT
'Power Availability to Cell House' AS power_availability,
'
%
' AS uom,
ROUND(AVG(CIRPCTG)::NUMERIC, 2) AS mtd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(AVG(OPERATION_HOURS) / 24) * 100 AS CIRPCTG
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL
GROUP BY 1,2) 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 ('
%
power availability
%
')
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))
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2;
"""
QUERY_3
=
"""
SELECT
'Power Availability to Cell House' AS power_availability,
'
%
' AS uom,
ROUND(AVG(CIRPCTG)::NUMERIC, 2) AS ytd
FROM
(SELECT CIRCULATION,
DATE(DATETIME) AS date,
(AVG(OPERATION_HOURS) / 24) * 100 AS CIRPCTG
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE OPERATION_HOURS IS NOT NULL
GROUP BY 1,2) 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 ('
%
power availability
%
')
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))
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2;
"""
class
Cir1Cir2
:
""" CIRCULATION """
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 'cir_1'::text
WHEN "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'
\
d+$'::text)::numeric >= 11::numeric
AND "substring"(BTRIM(REFINERY_PRODUCTION_SELECT),
'
\
d+$'::text)::numeric <= 22::numeric THEN 'cir_2'::text
END AS circulation,
ROUND(AVG(REFINARY_PRODUCTION_CE)::NUMERIC, 2) AS ce,
ROUND(SUM(REFINARY_PRODUCTION_THEORETICAL_WEIGHT)::NUMERIC, 3)
AS theor_weight,
ROUND(SUM(REFINARY_PRODUCTION_ACTUAL_WEIGHT)::NUMERIC, 3)
AS actual_weight
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
TotalCirculation
:
""" CIRCULATION """
QUERY_1
=
"""
SELECT
'Total' AS circulation,
ROUND(AVG(REFINARY_PRODUCTION_CE)::NUMERIC, 2) AS ce,
ROUND(SUM(REFINARY_PRODUCTION_THEORETICAL_WEIGHT)::NUMERIC, 3)
AS theor_weight,
ROUND(SUM(REFINARY_PRODUCTION_ACTUAL_WEIGHT)::NUMERIC, 3)
AS actual_weight
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
CropCir
:
""" CROP Cir 1, 2.. """
QUERY_1
=
"""
SELECT
CONCAT('Cir-', SUBSTRING(TRIM(DCS.CIR)
FROM '
\
d+$'), ' Crop-', SUBSTRING(TRIM(DCS.CROP_NO::text)
FROM '
\
d+$')) AS crop,
COUNT(1) AS banks,
SUM(CELLS.CELL_COUNT) AS total_cells,
AVG(DCS.AVG_CELL_VOLTAGE) AS cell_voltage,
SUM(NO_OF_SHORTS) AS t_shorts
FROM
(SELECT DATE(DATETIME) AS date,
TRIM(CIRCULATION) AS CIR,
MAX(CROP_NO) AS CROP_NO,
TRIM(BANK) AS BANK,
MAX(AVERAGE_CELL_VOLTAGE::double precision) AS AVG_CELL_VOLTAGE,
MAX(NO_OF_SHORTS::double precision) AS NO_OF_SHORTS
FROM SEMANTIC_PROD.DCS_DATA DD
WHERE LOWER(TRIM(BANK)) like 'bank
%
'
AND LOWER(TRIM(CIRCULATION)) in ('circulation 1',
'circulation 2')
GROUP BY 1,2,
4)DCS
LEFT JOIN
(SELECT DATE(date) AS date,
TRIM(BANK) AS BANK,
CELL_COUNT::double precision
FROM SEMANTIC_PROD.NO_OF_BANK_CELLS NOBC
GROUP BY 1,2,
3)CELLS ON DCS.DATE = CELLS.DATE
AND TRIM(DCS.BANK) = TRIM(CELLS.BANK)
WHERE DCS.DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1;
"""
scripts/template/sterlite_report_template.py
View file @
1ebecec7
...
@@ -94,6 +94,21 @@ class SterliteRefineryTemplate:
...
@@ -94,6 +94,21 @@ class SterliteRefineryTemplate:
SterliteRefineryQuery
.
Circulation2
.
QUERY_2
,
SterliteRefineryQuery
.
Circulation2
.
QUERY_2
,
SterliteRefineryQuery
.
Circulation2
.
QUERY_3
,
SterliteRefineryQuery
.
Circulation2
.
QUERY_3
,
],
],
"Power Availability to Cir-1"
:
[
SterliteRefineryQuery
.
PowerAvailabilityCir1
.
QUERY_1
,
SterliteRefineryQuery
.
PowerAvailabilityCir1
.
QUERY_2
,
SterliteRefineryQuery
.
PowerAvailabilityCir1
.
QUERY_3
,
],
"Power Availability to Cir-2"
:
[
SterliteRefineryQuery
.
PowerAvailabilityCir2
.
QUERY_1
,
SterliteRefineryQuery
.
PowerAvailabilityCir2
.
QUERY_2
,
SterliteRefineryQuery
.
PowerAvailabilityCir2
.
QUERY_3
,
],
"Power Availability to Cell House"
:
[
SterliteRefineryQuery
.
PowerAvailabilityCellHouse
.
QUERY_1
,
SterliteRefineryQuery
.
PowerAvailabilityCellHouse
.
QUERY_2
,
SterliteRefineryQuery
.
PowerAvailabilityCellHouse
.
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
,
...
@@ -217,7 +232,14 @@ class SterliteRefineryTemplate:
...
@@ -217,7 +232,14 @@ class SterliteRefineryTemplate:
},
},
"CIRCULATION"
:
{
"CIRCULATION"
:
{
"columns"
:
[
"CIRCULATION"
,
"CE
%
"
,
"THEOR. WEIGHT"
,
"ACTUAL WEIGHT"
],
"columns"
:
[
"CIRCULATION"
,
"CE
%
"
,
"THEOR. WEIGHT"
,
"ACTUAL WEIGHT"
],
"query"
:
[],
"query"
:
{
"Cir1Cir2"
:
[
SterliteRefineryQuery
.
Cir1Cir2
.
QUERY_1
,
],
"TotalCirculation"
:
[
SterliteRefineryQuery
.
TotalCirculation
.
QUERY_1
,
]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"circulation"
,
"ce"
,
"theor_weight"
,
"actual_weight"
],
"data_column"
:
[
"circulation"
,
"ce"
,
"theor_weight"
,
"actual_weight"
],
},
},
...
@@ -252,7 +274,7 @@ class SterliteRefineryTemplate:
...
@@ -252,7 +274,7 @@ class SterliteRefineryTemplate:
},
},
"PRODUCTION"
:
{
"PRODUCTION"
:
{
"columns"
:
[
"PRODUCTION"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"columns"
:
[
"PRODUCTION"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"query"
:
[]
,
"query"
:
{}
,
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"production"
,
"on_date"
,
"mtd"
,
"ytd"
],
"data_column"
:
[
"production"
,
"on_date"
,
"mtd"
,
"ytd"
],
},
},
...
@@ -266,7 +288,11 @@ class SterliteRefineryTemplate:
...
@@ -266,7 +288,11 @@ class SterliteRefineryTemplate:
"CELL VOLTAGE (V)"
,
"CELL VOLTAGE (V)"
,
"T. SHORTS / CELL / CHECK"
,
"T. SHORTS / CELL / CHECK"
,
],
],
"query"
:
[],
"query"
:
{
"CROP"
:
[
SterliteRefineryQuery
.
CropCir
.
QUERY_1
,
]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"crop"
,
"banks"
,
"total_cells"
,
"data_column"
:
[
"crop"
,
"banks"
,
"total_cells"
,
"cell_voltage"
,
"t_shorts"
],
"cell_voltage"
,
"t_shorts"
],
...
@@ -277,7 +303,7 @@ class SterliteRefineryTemplate:
...
@@ -277,7 +303,7 @@ class SterliteRefineryTemplate:
"ON DATE"
,
"ON DATE"
,
"TILL DATE"
"TILL DATE"
],
],
"query"
:
[]
,
"query"
:
{}
,
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"data_column"
:
[
"category"
,
"category"
,
...
@@ -296,7 +322,7 @@ class SterliteRefineryTemplate:
...
@@ -296,7 +322,7 @@ class SterliteRefineryTemplate:
"3rd CROP"
,
"3rd CROP"
,
"CSM Plate Rejection"
"CSM Plate Rejection"
],
],
"query"
:
[]
,
"query"
:
{}
,
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"data_column"
:
[
"stripping_time"
,
"stripping_time"
,
...
...
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