/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******       Accessing data in an Object Store with a NOS Foreign Table
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/


/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Create the authorization object
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



CREATE AUTHORIZATION PublicAuth
USER ''
PASSWORD '';




/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Create the Foreign Table 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



CREATE FOREIGN TABLE csvdata
, EXTERNAL SECURITY PublicAuth
USING (LOCATION ('/S3/s3.amazonaws.com/td-usgs-public/CSVDATA/'));

CREATE FOREIGN TABLE parquetdata
, EXTERNAL SECURITY PublicAuth
USING (LOCATION ('/S3/s3.amazonaws.com/td-usgs-public/PARQUETDATA/'));

CREATE FOREIGN TABLE jsondata
, EXTERNAL SECURITY PublicAuth
USING (LOCATION ('/S3/s3.amazonaws.com/td-usgs-public/JSONDATA/'));




/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Show Table 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



SHOW TABLE csvdata;

SHOW TABLE parquetdata;

SHOW TABLE jsondata;




/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Select with path filtering for a specific site_no 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



SELECT TOP 10 site_no, GageHeight2, Flow  
FROM csvdata
WHERE $path.$site_no = 9513780;

SELECT TOP 10 site_no, GageHeight2, Flow  
FROM parquetdata
WHERE $path.$var2 = 9513780;

SELECT TOP 10 Payload.site_no, Payload.GageHeight2, Payload.Flow 
FROM jsondata
WHERE $path.$var2 = 9513780;



/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Use READ_NOS to view the SCHEMA of the json data 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



SELECT * FROM (
    LOCATION ='/S3/S3.amazonaws.com/td-usgs-public/JSONDATA/'
    ACCESS_ID =''
    ACCESS_KEY =''
    RETURNTYPE ='NOSREAD_SCHEMA')
 AS D;



/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Create a view on top of the jsondata Foreign table 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



 REPLACE VIEW jsondata_view AS (
    SELECT
           CAST($path.$var2 AS int) AS site_no,
           CAST(payload.datatime AS TIMESTAMP(0) FORMAT'Y4-MM-DDBHH:MI') AS datatime,
           CAST(payload.Flow AS decimal(3,2)) AS Flow,
           CAST(payload.GageHeigh AS decimal(3,2)) AS GageHeigh,
           CAST(payload.Precipitation AS decimal(3,2)) AS Precipitation,
           CAST(payload.GageHeight2 AS decimal(3,2)) AS GageHeight2
    FROM jsondata);



/*************************************************************************************
**************************************************************************************
**************************************************************************************
******
******             Query the jsondata_view 
******
**************************************************************************************
**************************************************************************************
**************************************************************************************/



SELECT TOP 10 site_no, GageHeight2, Flow  
FROM jsondata_view
WHERE site_no = 9513780;
