Necesito tomar una matriz de fechas y agregarle otra matriz de fechas. Necesito que la matriz permanezca en orden ascendente y contenga cualquier fecha solo una vez. A continuación se muestra la consulta y el UDF que probé. No estoy en deuda con este enfoque, pero es lo que intenté.
SELECT ARRAY_MERGE(ARRAY_COMPACT(c.array_visit_dates), ARRAY_COMPACT(d.array_visit_dates)) AS array_visit_dates FROM myTable CREATE OR REPLACE FUNCTION array_merge(old_date_list ARRAY, new_date_list ARRAY) RETURNS ARRAY LANGUAGE JAVASCRIPT AS $$ //var OLD_DATE_LIST = OLD_DATE_LIST.filter(date => date !== '').filter(date => date !== undefined) //var NEW_DATE_LIST = NEW_DATE_LIST.filter(date => date !== '').filter(date => date !== undefined) var full_list = OLD_DATE_LIST.concat(NEW_DATE_LIST); var dateset = new Set(full_list) var u_dates = [...new Set(dateset)] var u_dates = u_dates.sort() return u_dates.filter(date => date != '') $$ ; Error returned is: JavaScript execution error: Uncaught TypeError: Cannot read property 'concat' of undefined in ARRAY_MERGE at ' var full_list = OLD_DATE_LIST.concat(NEW_DATE_LIST);' position 34 stackstrace: ARRAY_MERGE line: 4
Puedes hacerlo con SQL:
select ARRAY_AGG( DISTINCT VALUE) WITHIN GROUP (ORDER BY VALUE) from LATERAL FLATTEN(ARRAY_CAT(array_construct('2021-02-03'::DATE, '2021-04-05'::DATE, '2021-10-06'::DATE), array_construct('2021-04-05'::DATE, '2020-02-04'::DATE, '2021-11-05'::DATE )));
Use ARRAY_CAT para fusionar matrices, aplanar los elementos y luego reconstruir la matriz usando ARRAY_AGG