Re: Code does Not Read in FY 2025 Data - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Code does Not Read in FY 2025 Data
Date
Msg-id f4e23100-b79d-4f3a-bd9a-6084ef338cae@aklaver.com
Whole thread Raw
In response to Code does Not Read in FY 2025 Data  (Anthony Apollis <anthony.apollis@gmail.com>)
List pgsql-general
On 7/16/24 08:26, Anthony Apollis wrote:

Again reply to list also
Ccing list
> I included a bigger data set. This code only pics up data up until 2024 
> in new table which has data for 2025. Something with the Maxdate 
> calculation is wrong.
> -- Step 1: Define the Fiscal Calendar
> WITH FiscalCalendar AS (
>      SELECT 'FY25' AS FY, 'P1' AS Period, '2024-07-01'::date AS 
> PeriodStart, '2024-08-03'::date AS PeriodEnd
>      UNION ALL
>      SELECT 'FY25', 'P2', '2024-08-04'::date, '2024-08-31'::date
>      UNION ALL
>      SELECT 'FY25', 'P3', '2024-09-01'::date, '2024-09-28'::date
>      UNION ALL
>      SELECT 'FY25', 'P4', '2024-09-29'::date, '2024-11-02'::date
>      UNION ALL
>      SELECT 'FY25', 'P5', '2024-11-03'::date, '2024-11-30'::date
>      UNION ALL
>      SELECT 'FY25', 'P6', '2024-12-01'::date, '2024-12-31'::date
>      UNION ALL
>      SELECT 'FY25', 'P7', '2025-01-01'::date, '2025-02-01'::date
>      UNION ALL
>      SELECT 'FY25', 'P8', '2025-02-02'::date, '2025-03-01'::date
>      UNION ALL
>      SELECT 'FY25', 'P9', '2025-03-02'::date, '2025-03-29'::date
>      UNION ALL
>      SELECT 'FY25', 'P10', '2025-03-30'::date, '2025-05-03'::date
>      UNION ALL
>      SELECT 'FY25', 'P11', '2025-05-04'::date, '2025-05-31'::date
>      UNION ALL
>      SELECT 'FY25', 'P12', '2025-06-01'::date, '2025-06-30'::date
> ),
> 
> -- Step 2: Get Calendar Data with full week details
> CalendarData AS (
>      SELECT DISTINCT
>          c."Date",
>          EXTRACT(WEEK FROM c."Date") AS "WeekNumber",
>          f.PeriodEnd,
>          COUNT(c."Date") OVER (PARTITION BY EXTRACT(WEEK FROM c."Date") 
> ORDER BY c."Date") AS "NumberOfDays",
>          ROW_NUMBER() OVER (PARTITION BY EXTRACT(WEEK FROM c."Date") 
> ORDER BY c."Date") AS "DayNumberInWeek"
>      FROM
>          "Prod"."IMETA - Calendar Days Data_Table_Temp_Copy" c
>      INNER JOIN
>          FiscalCalendar f ON c."Date" BETWEEN f.PeriodStart AND 
> f.PeriodEnd AND c."FY" = f.FY
>      WHERE
>          c."FY" = 'FY25'
> ),
> 
> -- Step 3: Filter to get full weeks only
> FullWeeks AS (
>      SELECT
>          "Date",
>          "WeekNumber",
>          "PeriodEnd",
>          "NumberOfDays",
>          "DayNumberInWeek"
>      FROM
>          CalendarData
>      WHERE
>          "NumberOfDays" = 7
> ),
> 
> -- Step 4: Get the maximum date from full weeks that is before today
> MaxDate AS (
>      SELECT
>          MAX("Date") AS "MaxDate"
>      FROM
>          FullWeeks
>      WHERE
>          "Date" < CURRENT_DATE
> )
> 
> -- Step 5: Select the maximum date
> SELECT
>      "MaxDate"
> FROM
>      MaxDate;
> 
> On Tue, 16 Jul 2024 at 17:13, Adrian Klaver <adrian.klaver@aklaver.com 
> <mailto:adrian.klaver@aklaver.com>> wrote:
> 
>     On 7/16/24 07:59, Anthony Apollis wrote:
>      > I am using Postgres and SQL Server.
> 
>     Does the query 'fail' on both platforms?
> 
>      > Can you test the data pls.
> 
>     Don't know what I am supposed to see?
> 
>     You will need to provide an explanation of what you want the query to
>     return vs what is currently being returned. Probably easiest to provide
>     a sample of data and what you expect the query to return from that
>     data.
>     Do this inline in your post.
> 
>     FYI, further investigation of the zipped data shows the 2025 data
>     has FY
>     values of NULL which would fail "FY" IS NOT NULL.
> 
>      >
>      > On Tue, 16 Jul 2024 at 16:45, Adrian Klaver
>     <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
>      > <mailto:adrian.klaver@aklaver.com
>     <mailto:adrian.klaver@aklaver.com>>> wrote:
>      >
>      >     On 7/16/24 05:53, Anthony Apollis wrote:
>      >      >  1. The problem is the code below reads only data up until
>     2024,
>      >      >     although the table has been updated with latest data that
>      >     contains
>      >      >     2025, for some odd reason it is not pulling in or showing
>      >     data when
>      >      >     filtering for 2025 or even 2024 and later, which should
>      >     contain all
>      >      >     the latest data.
>      >      >  2.   SQL: "SET DATEFIRST 7;-- Holding Period Query
>      >
>      >     I don't recognize SET DATEFIRST 7 as Postgres command.
>      >
>      >     What database are you running this on?
>      >
>      >     Have not gone through the below fully, but this:
>      >
>      >     "FY" IS NOT NULL AND "FY" >= 'FY24'
>      >
>      >     and this
>      >
>      >     WEEK_NUMBER."Date" < CURRENT_DATE
>      >
>      >     would seem to be at odds if you want to reach into 2025.
>      >
>      >      >
>      >      >     SELECT
>      >      >
>      >      >  3.
>      >      >
>      >      >     -- Holding Period Query
>      >      >     SELECT
>      >      >          WEEK_NUMBER."Week Number",
>      >      >          WM_GH."Calendar day",
>      >      >          WM_GH."Month/Week",
>      >      >          WM_GH."Day name",
>      >      >          WM_GH."Company",
>      >      >          WM_GH."Material Code",
>      >      >          WM_GH."Metric",
>      >      >          WM_GH."Metric Value"
>      >      >     FROM
>      >      >          (
>      >      >              SELECT
>      >      >                  "Calendar day",
>      >      >                  "Month/Week",
>      >      >                  "Day name",
>      >      >                  "Company",
>      >      >                  "Material Code",
>      >      >                  "Metric",
>      >      >                  "Metric Value"
>      >      >              FROM
>      >      >
>      >      >
>      >     
>       "Prod"."IMETA_Weekly_Metrics_in_Focus_Global_Stock_View_SAP_BW" AS
>      >     WM_GH
>      >      >              WHERE
>      >      >                  WM_GH."Metric Focus" LIKE 'Weekly'
>      >      >                  AND WM_GH."Calendar day" <= (
>      >      >                      SELECT MAX(WEEK_NUMBER."Date") AS
>     "MAX DATE"
>      >      >                      FROM (
>      >      >                          SELECT
>      >      >                              "Date",
>      >      >                              "Week number",
>      >      >                              COUNT("Date") OVER (PARTITION
>     BY "Week
>      >      >     number" ORDER BY "Week number") AS "Number of days",
>      >      >                              COUNT("Date") OVER (PARTITION
>     BY "Week
>      >      >     number" ORDER BY "Date") AS "Day number in weeks"
>      >      >                          FROM (
>      >      >                              SELECT DISTINCT
>      >      >                                  "Date",
>      >      >                                  EXTRACT(WEEK FROM
>      >     WEEK_NUMBER."Date")
>      >      >     AS "Week number"
>      >      >                              FROM
>      >      >
>      >      >     "dbo"."IMETA_Calendar_Days_Data_Table_Copy10" AS
>     WEEK_NUMBER
>      >      >                              WHERE
>      >      >                                  "FY" IS NOT NULL AND "FY"
>      >= 'FY24'
>      >      >                          ) AS W_MAX
>      >      >                      ) AS WEEK_NUMBER
>      >      >                      WHERE
>      >      >                          WEEK_NUMBER."Date" < CURRENT_DATE
>      >      >                          AND "Number of days" = "Day
>     number in weeks"
>      >      >                  )
>      >      >          ) AS WM_GH
>      >      >     LEFT OUTER JOIN
>      >      >          (
>      >      >              SELECT
>      >      >                  *
>      >      >              FROM (
>      >      >                  SELECT
>      >      >                      "Date",
>      >      >                      "Week number",
>      >      >                      COUNT("Date") OVER (PARTITION BY
>     "Week number"
>      >      >     ORDER BY "Week number") AS "Number of days",
>      >      >                      COUNT("Date") OVER (PARTITION BY
>     "Week number"
>      >      >     ORDER BY "Date") AS "Day number in weeks"
>      >      >                  FROM (
>      >      >                      SELECT DISTINCT
>      >      >                          "Date",
>      >      >                          EXTRACT(WEEK FROM
>     WEEK_NUMBER."Date") AS
>      >     "Week
>      >      >     number"
>      >      >                      FROM
>      >      >
>      >     "dbo"."IMETA_Calendar_Days_Data_Table_Copy10"
>      >      >     AS WEEK_NUMBER
>      >      >                  ) AS W_MAX
>      >      >              ) AS WEEK_NUMBER
>      >      >              WHERE
>      >      >                  WEEK_NUMBER."Date" < CURRENT_DATE
>      >      >          ) AS WEEK_NUMBER
>      >      >     ON
>      >      >          WM_GH."Calendar day" = WEEK_NUMBER."Date"
>      >      >     ORDER BY
>      >      >          WM_GH."Calendar day" DESC;
>      >      >
>      >
>      >     --
>      >     Adrian Klaver
>      > adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
>     <mailto:adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>>
>      >
> 
>     -- 
>     Adrian Klaver
>     adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com




pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Code does Not Read in FY 2025 Data
Next
From: Anthony Apollis
Date:
Subject: Re: Code does Not Read in FY 2025 Data