From 3853e54dcfd9cbb9caae327c1f37510e3e3a94f4 Mon Sep 17 00:00:00 2001 From: Yam ZhengLim Date: Wed, 6 Mar 2024 02:25:59 +0000 Subject: [PATCH 1/3] build exchange rate analysis --- .../rep_exchange__exchange_rate_analysis.sql | 311 ++++ ...ge__currency_exchange_rate_compilation.sql | 238 +++ .../_c2m_webscrape_exchange_rate__sources.yml | 29 + .../stg_exchange__c2m_currency_rate_logs.sql | 114 ++ .../_open_api_exchange_rate__sources.yml | 29 + ..._exchange__open_api_currency_rate_logs.sql | 108 ++ .../googlesheet/_googlesheet__sources.yml | 10 + ...ooglesheet__sd_currency_exchange_rates.sql | 71 + ...ge__historical_currency_exchange_rates.csv | 1472 +++++++++++++++++ seeds/exchange/seed_exchange__metadata.csv | 2 + 10 files changed, 2384 insertions(+) create mode 100644 models/marts/reporting/rep_exchange__exchange_rate_analysis.sql create mode 100644 models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql create mode 100644 models/staging/currency_exchange_rates/c2m/_c2m_webscrape_exchange_rate__sources.yml create mode 100644 models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql create mode 100644 models/staging/currency_exchange_rates/world_rate/_open_api_exchange_rate__sources.yml create mode 100644 models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql create mode 100644 models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql create mode 100644 seeds/exchange/seed_exchange__historical_currency_exchange_rates.csv create mode 100644 seeds/exchange/seed_exchange__metadata.csv diff --git a/models/marts/reporting/rep_exchange__exchange_rate_analysis.sql b/models/marts/reporting/rep_exchange__exchange_rate_analysis.sql new file mode 100644 index 0000000..34ae90d --- /dev/null +++ b/models/marts/reporting/rep_exchange__exchange_rate_analysis.sql @@ -0,0 +1,311 @@ +-- IMPORT +WITH currency_exchange_rate_compilation AS ( + SELECT * FROM {{ ref('fct_exchange__currency_exchange_rate_compilation') }} +), + +orders AS ( + SELECT * FROM {{ ref('fct_exchange__transaction_orders') }} + WHERE service_type NOT IN ('BA') +), + + +-- LOGIC +get_base_myr_value_for_comparison AS ( + -- For competitors where rate is equal for all myr range. Get C2M range and use for comparison + SELECT DISTINCT + end_range_myr AS comparison_base_value_myr + + FROM currency_exchange_rate_compilation + + WHERE + provider = 'C2M' + AND + service_type = 'ALTR' + +), + +restructure_and_expand_table_cief_vs_world_rate AS ( + + SELECT + t1.provider, + t1.payment_method, + t1.service_type, + t1.myr_to_cny_currency_exchange_rate, + t1.exchange_rate_date, + + t2.provider AS competitor_name, + t2.start_range_myr, + t2.end_range_myr, + t2.payment_method AS competitor_payment_method, + t2.service_type AS competitor_service_type, + t2.handling_fee_myr, + t2.handling_fee_cny, + ROUND(t2.myr_to_cny_currency_exchange_rate, 5) AS competitor_myr_to_cny_currency_exchange_rate, + + get_base_myr_value_for_comparison.comparison_base_value_myr + + FROM currency_exchange_rate_compilation t1 + + LEFT JOIN currency_exchange_rate_compilation t2 + ON ( t1.exchange_rate_date = t2.exchange_rate_date ) + AND t2.provider = 'WORLD RATE' + + CROSS JOIN get_base_myr_value_for_comparison + + WHERE + t1.provider = 'CIEF' + AND + competitor_name IN ('WORLD RATE') + +), + +restructure_and_expand_table_cief_1688_vs_c2m_altr AS ( + + SELECT + t1.provider, + t1.payment_method, + t1.service_type, + t1.myr_to_cny_currency_exchange_rate, + t1.exchange_rate_date, + + t2.provider AS competitor_name, + t2.start_range_myr, + t2.end_range_myr, + t2.payment_method AS competitor_payment_method, + t2.service_type AS competitor_service_type, + t2.handling_fee_myr, + t2.handling_fee_cny, + ROUND(t2.myr_to_cny_currency_exchange_rate, 5) AS competitor_myr_to_cny_currency_exchange_rate, + t2.end_range_myr AS comparison_base_value_myr + + FROM currency_exchange_rate_compilation t1 + + LEFT JOIN currency_exchange_rate_compilation t2 + ON ( t1.exchange_rate_date = t2.exchange_rate_date ) + AND t2.provider = 'C2M' + AND t2.service_type = 'ALTR' + + WHERE + t1.provider = 'CIEF' + AND + competitor_name IN ('C2M') + AND + t1.service_type IN ('1688 PAYMENT') + +), + +restructure_and_expand_table_cief_1_day_transfer_vs_c2m_tbdf AS ( + + SELECT + t1.provider, + t1.payment_method, + t1.service_type, + t1.myr_to_cny_currency_exchange_rate, + t1.exchange_rate_date, + + t2.provider AS competitor_name, + t2.start_range_myr, + t2.end_range_myr, + t2.payment_method AS competitor_payment_method, + t2.service_type AS competitor_service_type, + t2.handling_fee_myr, + t2.handling_fee_cny, + ROUND(t2.myr_to_cny_currency_exchange_rate, 5) AS competitor_myr_to_cny_currency_exchange_rate, + get_base_myr_value_for_comparison.comparison_base_value_myr + + FROM currency_exchange_rate_compilation t1 + + LEFT JOIN currency_exchange_rate_compilation t2 + ON ( t1.exchange_rate_date = t2.exchange_rate_date ) + AND t2.provider = 'C2M' + AND t2.service_type = 'TBDF' + + CROSS JOIN get_base_myr_value_for_comparison + + WHERE + t1.provider = 'CIEF' + AND + competitor_name IN ('C2M') + AND + t1.service_type IN ('1 DAY TRANSFER') + +), + +restructure_and_expand_table_cief_3_days_vs_sd AS ( + + SELECT + t1.provider, + t1.payment_method, + t1.service_type, + t1.myr_to_cny_currency_exchange_rate, + t1.exchange_rate_date, + + t2.provider AS competitor_name, + t2.start_range_myr, + t2.end_range_myr, + t2.payment_method AS competitor_payment_method, + t2.service_type AS competitor_service_type, + t2.handling_fee_myr, + t2.handling_fee_cny, + ROUND(t2.myr_to_cny_currency_exchange_rate, 5) AS competitor_myr_to_cny_currency_exchange_rate, + get_base_myr_value_for_comparison.comparison_base_value_myr + + FROM currency_exchange_rate_compilation t1 + + LEFT JOIN currency_exchange_rate_compilation t2 + ON ( t1.exchange_rate_date = t2.exchange_rate_date ) + AND t2.provider = 'SD' + + CROSS JOIN get_base_myr_value_for_comparison + + WHERE + t1.provider = 'CIEF' + AND + competitor_name IN ('SD') + AND + t1.service_type IN ('3 DAYS TRANSFER') + +), + +union_expanded_tables AS ( + + SELECT * FROM restructure_and_expand_table_cief_vs_world_rate + UNION ALL + SELECT * FROM restructure_and_expand_table_cief_1688_vs_c2m_altr + UNION ALL + SELECT * FROM restructure_and_expand_table_cief_1_day_transfer_vs_c2m_tbdf + UNION ALL + SELECT * FROM restructure_and_expand_table_cief_3_days_vs_sd + +), + +rate_comparison AS ( + + SELECT + *, + + ( (comparison_base_value_myr / 1.02) * myr_to_cny_currency_exchange_rate ) AS cief_amount_cny, + + CASE + WHEN competitor_name = 'WORLD RATE' + THEN comparison_base_value_myr * competitor_myr_to_cny_currency_exchange_rate + WHEN competitor_name = 'C2M' AND competitor_service_type = 'ALTR' + THEN ( (comparison_base_value_myr - handling_fee_myr) * competitor_myr_to_cny_currency_exchange_rate ) + WHEN competitor_name = 'C2M' AND competitor_service_type = 'TBDF' + THEN comparison_base_value_myr * competitor_myr_to_cny_currency_exchange_rate + WHEN competitor_name = 'SD' + THEN ( comparison_base_value_myr * competitor_myr_to_cny_currency_exchange_rate ) - handling_fee_cny + END AS competitor_amount_cny, + + MAX(exchange_rate_date) OVER ( PARTITION BY competitor_name, payment_method, competitor_payment_method) AS latest_exchange_rate_date + + FROM union_expanded_tables + +), + +order_metrics AS ( + + SELECT DISTINCT + service_type, + order_payment_method, + DATE(order_created_datetime) AS order_date, + SUM(order_quote_value) OVER (PARTITION BY DATE(order_created_datetime), service_type, order_payment_method) AS daily_sales_cny, + SUM(order_quote_value) OVER (PARTITION BY DATE(order_created_datetime)) AS total_daily_sales_cny, + + SUM(total_order_value_rm) OVER (PARTITION BY DATE(order_created_datetime), service_type, order_payment_method) AS daily_sales_myr, + SUM(total_order_value_rm) OVER (PARTITION BY DATE(order_created_datetime)) AS total_daily_sales_myr + + FROM orders + + WHERE + quote_currency_id = 2 + AND + transaction_status = 'UPLOADED_BANK_SLIP' + +), + +exchange_rate_join_order_metrics AS ( + + SELECT + rate_comparison.provider, + rate_comparison.payment_method, + rate_comparison.service_type, + rate_comparison.myr_to_cny_currency_exchange_rate, + rate_comparison.exchange_rate_date, + rate_comparison.competitor_name, + rate_comparison.start_range_myr, + rate_comparison.end_range_myr, + rate_comparison.competitor_payment_method, + rate_comparison.competitor_service_type, + rate_comparison.handling_fee_myr, + rate_comparison.handling_fee_cny, + rate_comparison.competitor_myr_to_cny_currency_exchange_rate, + rate_comparison.comparison_base_value_myr, + rate_comparison.cief_amount_cny, + rate_comparison.competitor_amount_cny, + rate_comparison.latest_exchange_rate_date, + order_metrics.daily_sales_cny, + order_metrics.total_daily_sales_cny, + order_metrics.daily_sales_myr, + order_metrics.total_daily_sales_myr, + + ROW_NUMBER() OVER (PARTITION BY exchange_rate_date ORDER BY COALESCE(total_daily_sales_cny,0) DESC) AS partition_sort_idx, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM rate_comparison + + LEFT JOIN order_metrics + ON + ( + rate_comparison.exchange_rate_date = order_metrics.order_date + AND rate_comparison.service_type = order_metrics.service_type + AND rate_comparison.payment_method = order_metrics.order_payment_method + ) + +), + + +-- FINAL +final__rep_exchange__exchange_rate_analysis AS ( + + SELECT + + -- ids + partition_sort_idx, + + -- dimensions + provider, + service_type, + payment_method, + competitor_name, + competitor_service_type, + competitor_payment_method, + + -- measures + start_range_myr, + end_range_myr, + comparison_base_value_myr, + myr_to_cny_currency_exchange_rate, + competitor_myr_to_cny_currency_exchange_rate, + handling_fee_myr, + handling_fee_cny, + cief_amount_cny, + competitor_amount_cny, + daily_sales_cny, + total_daily_sales_cny, + daily_sales_myr, + total_daily_sales_myr, + + -- date/times + exchange_rate_date, + latest_exchange_rate_date, + + -- metadata + _dbt_ran_datetime + + FROM exchange_rate_join_order_metrics + +) + +SELECT * FROM final__rep_exchange__exchange_rate_analysis \ No newline at end of file diff --git a/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql b/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql new file mode 100644 index 0000000..4e1e3a2 --- /dev/null +++ b/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql @@ -0,0 +1,238 @@ +-- IMPORT +WITH open_api_exchange_rate_logs AS ( + SELECT * FROM {{ ref('stg_exchange__open_api_currency_rate_logs') }} +), + +cief_exchange_rate_logs AS ( + SELECT * FROM {{ ref('stg_exchange__currency_rate_logs') }} +), + +c2m_exchange_rate_logs AS ( + SELECT * FROM {{ ref('stg_exchange__c2m_currency_rate_logs') }} +), + +sd_exchange_rate_logs AS ( + SELECT * FROM {{ ref('stg_googlesheet__sd_currency_exchange_rates') }} +), + + +-- LOGIC +-- CIEF Rates +cief_exchange_rate_log_filtering AS ( + + SELECT + * + + FROM cief_exchange_rate_logs + + WHERE + payment_method NOT IN ('BA') + AND + payment_method IS NOT NULL + AND + service_type IN ('1 DAY TRANSFER', '3 DAYS TRANSFER', 'ENTERPRISE TO ENTERPRISE 公打公', '1688 PAYMENT') + AND + quote_currency_id = 2 + +), + +cief_exchange_rates AS ( + + SELECT + 'CIEF' AS provider, + 1 AS start_range_myr, + 200000 AS end_range_myr, + payment_method, + service_type, + NULL AS handling_fee_myr, + NULL AS handling_fee_cny, + base_to_quote_currency_exchange_rate AS myr_to_cny_currency_exchange_rate, + + open_api_exchange_rate_logs.exchange_rate_date + + FROM cief_exchange_rate_log_filtering + + INNER JOIN open_api_exchange_rate_logs + ON ( open_api_exchange_rate_logs.exchange_rate_date >= cief_exchange_rate_log_filtering.from_datetime ) + AND (open_api_exchange_rate_logs.exchange_rate_date < cief_exchange_rate_log_filtering.to_datetime) + +), + +-- World Rates +world_rate_exchange_rates AS ( + + SELECT + 'WORLD RATE' AS provider, + 1 AS start_range_myr, + 200000 AS end_range_myr, + NULL AS payment_method, + NULL AS service_type, + NULL AS handling_fee_myr, + NULL AS handling_fee_cny, + myr_to_cny_rate AS myr_to_cny_currency_exchange_rate, + exchange_rate_date + + FROM open_api_exchange_rate_logs + +), + +-- C2M Rates +c2m_ranked_values AS ( + + SELECT + base_value_myr, + myr_to_cny_currency_exchange_rate, + handling_fee_myr, + created_datetime, + service_type, + LAG(base_value_myr, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr ) AS prev_base_value_myr, + LEAD(base_value_myr, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr ) AS next_base_value_myr, + + LAG(myr_to_cny_currency_exchange_rate, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) AS prev_rate, + LEAD(myr_to_cny_currency_exchange_rate, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) AS next_rate, + + LAG(handling_fee_myr, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) AS prev_fee, + LEAD(handling_fee_myr, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) AS next_fee + + FROM c2m_exchange_rate_logs + +), + +c2m_rate_changed_rows AS ( + + SELECT + base_value_myr, + myr_to_cny_currency_exchange_rate, + handling_fee_myr, + created_datetime, + service_type, + + CASE + WHEN LAG(myr_to_cny_currency_exchange_rate) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) != myr_to_cny_currency_exchange_rate + OR LAG(handling_fee_myr) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) != handling_fee_myr + THEN 1 + ELSE 0 + END AS is_rate_change_row + + FROM c2m_exchange_rate_logs + +), + +c2m_group_changed_rows AS ( + + SELECT + base_value_myr, + myr_to_cny_currency_exchange_rate, + handling_fee_myr, + created_datetime, + service_type, + SUM(is_rate_change_row) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr) AS group_id, + LEAD(base_value_myr, 1) OVER (PARTITION BY created_datetime, service_type ORDER BY created_datetime, service_type, base_value_myr ) - 1 AS next_base_value_myr + + FROM c2m_rate_changed_rows + +), + +c2m_base_value_ranges AS ( + + SELECT + 'C2M' AS provider, + MIN(base_value_myr) AS start_range_myr, + COALESCE( MAX(next_base_value_myr), 200000 ) AS end_range_myr, + NULL AS payment_method, + service_type, + handling_fee_myr, + NULL AS handling_fee_cny, + myr_to_cny_currency_exchange_rate, + DATE(created_datetime) AS exchange_rate_date + + FROM c2m_group_changed_rows + + GROUP BY + service_type, + myr_to_cny_currency_exchange_rate, + handling_fee_myr, + DATE(created_datetime), + group_id + +), + +-- SD Group Rates +sd_exchange_rates AS ( + + SELECT + 'SD' AS provider, + 1 AS start_range_myr, + 200000 AS end_range_myr, + payment_method, + NULL AS service_type, + NULL AS handling_fee_myr, + handling_fee_cny, + myr_to_cny_currency_exchange_rate, + exchange_rate_date + + FROM sd_exchange_rate_logs + +), + +union_competitor_rates AS ( + + SELECT * FROM world_rate_exchange_rates + + UNION ALL + + SELECT * FROM cief_exchange_rates + + UNION ALL + + SELECT * FROM c2m_base_value_ranges + + UNION ALL + + SELECT * FROM sd_exchange_rates + +), + +add_metadata AS ( + + SELECT + *, + + MD5_NUMBER_LOWER64( CONCAT(provider, myr_to_cny_currency_exchange_rate, exchange_rate_date) ) AS exchange_rate_log_id, + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM union_competitor_rates + +), + + +-- FINAL +final__fct_exchange__currency_exchange_rate_compilation AS ( + + SELECT + --id + exchange_rate_log_id, + + --dimension + provider, + payment_method, + service_type, + + --measures + start_range_myr, + end_range_myr, + handling_fee_myr, + handling_fee_cny, + myr_to_cny_currency_exchange_rate, + + --date/time + exchange_rate_date, + + --metadata + _dbt_ran_datetime + + FROM add_metadata + +) + +SELECT * FROM final__fct_exchange__currency_exchange_rate_compilation \ No newline at end of file diff --git a/models/staging/currency_exchange_rates/c2m/_c2m_webscrape_exchange_rate__sources.yml b/models/staging/currency_exchange_rates/c2m/_c2m_webscrape_exchange_rate__sources.yml new file mode 100644 index 0000000..80ed344 --- /dev/null +++ b/models/staging/currency_exchange_rates/c2m/_c2m_webscrape_exchange_rate__sources.yml @@ -0,0 +1,29 @@ +version: 2 + +sources: + - name: src_c2m_exchange_rates + description: Currency exchange rate data of competitor C2M, obtained from web scraping. Link=https://www.c2m.my/ + database: DEV_CIEF_RAW_DB + schema: C2M_WEBSCRAPE + loader: custom_python_code + loaded_at_field: SCRAPE_DATE + freshness: + warn_after: {count: 26, period: hour} + error_after: {count: 48, period: hour} + meta: + owner: "@yam" + model_maturity: prod + tags: + - exchange_rate_log + - daily + + + tables: + - name: currency_rate_logs + description: Web scraped daily currency exchange rates of different products offered by competitor C2M. + columns: + - name: service_type + description: ( + ALTR:ALIPAY:Transfer/Scan-To-Pay, + TBDF:TAOBAO/1688:Payment-On-Behalf + ) \ No newline at end of file diff --git a/models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql b/models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql new file mode 100644 index 0000000..67401b5 --- /dev/null +++ b/models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql @@ -0,0 +1,114 @@ +-- IMPORT +WITH c2m_exchange_rate_log AS ( + SELECT * FROM {{ source('src_c2m_exchange_rates', 'currency_rate_logs') }} +), + + +-- LOGIC +data_cleaning AS ( + SELECT + *, + + -- remove handling fee for TBDF + CASE + WHEN service_type = 'TBDF' + THEN 0 + ELSE handeling_fee + END AS cleaned_handling_fee + + FROM c2m_exchange_rate_log +), + +rename_and_casting AS ( + + SELECT + product_name, + site_name AS competitor_name, + service_type, + pending_order AS order_queue_number, + myr::FLOAT AS base_value_myr, + cny::FLOAT AS quote_value_cny, + cleaned_handling_fee::FLOAT AS handling_fee_myr, + REPLACE(payable, ',','')::FLOAT AS payable_myr, + current_rate::FLOAT AS myr_to_cny_currency_exchange_rate, + staff_status, + DATEADD(DAY, -1, scrape_date) AS created_datetime, + scrape_hour, + + TO_TIMESTAMP( + REGEXP_SUBSTR( + last_rate_update, + '[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{1,2}:[0-9]{2} [APap][Mm]' + ), + 'YYYY-MM-DD HH12:MI AM' + ) AS rate_updated_datetime + + FROM data_cleaning + +), + +recalculate_payable_column AS ( + + SELECT + MD5_NUMBER_LOWER64(CONCAT(service_type, base_value_myr, created_datetime )) AS currency_rate_log_id, + + product_name, + competitor_name, + service_type, + order_queue_number, + base_value_myr, + quote_value_cny, + handling_fee_myr, + myr_to_cny_currency_exchange_rate, + staff_status, + created_datetime, + scrape_hour, + rate_updated_datetime, + + -- Recalculate payable myr after removing handling fee + CASE + WHEN service_type = 'TBDF' + THEN base_value_myr + ELSE payable_myr + END AS payable_myr, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM rename_and_casting + +), + + +-- FINAL +final__stg_exchange__c2m_exchange_rates AS ( + + SELECT + -- ids + currency_rate_log_id, + + -- dimensions + competitor_name, + product_name, + service_type, + staff_status, + + -- measures + order_queue_number, + base_value_myr, + quote_value_cny, + myr_to_cny_currency_exchange_rate, + handling_fee_myr, + payable_myr, + + -- date/time + rate_updated_datetime, + created_datetime, + + -- metadata + _dbt_ran_datetime + + FROM recalculate_payable_column + +) + +SELECT * FROM final__stg_exchange__c2m_exchange_rates \ No newline at end of file diff --git a/models/staging/currency_exchange_rates/world_rate/_open_api_exchange_rate__sources.yml b/models/staging/currency_exchange_rates/world_rate/_open_api_exchange_rate__sources.yml new file mode 100644 index 0000000..4fc96cb --- /dev/null +++ b/models/staging/currency_exchange_rates/world_rate/_open_api_exchange_rate__sources.yml @@ -0,0 +1,29 @@ +version: 2 + +sources: + - name: src_open_api_exchange_rates + description: Latest currency exchange rates of multiple currencies obtained from `Open Exchange Rates` API call. + database: DEV_CIEF_RAW_DB + schema: OPENEXCHANGERATES_AIRBYTE + loader: custom_python_code + loaded_at_field: _airbyte_extracted_at + freshness: + warn_after: {count: 26, period: hour} + error_after: {count: 48, period: hour} + meta: + owner: "@yam" + model_maturity: prod + tags: + - exchange_rate_log + - daily + + + tables: + - name: current_rate + description: Hourly currency exchange rates obtained from the API call. + columns: + - name: _airbyte_raw_id + description: Primary key for 'current_rate' + tests: + - unique + - not_null \ No newline at end of file diff --git a/models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql b/models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql new file mode 100644 index 0000000..053371e --- /dev/null +++ b/models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql @@ -0,0 +1,108 @@ +-- IMPORT +WITH api_call_exchange_rates AS ( + SELECT * FROM {{ source('src_open_api_exchange_rates', 'current_rate') }} +), + +seed_historical_exchange_rates AS ( + SELECT * FROM {{ ref('seed_exchange__historical_currency_exchange_rates') }} +), + + +-- LOGIC +api_rename_and_casting AS ( + + SELECT + _airbyte_raw_id AS _airbyte_id, + base AS base_currency, + PARSE_JSON(rates::STRING) AS parsed_rates, + _airbyte_extracted_at AS _airbyte_extracted_datetime, + TO_TIMESTAMP_NTZ(timestamp::INT) AS exchange_rate_datetime + + FROM api_call_exchange_rates + +), + +api_currency_conversion AS ( + + SELECT + DATE(exchange_rate_datetime) AS exchange_rate_date, + AVG(1 / parsed_rates['MYR']) AS myr_to_usd_rate, + AVG(parsed_rates['CNY'] / parsed_rates['MYR']) AS myr_to_cny_rate + + FROM api_rename_and_casting + + GROUP BY + DATE(exchange_rate_datetime) + +), + +seed_currency_conversion AS ( + + SELECT + TO_CHAR(TO_DATE(date,'DD-MM-YYYY'), 'YYYY-MM-DD') AS exchange_rate_date, + cny / myr AS myr_to_cny_rate, + 1 / myr AS myr_to_usd_rate + + FROM seed_historical_exchange_rates + +), + +union_exchange_rates AS ( + + SELECT + exchange_rate_date, + myr_to_cny_rate, + myr_to_usd_rate + + FROM seed_currency_conversion + + WHERE + exchange_rate_date < '2024-01-04' + + UNION ALL + + SELECT + exchange_rate_date, + myr_to_cny_rate, + myr_to_usd_rate + + FROM api_currency_conversion + +), + +add_primary_key_column AS ( + + SELECT + *, + MD5_NUMBER_LOWER64(CONCAT(myr_to_cny_rate, myr_to_usd_rate, exchange_rate_date)) AS currency_rate_log_id, + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM union_exchange_rates + +), + + +-- FINAL +final__stg_exchange__api_call_exchange_rates AS ( + + SELECT + -- id + currency_rate_log_id, + + -- dimension + + -- measure + myr_to_usd_rate, + myr_to_cny_rate, + + -- date/time + exchange_rate_date, + + -- metadata + _dbt_ran_datetime + + FROM add_primary_key_column + +) + +SELECT * FROM final__stg_exchange__api_call_exchange_rates \ No newline at end of file diff --git a/models/staging/googlesheet/_googlesheet__sources.yml b/models/staging/googlesheet/_googlesheet__sources.yml index ad34469..560ed9f 100644 --- a/models/staging/googlesheet/_googlesheet__sources.yml +++ b/models/staging/googlesheet/_googlesheet__sources.yml @@ -44,6 +44,16 @@ sources: columns: - name: _airbyte_raw_id description: Primary key for 'account_frozen_case' + tests: + - unique + - not_null + + + - name: sd_currency_exchange_rates + description: Data retrieved from gsheet, comprises the currency exchange rates from our competitor SD. + columns: + - name: _airbyte_raw_id + description: Primary key for 'sd_currency_exchange_rates' tests: - unique - not_null \ No newline at end of file diff --git a/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql b/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql new file mode 100644 index 0000000..ed9acdf --- /dev/null +++ b/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql @@ -0,0 +1,71 @@ +-- IMPORT +WITH sd_exchange_rate_log AS ( + SELECT * FROM {{ source('src_googlesheet_airbyte', 'sd_currency_exchange_rates') }} +), + +seed_metadata AS ( + SELECT * FROM {{ ref('seed_exchange__metadata') }} +), + + +-- LOGIC +rename_and_casting AS ( + + SELECT + {{ dbt_utils.generate_surrogate_key(['payment_method', 'myr_to_cny_rate', 'exchange_rate_date']) }} AS sd_exchange_rate_id, + + _airbyte_raw_id AS _airbyte_id, + + sd_exchange_rate_log.provider AS competitor_name, + sd_exchange_rate_log.payment_method, + sd_exchange_rate_log.myr_to_cny_rate::FLOAT AS myr_to_cny_currency_exchange_rate, + sd_exchange_rate_log.transfer_days AS transfer_duration_remark, + sd_exchange_rate_log.remark, + + COALESCE( + TRY_TO_DATE(sd_exchange_rate_log.exchange_rate_date, 'DD-MM-YY'), + TRY_TO_DATE(sd_exchange_rate_log.exchange_rate_date, 'MM-DD-YY') + ) AS exchange_rate_date, + + seed_metadata.value AS handling_fee_cny, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM sd_exchange_rate_log + + LEFT JOIN seed_metadata + ON (seed_metadata.id = 1) + -- refer to model name when referencing from seed + -- But {{this.name}} returning 'inline_query' + +), + + +-- FINAL +final__stg_exchange__sd_currency_rate_logs AS ( + + SELECT + -- ids + sd_exchange_rate_id, + + -- dimensions + competitor_name, + payment_method, + transfer_duration_remark, + remark, + + -- measures + handling_fee_cny, + myr_to_cny_currency_exchange_rate, + + -- date/time + exchange_rate_date, + + -- metadata + _dbt_ran_datetime + + FROM rename_and_casting + +) + +SELECT * FROM final__stg_exchange__sd_currency_rate_logs \ No newline at end of file diff --git a/seeds/exchange/seed_exchange__historical_currency_exchange_rates.csv b/seeds/exchange/seed_exchange__historical_currency_exchange_rates.csv new file mode 100644 index 0000000..a947ac0 --- /dev/null +++ b/seeds/exchange/seed_exchange__historical_currency_exchange_rates.csv @@ -0,0 +1,1472 @@ +DATE,CNY,MYR,USD +01-01-2020,6.9632,4.0905,1 +02-01-2020,6.9644,4.0875,1 +03-01-2020,6.9655,4.1025,1 +04-01-2020,6.9655,4.1025,1 +05-01-2020,6.9655,4.1025,1 +06-01-2020,6.976,4.1025,1 +07-01-2020,6.9454,4.0925,1 +08-01-2020,6.9462,4.1015,1 +09-01-2020,6.9527,4.0905,1 +10-01-2020,6.9197,4.0766,1 +11-01-2020,6.9197,4.0766,1 +12-01-2020,6.9193,4.07658,1 +13-01-2020,6.8937,4.0605,1 +14-01-2020,6.9013,4.074,1 +15-01-2020,6.8908,4.072499,1 +16-01-2020,6.8791,4.064499,1 +17-01-2020,6.8597,4.0551,1 +18-01-2020,6.8597,4.0551,1 +19-01-2020,6.8597,4.0551,1 +20-01-2020,6.8669,4.059499,1 +21-01-2020,6.9059,4.0716,1 +22-01-2020,6.9067,4.0651,1 +23-01-2020,6.9367,4.0745,1 +24-01-2020,6.9367,4.0655,1 +25-01-2020,6.9367,4.0655,1 +26-01-2020,6.9367,4.0655,1 +27-01-2020,6.9367,4.066,1 +28-01-2020,6.9367,4.086,1 +29-01-2020,6.9367,4.0806,1 +30-01-2020,6.9367,4.087,1 +31-01-2020,6.9367,4.0961,1 +01-02-2020,6.9367,4.0961,1 +02-02-2020,6.9367,4.096099,1 +03-02-2020,7.0216,4.1175,1 +04-02-2020,6.9985,4.1105,1 +05-02-2020,6.9738,4.1201,1 +06-02-2020,6.9708,4.1225,1 +07-02-2020,7.0016,4.1416,1 +08-02-2020,7.0016,4.1416,1 +09-02-2020,7.0016,4.1416,1 +10-02-2020,6.9845,4.1429,1 +11-02-2020,6.9659,4.1331,1 +12-02-2020,6.972,4.1425,1 +13-02-2020,6.9774,4.142,1 +14-02-2020,6.9871,4.1415,1 +15-02-2020,6.9871,4.1415,1 +16-02-2020,6.9871,4.1415,1 +17-02-2020,6.9804,4.145,1 +18-02-2020,6.9972,4.155,1 +19-02-2020,6.9983,4.163,1 +20-02-2020,7.0234,4.1806,1 +21-02-2020,7.0272,4.1891,1 +22-02-2020,7.0272,4.1891,1 +23-02-2020,7.0272,4.1891,1 +24-02-2020,7.0294,4.225,1 +25-02-2020,7.0374,4.2345,1 +26-02-2020,7.0408,4.2251,1 +27-02-2020,7.0045,4.210999,1 +28-02-2020,6.9919,4.2135,1 +29-02-2020,6.9919,4.2135,1 +01-03-2020,6.9919,4.2135,1 +02-03-2020,7.0008,4.202599,1 +03-03-2020,6.962,4.2133,1 +04-03-2020,6.9664,4.1805,1 +05-03-2020,6.937,4.1615,1 +06-03-2020,6.932,4.171499,1 +07-03-2020,6.9319,4.172,1 +08-03-2020,6.9321,4.1726,1 +09-03-2020,6.9466,4.2175,1 +10-03-2020,6.9566,4.235,1 +11-03-2020,6.9606,4.2475,1 +12-03-2020,7.0296,4.272501,1 +13-03-2020,7.0082,4.2785,1 +14-03-2020,7.0082,4.2785,1 +15-03-2020,7.0082,4.2785,1 +16-03-2020,6.9937,4.30878,1 +17-03-2020,7.0072,4.351,1 +18-03-2020,7.0474,4.3735,1 +19-03-2020,7.1087,4.415099,1 +20-03-2020,7.0958,4.3945,1 +21-03-2020,7.0958,4.3945,1 +22-03-2020,7.0958,4.3945,1 +23-03-2020,7.0923,4.4425,1 +24-03-2020,7.0631,4.4305,1 +25-03-2020,7.1145,4.39,1 +26-03-2020,7.0741,4.36125,1 +27-03-2020,7.0964,4.3276,1 +28-03-2020,7.0964,4.3276,1 +29-03-2020,7.0964,4.3225,1 +30-03-2020,7.1003,4.3335,1 +31-03-2020,7.0824,4.3125,1 +01-04-2020,7.1003,4.3576,1 +02-04-2020,7.0842,4.358,1 +03-04-2020,7.0923,4.358,1 +04-04-2020,7.0923,4.358,1 +05-04-2020,7.0923,4.3585,1 +06-04-2020,7.0923,4.3635,1 +07-04-2020,7.0459,4.3375,1 +08-04-2020,7.066,4.345,1 +09-04-2020,7.0432,4.332599,1 +10-04-2020,7.0361,4.3098,1 +11-04-2020,7.0361,4.3098,1 +12-04-2020,7.0361,4.307999,1 +13-04-2020,7.0526,4.32868,1 +14-04-2020,7.0492,4.3325,1 +15-04-2020,7.0676,4.343,1 +16-04-2020,7.0798,4.343,1 +17-04-2020,7.0732,4.370001,1 +18-04-2020,7.0732,4.370001,1 +19-04-2020,7.0732,4.37,1 +20-04-2020,7.0735,4.3745,1 +21-04-2020,7.0718,4.3955,1 +22-04-2020,7.0841,4.3738,1 +23-04-2020,7.0667,4.3603,1 +24-04-2020,7.0819,4.359501,1 +25-04-2020,7.0818,4.359501,1 +26-04-2020,7.0819,4.359501,1 +27-04-2020,7.0864,4.358,1 +28-04-2020,7.0796,4.3615,1 +29-04-2020,7.0769,4.3376,1 +30-04-2020,7.0623,4.298,1 +01-05-2020,7.0624,4.2975,1 +02-05-2020,7.0625,4.2975,1 +03-05-2020,7.0625,4.298099,1 +04-05-2020,7.0625,4.3165,1 +05-05-2020,7.0625,4.302501,1 +06-05-2020,7.1047,4.3245,1 +07-05-2020,7.0849,4.3245,1 +08-05-2020,7.0741,4.334,1 +09-05-2020,7.0742,4.334,1 +10-05-2020,7.0741,4.334,1 +11-05-2020,7.099,4.335,1 +12-05-2020,7.0831,4.3285,1 +13-05-2020,7.0924,4.3305,1 +14-05-2020,7.0958,4.3405,1 +15-05-2020,7.1022,4.351701,1 +16-05-2020,7.1022,4.351701,1 +17-05-2020,7.1022,4.3517,1 +18-05-2020,7.1096,4.3551,1 +19-05-2020,7.0992,4.3486,1 +20-05-2020,7.0936,4.348501,1 +21-05-2020,7.1154,4.3465,1 +22-05-2020,7.1304,4.3635,1 +23-05-2020,7.1304,4.3635,1 +24-05-2020,7.1304,4.3635,1 +25-05-2020,7.1368,4.3635,1 +26-05-2020,7.1351,4.3635,1 +27-05-2020,7.1693,4.3505,1 +28-05-2020,7.1462,4.3505,1 +29-05-2020,7.1373,4.3475,1 +30-05-2020,7.1373,4.3475,1 +31-05-2020,7.1373,4.3445,1 +01-06-2020,7.1278,4.3145,1 +02-06-2020,7.1014,4.275,1 +03-06-2020,7.1157,4.2575,1 +04-06-2020,7.1103,4.273,1 +05-06-2020,7.082,4.273,1 +06-06-2020,7.082,4.268,1 +07-06-2020,7.082,4.2675,1 +08-06-2020,7.0713,4.2675,1 +09-06-2020,7.0773,4.2755,1 +10-06-2020,7.061,4.2515,1 +11-06-2020,7.0651,4.249501,1 +12-06-2020,7.0834,4.2705,1 +13-06-2020,7.0834,4.2705,1 +14-06-2020,7.0834,4.2705,1 +15-06-2020,7.0918,4.278,1 +16-06-2020,7.087,4.2775,1 +17-06-2020,7.0855,4.2805,1 +18-06-2020,7.0894,4.277999,1 +19-06-2020,7.0723,4.2685,1 +20-06-2020,7.0723,4.2685,1 +21-06-2020,7.0723,4.2675,1 +22-06-2020,7.0684,4.273,1 +23-06-2020,7.0584,4.2785,1 +24-06-2020,7.0782,4.2785,1 +25-06-2020,7.0782,4.279,1 +26-06-2020,7.0784,4.2725,1 +27-06-2020,7.0784,4.2725,1 +28-06-2020,7.0782,4.291,1 +29-06-2020,7.0811,4.285,1 +30-06-2020,7.0655,4.285,1 +01-07-2020,7.0712,4.2865,1 +02-07-2020,7.067,4.2855,1 +03-07-2020,7.0664,4.287501,1 +04-07-2020,7.0664,4.287501,1 +05-07-2020,7.0664,4.2875,1 +06-07-2020,7.0188,4.2775,1 +07-07-2020,7.014,4.2745,1 +08-07-2020,7.0045,4.2695,1 +09-07-2020,6.9941,4.2635,1 +10-07-2020,7.0018,4.266,1 +11-07-2020,7.0018,4.266,1 +12-07-2020,7.0019,4.267,1 +13-07-2020,6.9974,4.265,1 +14-07-2020,6.9968,4.2705,1 +15-07-2020,6.9889,4.2625,1 +16-07-2020,6.9893,4.268,1 +17-07-2020,6.9922,4.2625,1 +18-07-2020,6.9922,4.2625,1 +19-07-2020,6.9922,4.265,1 +20-07-2020,6.9838,4.2605,1 +21-07-2020,6.9808,4.2615,1 +22-07-2020,7.0002,4.253,1 +23-07-2020,7.0041,4.2565,1 +24-07-2020,7.0173,4.2625,1 +25-07-2020,7.0173,4.2625,1 +26-07-2020,7.0171,4.2625,1 +27-07-2020,6.99585,4.2525,1 +28-07-2020,7.0008,4.2515,1 +29-07-2020,7.0018,4.243,1 +30-07-2020,7.0088,4.2395,1 +31-07-2020,6.9752,4.24,1 +01-08-2020,6.9752,4.24,1 +02-08-2020,6.9752,4.239499,1 +03-08-2020,6.9809,4.225,1 +04-08-2020,6.9737,4.2215,1 +05-08-2020,6.9356,4.194999,1 +06-08-2020,6.9535,4.188501,1 +07-08-2020,6.9678,4.1875,1 +08-08-2020,6.9678,4.1875,1 +09-08-2020,6.968,4.1875,1 +10-08-2020,6.9619,4.1955,1 +11-08-2020,6.9463,4.194999,1 +12-08-2020,6.9374,4.1935,1 +13-08-2020,6.9451,4.191499,1 +14-08-2020,6.9503,4.1935,1 +15-08-2020,6.9503,4.1935,1 +16-08-2020,6.9504,4.1905,1 +17-08-2020,6.9329,4.192,1 +18-08-2020,6.9218,4.183,1 +19-08-2020,6.9207,4.1743,1 +20-08-2020,6.9159,4.1735,1 +21-08-2020,6.9195,4.18,1 +22-08-2020,6.9195,4.18,1 +23-08-2020,6.9195,4.18,1 +24-08-2020,6.9199,4.175499,1 +25-08-2020,6.9129,4.1695,1 +26-08-2020,6.886,4.1655,1 +27-08-2020,6.8902,4.172499,1 +28-08-2020,6.8654,4.1655,1 +29-08-2020,6.8654,4.1655,1 +30-08-2020,6.8654,4.1655,1 +31-08-2020,6.8487,4.1705,1 +01-09-2020,6.8285,4.1475,1 +02-09-2020,6.8383,4.146,1 +03-09-2020,6.8468,4.1475,1 +04-09-2020,6.8425,4.1495,1 +05-09-2020,6.8425,4.1495,1 +06-09-2020,6.8425,4.1495,1 +07-09-2020,6.8305,4.1575,1 +08-09-2020,6.8461,4.1675,1 +09-09-2020,6.8333,4.1715,1 +10-09-2020,6.8343,4.164,1 +11-09-2020,6.8344,4.1535,1 +12-09-2020,6.8344,4.1535,1 +13-09-2020,6.8344,4.154,1 +14-09-2020,6.8105,4.146,1 +15-09-2020,6.7818,4.1305,1 +16-09-2020,6.7548,4.1305,1 +17-09-2020,6.7651,4.1395,1 +18-09-2020,6.769,4.1145,1 +19-09-2020,6.769,4.1145,1 +20-09-2020,6.769,4.1145,1 +21-09-2020,6.8052,4.1225,1 +22-09-2020,6.7799,4.1345,1 +23-09-2020,6.8104,4.1545,1 +24-09-2020,6.8287,4.1685,1 +25-09-2020,6.8238,4.1715,1 +26-09-2020,6.8238,4.1715,1 +27-09-2020,6.8238,4.1715,1 +28-09-2020,6.8119,4.1715,1 +29-09-2020,6.8165,4.1611,1 +30-09-2020,6.7908,4.155,1 +01-10-2020,6.7904,4.1505,1 +02-10-2020,6.7909,4.1645,1 +03-10-2020,6.7909,4.1645,1 +04-10-2020,6.7908,4.1645,1 +05-10-2020,6.7908,4.152,1 +06-10-2020,6.7908,4.153125,1 +07-10-2020,6.7907,4.1575,1 +08-10-2020,6.7902,4.1525,1 +09-10-2020,6.6947,4.1415,1 +10-10-2020,6.6947,4.1415,1 +11-10-2020,6.6947,4.145,1 +12-10-2020,6.746,4.146,1 +13-10-2020,6.7465,4.142,1 +14-10-2020,6.7151,4.1505,1 +15-10-2020,6.7254,4.1555,1 +16-10-2020,6.6976,4.1485,1 +17-10-2020,6.6976,4.1485,1 +18-10-2020,6.6976,4.1495,1 +19-10-2020,6.6822,4.1469,1 +20-10-2020,6.6767,4.1495,1 +21-10-2020,6.6511,4.1435,1 +22-10-2020,6.6846,4.144,1 +23-10-2020,6.6868,4.144,1 +24-10-2020,6.6868,4.144,1 +25-10-2020,6.6868,4.1575,1 +26-10-2020,6.7123,4.1655,1 +27-10-2020,6.7055,4.1625,1 +28-10-2020,6.729,4.1565,1 +29-10-2020,6.715,4.157,1 +30-10-2020,6.6912,4.153,1 +31-10-2020,6.6912,4.153,1 +01-11-2020,6.6922,4.15325,1 +02-11-2020,6.6912,4.1575,1 +03-11-2020,6.6776,4.1565,1 +04-11-2020,6.6535,4.168,1 +05-11-2020,6.6062,4.146,1 +06-11-2020,6.6114,4.1285,1 +07-11-2020,6.6114,4.1285,1 +08-11-2020,6.6114,4.1285,1 +09-11-2020,6.6296,4.1081,1 +10-11-2020,6.6158,4.108,1 +11-11-2020,6.6318,4.1295,1 +12-11-2020,6.6123,4.1305,1 +13-11-2020,6.6064,4.1235,1 +14-11-2020,6.6064,4.1235,1 +15-11-2020,6.6064,4.123,1 +16-11-2020,6.5848,4.1175,1 +17-11-2020,6.5566,4.105,1 +18-11-2020,6.5605,4.088,1 +19-11-2020,6.5835,4.0995,1 +20-11-2020,6.563,4.0925,1 +21-11-2020,6.563,4.0925,1 +22-11-2020,6.563,4.0925,1 +23-11-2020,6.586,4.0905,1 +24-11-2020,6.5912,4.0875,1 +25-11-2020,6.579,4.0875,1 +26-11-2020,6.5756,4.0675,1 +27-11-2020,6.577,4.0695,1 +28-11-2020,6.577,4.0695,1 +29-11-2020,6.577,4.0695,1 +30-11-2020,6.5789,4.074,1 +01-12-2020,6.5723,4.075,1 +02-12-2020,6.5634,4.0738,1 +03-12-2020,6.5429,4.0755,1 +04-12-2020,6.5316,4.06,1 +05-12-2020,6.5316,4.06,1 +06-12-2020,6.5316,4.06,1 +07-12-2020,6.5298,4.072,1 +08-12-2020,6.5332,4.0725,1 +09-12-2020,6.5433,4.064,1 +10-12-2020,6.5455,4.059,1 +11-12-2020,6.5467,4.0515,1 +12-12-2020,6.5467,4.0515,1 +13-12-2020,6.5467,4.0515,1 +14-12-2020,6.5508,4.0535,1 +15-12-2020,6.5393,4.0545,1 +16-12-2020,6.5328,4.0515,1 +17-12-2020,6.5332,4.0435,1 +18-12-2020,6.537,4.0405,1 +19-12-2020,6.537,4.0405,1 +20-12-2020,6.537,4.0405,1 +21-12-2020,6.5497,4.0426,1 +22-12-2020,6.5433,4.061,1 +23-12-2020,6.5407,4.0635,1 +24-12-2020,6.5301,4.0621,1 +25-12-2020,6.5418,4.0605,1 +26-12-2020,6.5418,4.0605,1 +27-12-2020,6.5418,4.0605,1 +28-12-2020,6.5371,4.05026,1 +29-12-2020,6.531,4.0505,1 +30-12-2020,6.5233,4.037,1 +31-12-2020,6.5327,4.0505,1 +01-01-2021,6.533,4.0505,1 +02-01-2021,6.533,4.0505,1 +03-01-2021,6.533,4.0225,1 +04-01-2021,6.4616,4.0065,1 +05-01-2021,6.4563,4.0175,1 +06-01-2021,6.4617,4.0105,1 +07-01-2021,6.4782,4.04,1 +08-01-2021,6.4754,4.0325,1 +09-01-2021,6.4754,4.0325,1 +10-01-2021,6.47545,4.0325,1 +11-01-2021,6.4808,4.0475,1 +12-01-2021,6.464,4.055,1 +13-01-2021,6.4681,4.0445,1 +14-01-2021,6.4746,4.0385,1 +15-01-2021,6.4808,4.0365,1 +16-01-2021,6.4808,4.0365,1 +17-01-2021,6.48085,4.0365,1 +18-01-2021,6.4925,4.0485,1 +19-01-2021,6.479,4.048,1 +20-01-2021,6.4665,4.045,1 +21-01-2021,6.4624,4.03,1 +22-01-2021,6.4819,4.043,1 +23-01-2021,6.4819,4.043,1 +24-01-2021,6.4819,4.043,1 +25-01-2021,6.4798,4.0455,1 +26-01-2021,6.4652,4.049,1 +27-01-2021,6.4836,4.0455,1 +28-01-2021,6.4494,4.0455,1 +29-01-2021,6.4277,4.0425,1 +30-01-2021,6.4276,4.0425,1 +31-01-2021,6.4278,4.0425,1 +01-02-2021,6.4686,4.0425,1 +02-02-2021,6.45732,4.0445,1 +03-02-2021,6.4602,4.0515,1 +04-02-2021,6.4718,4.0585,1 +05-02-2021,6.4667,4.0705,1 +06-02-2021,6.4667,4.0705,1 +07-02-2021,6.4667,4.0705,1 +08-02-2021,6.449,4.0655,1 +09-02-2021,6.4353,4.049,1 +10-02-2021,6.4582,4.044,1 +11-02-2021,6.4579,4.0425,1 +12-02-2021,6.4582,4.0425,1 +13-02-2021,6.4582,4.0425,1 +14-02-2021,6.4582,4.0425,1 +15-02-2021,6.4582,4.0355,1 +16-02-2021,6.4581,4.03,1 +17-02-2021,6.4586,4.0395,1 +18-02-2021,6.4882,4.042,1 +19-02-2021,6.4869,4.039,1 +20-02-2021,6.4868,4.039,1 +21-02-2021,6.472267,4.0391,1 +22-02-2021,6.4645,4.042,1 +23-02-2021,6.46545,4.0435,1 +24-02-2021,6.4571,4.0425,1 +25-02-2021,6.4549,4.0395,1 +26-02-2021,6.4789,4.0545,1 +27-02-2021,6.4789,4.0545,1 +28-02-2021,6.47668,4.0545,1 +01-03-2021,6.4658,4.0565,1 +02-03-2021,6.4705,4.0585,1 +03-03-2021,6.4679,4.053,1 +04-03-2021,6.47,4.0575,1 +05-03-2021,6.4968,4.074,1 +06-03-2021,6.4968,4.074,1 +07-03-2021,6.4968,4.074,1 +08-03-2021,6.5261,4.1075,1 +09-03-2021,6.5064,4.117,1 +10-03-2021,6.5059,4.1275,1 +11-03-2021,6.4939,4.1075,1 +12-03-2021,6.5085,4.118,1 +13-03-2021,6.5085,4.118,1 +14-03-2021,6.5085,4.118,1 +15-03-2021,6.4999,4.1125,1 +16-03-2021,6.5057,4.114,1 +17-03-2021,6.5041,4.1215,1 +18-03-2021,6.5063,4.1115,1 +19-03-2021,6.509,4.1075,1 +20-03-2021,6.509,4.1075,1 +21-03-2021,6.509,4.1075,1 +22-03-2021,6.5078,4.113,1 +23-03-2021,6.5164,4.1225,1 +24-03-2021,6.5246,4.132,1 +25-03-2021,6.5463,4.1465,1 +26-03-2021,6.5415,4.14675,1 +27-03-2021,6.5415,4.14675,1 +28-03-2021,6.5415,4.1465,1 +29-03-2021,6.5697,4.1415,1 +30-03-2021,6.572,4.151,1 +31-03-2021,6.5527,4.1465,1 +01-04-2021,6.5654,4.1455,1 +02-04-2021,6.5675,4.14,1 +03-04-2021,6.5675,4.14,1 +04-04-2021,6.5675,4.14,1 +05-04-2021,6.5669,4.1425,1 +06-04-2021,6.5395,4.1315,1 +07-04-2021,6.5425,4.1315,1 +08-04-2021,6.5511,4.1375,1 +09-04-2021,6.553,4.135,1 +10-04-2021,6.553,4.135,1 +11-04-2021,6.553,4.135,1 +12-04-2021,6.5489,4.133,1 +13-04-2021,6.5441,4.1346,1 +14-04-2021,6.5296,4.1285,1 +15-04-2021,6.5228,4.1245,1 +16-04-2021,6.5209,4.126,1 +17-04-2021,6.5209,4.126,1 +18-04-2021,6.521,4.126,1 +19-04-2021,6.5103,4.1235,1 +20-04-2021,6.4995,4.115,1 +21-04-2021,6.491,4.121,1 +22-04-2021,6.4913,4.11229,1 +23-04-2021,6.4954,4.1095,1 +24-04-2021,6.4954,4.1095,1 +25-04-2021,6.4954,4.1095,1 +26-04-2021,6.4855,4.099,1 +27-04-2021,6.4831,4.0975,1 +28-04-2021,6.4789,4.1025,1 +29-04-2021,6.4722,4.1025,1 +30-04-2021,6.4745,4.0955,1 +01-05-2021,6.4745,4.0955,1 +02-05-2021,6.4745,4.0955,1 +03-05-2021,6.4738,4.1045,1 +04-05-2021,6.4738,4.123,1 +05-05-2021,6.474,4.1175,1 +06-05-2021,6.4642,4.122,1 +07-05-2021,6.4325,4.1125,1 +08-05-2021,6.4325,4.1125,1 +09-05-2021,6.4325,4.1125,1 +10-05-2021,6.41625,4.1075,1 +11-05-2021,6.4293,4.1185,1 +12-05-2021,6.4562,4.1255,1 +13-05-2021,6.452,4.1255,1 +14-05-2021,6.4371,4.1255,1 +15-05-2021,6.4371,4.1255,1 +16-05-2021,6.4371,4.131,1 +17-05-2021,6.4392,4.13,1 +18-05-2021,6.4252,4.1245,1 +19-05-2021,6.435,4.1265,1 +20-05-2021,6.4349,4.141,1 +21-05-2021,6.4342,4.141,1 +22-05-2021,6.4342,4.141,1 +23-05-2021,6.4342,4.141,1 +24-05-2021,6.4193,4.1475,1 +25-05-2021,6.411,4.1425,1 +26-05-2021,6.3917,4.1425,1 +27-05-2021,6.383,4.1395,1 +28-05-2021,6.3684,4.1365,1 +29-05-2021,6.3684,4.1365,1 +30-05-2021,6.3684,4.1335,1 +31-05-2021,6.37,4.127,1 +01-06-2021,6.3817,4.1265,1 +02-06-2021,6.3811,4.125,1 +03-06-2021,6.4038,4.123,1 +04-06-2021,6.3952,4.128,1 +05-06-2021,6.3952,4.128,1 +06-06-2021,6.3953,4.128,1 +07-06-2021,6.3974,4.128,1 +08-06-2021,6.4005,4.12,1 +09-06-2021,6.3875,4.1175,1 +10-06-2021,6.3933,4.1205,1 +11-06-2021,6.3987,4.108,1 +12-06-2021,6.3987,4.108,1 +13-06-2021,6.3987,4.113,1 +14-06-2021,6.3987,4.115,1 +15-06-2021,6.406,4.117,1 +16-06-2021,6.3977,4.1175,1 +17-06-2021,6.4484,4.14,1 +18-06-2021,6.4531,4.14,1 +19-06-2021,6.4531,4.14,1 +20-06-2021,6.4531,4.139,1 +21-06-2021,6.4669,4.1455,1 +22-06-2021,6.4813,4.1475,1 +23-06-2021,6.474,4.1605,1 +24-06-2021,6.472,4.1575,1 +25-06-2021,6.4562,4.156,1 +26-06-2021,6.4562,4.156,1 +27-06-2021,6.4563,4.156,1 +28-06-2021,6.4561,4.146,1 +29-06-2021,6.4641,4.152,1 +30-06-2021,6.4572,4.1515,1 +01-07-2021,6.4691,4.159,1 +02-07-2021,6.473,4.1635,1 +03-07-2021,6.473,4.1635,1 +04-07-2021,6.4731,4.1635,1 +05-07-2021,6.4638,4.156,1 +06-07-2021,6.4791,4.1555,1 +07-07-2021,6.473,4.1625,1 +08-07-2021,6.4901,4.1815,1 +09-07-2021,6.4789,4.1905,1 +10-07-2021,6.4789,4.1905,1 +11-07-2021,6.479,4.1905,1 +12-07-2021,6.4756,4.1905,1 +13-07-2021,6.4685,4.193,1 +14-07-2021,6.4691,4.1965,1 +15-07-2021,6.4611,4.2005,1 +16-07-2021,6.4792,4.20965,1 +17-07-2021,6.4792,4.20965,1 +18-07-2021,6.4792,4.2077,1 +19-07-2021,6.4905,4.2245,1 +20-07-2021,6.485,4.2245,1 +21-07-2021,6.4679,4.234,1 +22-07-2021,6.4707,4.223,1 +23-07-2021,6.4814,4.2265,1 +24-07-2021,6.4814,4.2265,1 +25-07-2021,6.4814,4.2265,1 +26-07-2021,6.4828,4.2265,1 +27-07-2021,6.5112,4.2316,1 +28-07-2021,6.4909,4.234,1 +29-07-2021,6.4564,4.2345,1 +30-07-2021,6.4615,4.222,1 +31-07-2021,6.4615,4.222,1 +01-08-2021,6.4615,4.2215,1 +02-08-2021,6.462,4.225,1 +03-08-2021,6.4702,4.222,1 +04-08-2021,6.4663,4.222,1 +05-08-2021,6.4614,4.2175,1 +06-08-2021,6.4836,4.219,1 +07-08-2021,6.4836,4.219,1 +08-08-2021,6.4835,4.2215,1 +09-08-2021,6.4863,4.2285,1 +10-08-2021,6.4859,4.2285,1 +11-08-2021,6.4792,4.235,1 +12-08-2021,6.4793,4.233,1 +13-08-2021,6.4774,4.2375,1 +14-08-2021,6.4774,4.2375,1 +15-08-2021,6.4774,4.2375,1 +16-08-2021,6.4747,4.2375,1 +17-08-2021,6.4861,4.238,1 +18-08-2021,6.4847,4.238,1 +19-08-2021,6.4947,4.2385,1 +20-08-2021,6.5015,4.238,1 +21-08-2021,6.5015,4.238,1 +22-08-2021,6.5015,4.2375,1 +23-08-2021,6.4815,4.226,1 +24-08-2021,6.4714,4.2185,1 +25-08-2021,6.476,4.205,1 +26-08-2021,6.4815,4.1953,1 +27-08-2021,6.4718,4.195,1 +28-08-2021,6.4718,4.195,1 +29-08-2021,6.4718,4.19,1 +30-08-2021,6.4666,4.157,1 +31-08-2021,6.4607,4.1575,1 +01-09-2021,6.46,4.1538,1 +02-09-2021,6.4565,4.158,1 +03-09-2021,6.4535,4.1465,1 +04-09-2021,6.4535,4.1465,1 +05-09-2021,6.4529,4.1465,1 +06-09-2021,6.4582,4.148,1 +07-09-2021,6.4666,4.1555,1 +08-09-2021,6.4618,4.1545,1 +09-09-2021,6.4554,4.148,1 +10-09-2021,6.4443,4.1365,1 +11-09-2021,6.4443,4.1365,1 +12-09-2021,6.4444,4.1365,1 +13-09-2021,6.4518,4.1475,1 +14-09-2021,6.4394,4.162,1 +15-09-2021,6.4325,4.1581,1 +16-09-2021,6.4576,4.1581,1 +17-09-2021,6.4662,4.1715,1 +18-09-2021,6.4662,4.1715,1 +19-09-2021,6.4662,4.172,1 +20-09-2021,6.466,4.1925,1 +21-09-2021,6.467,4.1865,1 +22-09-2021,6.4623,4.1925,1 +23-09-2021,6.459,4.182,1 +24-09-2021,6.4667,4.1885,1 +25-09-2021,6.4667,4.1885,1 +26-09-2021,6.4667,4.1885,1 +27-09-2021,6.457,4.19,1 +28-09-2021,6.46,4.1825,1 +29-09-2021,6.4706,4.18434,1 +30-09-2021,6.4465,4.1865,1 +01-10-2021,6.4467,4.1865,1 +02-10-2021,6.4467,4.1865,1 +03-10-2021,6.4467,4.1795,1 +04-10-2021,6.4467,4.174,1 +05-10-2021,6.4467,4.17876,1 +06-10-2021,6.4467,4.1845,1 +07-10-2021,6.4467,4.1835,1 +08-10-2021,6.4433,4.178,1 +09-10-2021,6.4433,4.178,1 +10-10-2021,6.4433,4.181,1 +11-10-2021,6.4507,4.17,1 +12-10-2021,6.449,4.1655,1 +13-10-2021,6.4281,4.16,1 +14-10-2021,6.44,4.154,1 +15-10-2021,6.4358,4.158,1 +16-10-2021,6.4358,4.158,1 +17-10-2021,6.4358,4.158,1 +18-10-2021,6.4299,4.1715,1 +19-10-2021,6.3828,4.1715,1 +20-10-2021,6.3939,4.158,1 +21-10-2021,6.3933,4.158,1 +22-10-2021,6.3849,4.15,1 +23-10-2021,6.3849,4.15,1 +24-10-2021,6.3849,4.15,1 +25-10-2021,6.3858,4.1515,1 +26-10-2021,6.383,4.1475,1 +27-10-2021,6.3927,4.1475,1 +28-10-2021,6.3919,4.15,1 +29-10-2021,6.4057,4.141,1 +30-10-2021,6.4057,4.141,1 +31-10-2021,6.4057,4.141,1 +01-11-2021,6.3977,4.1515,1 +02-11-2021,6.4,4.1485,1 +03-11-2021,6.4072,4.1535,1 +04-11-2021,6.3975,4.1535,1 +05-11-2021,6.3989,4.16,1 +06-11-2021,6.3989,4.16,1 +07-11-2021,6.3989,4.16,1 +08-11-2021,6.3927,4.155,1 +09-11-2021,6.3928,4.1495,1 +10-11-2021,6.3891,4.1535,1 +11-11-2021,6.3906,4.1655,1 +12-11-2021,6.3796,4.1648,1 +13-11-2021,6.3796,4.1648,1 +14-11-2021,6.3796,4.156,1 +15-11-2021,6.3832,4.1615,1 +16-11-2021,6.3921,4.166,1 +17-11-2021,6.378,4.174,1 +18-11-2021,6.3861,4.1815,1 +19-11-2021,6.3872,4.1835,1 +20-11-2021,6.3872,4.1835,1 +21-11-2021,6.3872,4.1835,1 +22-11-2021,6.3854,4.1855,1 +23-11-2021,6.3919,4.1955,1 +24-11-2021,6.3928,4.2105,1 +25-11-2021,6.387,4.2305,1 +26-11-2021,6.393,4.239,1 +27-11-2021,6.393,4.239,1 +28-11-2021,6.393,4.239,1 +29-11-2021,6.388,4.2385,1 +30-11-2021,6.3643,4.204,1 +01-12-2021,6.3683,4.22,1 +02-12-2021,6.3771,4.23,1 +03-12-2021,6.3764,4.231,1 +04-12-2021,6.3764,4.231,1 +05-12-2021,6.3764,4.231,1 +06-12-2021,6.3763,4.2325,1 +07-12-2021,6.3673,4.232,1 +08-12-2021,6.3447,4.2205,1 +09-12-2021,6.3776,4.2165,1 +10-12-2021,6.3699,4.2125,1 +11-12-2021,6.3699,4.2125,1 +12-12-2021,6.37,4.2125,1 +13-12-2021,6.367,4.2125,1 +14-12-2021,6.3675,4.2335,1 +15-12-2021,6.3676,4.23,1 +16-12-2021,6.3683,4.23,1 +17-12-2021,6.3754,4.2185,1 +18-12-2021,6.3754,4.2185,1 +19-12-2021,6.3756,4.2185,1 +20-12-2021,6.3757,4.2265,1 +21-12-2021,6.3721,4.2085,1 +22-12-2021,6.3701,4.2135,1 +23-12-2021,6.3703,4.2,1 +24-12-2021,6.3676,4.195,1 +25-12-2021,6.3676,4.195,1 +26-12-2021,6.3677,4.195,1 +27-12-2021,6.3713,4.183,1 +28-12-2021,6.3687,4.1805,1 +29-12-2021,6.3683,4.182,1 +30-12-2021,6.3731,4.174,1 +31-12-2021,6.3559,4.1765,1 +01-01-2022,6.3559,4.1765,1 +02-01-2022,6.3559,4.1744,1 +03-01-2022,6.3561,4.172499,1 +04-01-2022,6.3553,4.186,1 +05-01-2022,6.356,4.1965,1 +06-01-2022,6.383,4.207,1 +07-01-2022,6.3777,4.209,1 +08-01-2022,6.3777,4.209,1 +09-01-2022,6.377767,4.209,1 +10-01-2022,6.3759,4.2,1 +11-01-2022,6.374,4.1915,1 +12-01-2022,6.3586,4.186,1 +13-01-2022,6.3596,4.1765,1 +14-01-2022,6.3526,4.1785,1 +15-01-2022,6.3526,4.1785,1 +16-01-2022,6.352733,4.1785,1 +17-01-2022,6.3482,4.1835,1 +18-01-2022,6.3533,4.1835,1 +19-01-2022,6.345,4.193,1 +20-01-2022,6.341,4.1885,1 +21-01-2022,6.3388,4.1865,1 +22-01-2022,6.3388,4.1865,1 +23-01-2022,6.338933,4.1865,1 +24-01-2022,6.3309,4.189,1 +25-01-2022,6.328,4.19,1 +26-01-2022,6.3211,4.1915,1 +27-01-2022,6.368,4.1975,1 +28-01-2022,6.3613,4.19,1 +29-01-2022,6.3613,4.19,1 +30-01-2022,6.361,4.19,1 +31-01-2022,6.361,4.1855,1 +01-02-2022,6.361,4.1855,1 +02-02-2022,6.361,4.1835,1 +03-02-2022,6.361,4.1835,1 +04-02-2022,6.361,4.1795,1 +05-02-2022,6.361,4.1795,1 +06-02-2022,6.361,4.1795,1 +07-02-2022,6.3623,4.18526,1 +08-02-2022,6.3668,4.1848,1 +09-02-2022,6.3629,4.18496,1 +10-02-2022,6.3541,4.1835,1 +11-02-2022,6.3546,4.1895,1 +12-02-2022,6.3546,4.1895,1 +13-02-2022,6.3546,4.1895,1 +14-02-2022,6.3574,4.1905,1 +15-02-2022,6.3396,4.18694,1 +16-02-2022,6.3371,4.18526,1 +17-02-2022,6.3373,4.1875,1 +18-02-2022,6.3253,4.186,1 +19-02-2022,6.3253,4.186,1 +20-02-2022,6.3255,4.186,1 +21-02-2022,6.3353,4.1795,1 +22-02-2022,6.3264,4.1855,1 +23-02-2022,6.3138,4.1855,1 +24-02-2022,6.3284,4.201,1 +25-02-2022,6.3171,4.2,1 +26-02-2022,6.3171,4.2,1 +27-02-2022,6.3173,4.2,1 +28-02-2022,6.3094,4.1985,1 +01-03-2022,6.3125,4.1941,1 +02-03-2022,6.3211,4.1955,1 +03-03-2022,6.3203,4.1865,1 +04-03-2022,6.3177,4.178,1 +05-03-2022,6.3177,4.178,1 +06-03-2022,6.31885,4.178,1 +07-03-2022,6.3208,4.177,1 +08-03-2022,6.3187,4.1825,1 +09-03-2022,6.3177,4.187,1 +10-03-2022,6.3219,4.1875,1 +11-03-2022,6.3398,4.1945,1 +12-03-2022,6.3398,4.1945,1 +13-03-2022,6.3398,4.1945,1 +14-03-2022,6.3655,4.205,1 +15-03-2022,6.3706,4.207,1 +16-03-2022,6.3523,4.197,1 +17-03-2022,6.347,4.1967,1 +18-03-2022,6.3612,4.1938,1 +19-03-2022,6.3612,4.1938,1 +20-03-2022,6.3612,4.193,1 +21-03-2022,6.356,4.205,1 +22-03-2022,6.3664,4.2165,1 +23-03-2022,6.3724,4.224,1 +24-03-2022,6.3678,4.22626,1 +25-03-2022,6.3663,4.2105,1 +26-03-2022,6.3663,4.2105,1 +27-03-2022,6.3662,4.2105,1 +28-03-2022,6.3722,4.2165,1 +29-03-2022,6.3642,4.2135,1 +30-03-2022,6.3477,4.2045,1 +31-03-2022,6.34,4.20476,1 +01-04-2022,6.3631,4.2105,1 +02-04-2022,6.3631,4.2105,1 +03-04-2022,6.3631,4.2105,1 +04-04-2022,6.3634,4.2175,1 +05-04-2022,6.3641,4.2115,1 +06-04-2022,6.3595,4.215,1 +07-04-2022,6.3607,4.21764,1 +08-04-2022,6.3651,4.2215,1 +09-04-2022,6.3651,4.2215,1 +10-04-2022,6.365,4.2215,1 +11-04-2022,6.3697,4.2305,1 +12-04-2022,6.3661,4.233,1 +13-04-2022,6.3682,4.2305,1 +14-04-2022,6.3784,4.2315,1 +15-04-2022,6.3712,4.2355,1 +16-04-2022,6.3712,4.2355,1 +17-04-2022,6.3712,4.2355,1 +18-04-2022,6.3672,4.2545,1 +19-04-2022,6.3935,4.2545,1 +20-04-2022,6.4192,4.282,1 +21-04-2022,6.4503,4.291,1 +22-04-2022,6.5017,4.325,1 +23-04-2022,6.5017,4.325,1 +24-04-2022,6.5013,4.325,1 +25-04-2022,6.5594,4.3575,1 +26-04-2022,6.5573,4.355,1 +27-04-2022,6.5605,4.359,1 +28-04-2022,6.6263,4.366,1 +29-04-2022,6.6085,4.3535,1 +30-04-2022,6.6085,4.3535,1 +01-05-2022,6.6085,4.3535,1 +02-05-2022,6.6085,4.3535,1 +03-05-2022,6.6084,4.3535,1 +04-05-2022,6.6085,4.3545,1 +05-05-2022,6.6556,4.35,1 +06-05-2022,6.6665,4.37,1 +07-05-2022,6.6665,4.37,1 +08-05-2022,6.6666,4.37,1 +09-05-2022,6.7308,4.3835,1 +10-05-2022,6.7347,4.382,1 +11-05-2022,6.7217,4.3765,1 +12-05-2022,6.787,4.3935,1 +13-05-2022,6.789,4.398,1 +14-05-2022,6.789,4.398,1 +15-05-2022,6.789,4.398,1 +16-05-2022,6.7862,4.398,1 +17-05-2022,6.7377,4.385,1 +18-05-2022,6.7545,4.3975,1 +19-05-2022,6.7131,4.4025,1 +20-05-2022,6.693,4.389,1 +21-05-2022,6.693,4.389,1 +22-05-2022,6.693,4.389,1 +23-05-2022,6.6508,4.3895,1 +24-05-2022,6.654,4.3955,1 +25-05-2022,6.6928,4.395,1 +26-05-2022,6.7389,4.398,1 +27-05-2022,6.6986,4.379,1 +28-05-2022,6.6986,4.379,1 +29-05-2022,6.6986,4.379,1 +30-05-2022,6.6613,4.3663,1 +31-05-2022,6.6726,4.3785,1 +01-06-2022,6.6862,4.3821,1 +02-06-2022,6.6603,4.391,1 +03-06-2022,6.6603,4.391,1 +04-06-2022,6.6603,4.391,1 +05-06-2022,6.6603,4.391,1 +06-06-2022,6.6539,4.3915,1 +07-06-2022,6.6707,4.3955,1 +08-06-2022,6.6837,4.394,1 +09-06-2022,6.6923,4.3935,1 +10-06-2022,6.7089,4.3935,1 +11-06-2022,6.7089,4.3935,1 +12-06-2022,6.7089,4.402,1 +13-06-2022,6.7546,4.4185,1 +14-06-2022,6.741,4.4225,1 +15-06-2022,6.7133,4.4145,1 +16-06-2022,6.7044,4.4025,1 +17-06-2022,6.7167,4.402,1 +18-06-2022,6.7167,4.402,1 +19-06-2022,6.7167,4.402,1 +20-06-2022,6.6925,4.4015,1 +21-06-2022,6.6895,4.398,1 +22-06-2022,6.7021,4.398,1 +23-06-2022,6.6983,4.40576,1 +24-06-2022,6.6898,4.402,1 +25-06-2022,6.6898,4.402,1 +26-06-2022,6.6898,4.402,1 +27-06-2022,6.6918,4.404,1 +28-06-2022,6.7083,4.397,1 +29-06-2022,6.7008,4.3998,1 +30-06-2022,6.6992,4.4075,1 +01-07-2022,6.701,4.407,1 +02-07-2022,6.701,4.407,1 +03-07-2022,6.7015,4.407,1 +04-07-2022,6.7001,4.413,1 +05-07-2022,6.7199,4.4195,1 +06-07-2022,6.708,4.4245,1 +07-07-2022,6.702,4.428,1 +08-07-2022,6.6952,4.426,1 +09-07-2022,6.6952,4.426,1 +10-07-2022,6.6953,4.427,1 +11-07-2022,6.7183,4.427,1 +12-07-2022,6.7248,4.437,1 +13-07-2022,6.7187,4.437,1 +14-07-2022,6.7562,4.444,1 +15-07-2022,6.7574,4.44845,1 +16-07-2022,6.7574,4.44845,1 +17-07-2022,6.7575,4.449,1 +18-07-2022,6.7433,4.453,1 +19-07-2022,6.7447,4.45,1 +20-07-2022,6.7559,4.452,1 +21-07-2022,6.7666,4.457,1 +22-07-2022,6.7513,4.452,1 +23-07-2022,6.7513,4.452,1 +24-07-2022,6.7515,4.452,1 +25-07-2022,6.751,4.4535,1 +26-07-2022,6.7633,4.456,1 +27-07-2022,6.7585,4.4585,1 +28-07-2022,6.7473,4.4525,1 +29-07-2022,6.7442,4.4505,1 +30-07-2022,6.7442,4.4505,1 +31-07-2022,6.7442,4.4505,1 +01-08-2022,6.7688,4.4525,1 +02-08-2022,6.7528,4.454,1 +03-08-2022,6.758,4.457,1 +04-08-2022,6.7493,4.458,1 +05-08-2022,6.7622,4.456,1 +06-08-2022,6.7622,4.456,1 +07-08-2022,6.7619,4.456,1 +08-08-2022,6.7509,4.459,1 +09-08-2022,6.7527,4.455,1 +10-08-2022,6.7238,4.457,1 +11-08-2022,6.7446,4.445,1 +12-08-2022,6.7429,4.4445,1 +13-08-2022,6.7429,4.4445,1 +14-08-2022,6.7428,4.4443,1 +15-08-2022,6.7735,4.4595,1 +16-08-2022,6.7884,4.466,1 +17-08-2022,6.781,4.4675,1 +18-08-2022,6.7861,4.468,1 +19-08-2022,6.8171,4.4765,1 +20-08-2022,6.8171,4.4765,1 +21-08-2022,6.8169,4.4765,1 +22-08-2022,6.8489,4.485,1 +23-08-2022,6.8351,4.4928,1 +24-08-2022,6.8596,4.489,1 +25-08-2022,6.8493,4.472,1 +26-08-2022,6.8718,4.4675,1 +27-08-2022,6.8718,4.4675,1 +28-08-2022,6.8718,4.4675,1 +29-08-2022,6.908,4.482,1 +30-08-2022,6.9119,4.4755,1 +31-08-2022,6.8904,4.476,1 +01-09-2022,6.907,4.481,1 +02-09-2022,6.9,4.481,1 +03-09-2022,6.9,4.481,1 +04-09-2022,6.9,4.484,1 +05-09-2022,6.9341,4.488,1 +06-09-2022,6.9541,4.5,1 +07-09-2022,6.9663,4.5015,1 +08-09-2022,6.9576,4.4965,1 +09-09-2022,6.9265,4.498,1 +10-09-2022,6.9266,4.498,1 +11-09-2022,6.9265,4.498,1 +12-09-2022,6.9265,4.5035,1 +13-09-2022,6.9251,4.5044,1 +14-09-2022,6.962,4.527,1 +15-09-2022,6.9945,4.535,1 +16-09-2022,6.9838,4.5355,1 +17-09-2022,6.9839,4.5355,1 +18-09-2022,6.98,4.535,1 +19-09-2022,7.0067,4.55,1 +20-09-2022,7.0183,4.558,1 +21-09-2022,7.049,4.5525,1 +22-09-2022,7.0781,4.5684,1 +23-09-2022,7.1284,4.5785,1 +24-09-2022,7.1284,4.5785,1 +25-09-2022,7.1284,4.5785,1 +26-09-2022,7.149,4.603,1 +27-09-2022,7.1779,4.61096,1 +28-09-2022,7.2005,4.611,1 +29-09-2022,7.125,4.633,1 +30-09-2022,7.116,4.637,1 +01-10-2022,7.116,4.637,1 +02-10-2022,7.116,4.637,1 +03-10-2022,7.116,4.648,1 +04-10-2022,7.116,4.64,1 +05-10-2022,7.116,4.6305,1 +06-10-2022,7.116,4.6375,1 +07-10-2022,7.116,4.6375,1 +08-10-2022,7.116,4.6375,1 +09-10-2022,7.116,4.65,1 +10-10-2022,7.1546,4.65,1 +11-10-2022,7.1654,4.673,1 +12-10-2022,7.1751,4.6825,1 +13-10-2022,7.1706,4.6915,1 +14-10-2022,7.191,4.702,1 +15-10-2022,7.191,4.702,1 +16-10-2022,7.191,4.702,1 +17-10-2022,7.1965,4.717,1 +18-10-2022,7.2021,4.7175,1 +19-10-2022,7.2288,4.72,1 +20-10-2022,7.2168,4.729,1 +21-10-2022,7.2438,4.738,1 +22-10-2022,7.2438,4.738,1 +23-10-2022,7.2438,4.738,1 +24-10-2022,7.263,4.738,1 +25-10-2022,7.3049,4.735,1 +26-10-2022,7.173,4.725,1 +27-10-2022,7.229,4.715,1 +28-10-2022,7.2525,4.7225,1 +29-10-2022,7.2525,4.7225,1 +30-10-2022,7.2525,4.7225,1 +31-10-2022,7.3029,4.728,1 +01-11-2022,7.2776,4.7365,1 +02-11-2022,7.2901,4.738,1 +03-11-2022,7.3018,4.7445,1 +04-11-2022,7.1851,4.748,1 +05-11-2022,7.185,4.747999,1 +06-11-2022,7.1851,4.748,1 +07-11-2022,7.2298,4.748,1 +08-11-2022,7.2493,4.7365,1 +09-11-2022,7.2419,4.692,1 +10-11-2022,7.187,4.7005,1 +11-11-2022,7.1083,4.6275,1 +12-11-2022,7.1082,4.6275,1 +13-11-2022,7.108267,4.6421,1 +14-11-2022,7.074,4.59626,1 +15-11-2022,7.0445,4.565,1 +16-11-2022,7.0882,4.545,1 +17-11-2022,7.1572,4.55379,1 +18-11-2022,7.1198,4.55375,1 +19-11-2022,7.1199,4.553801,1 +20-11-2022,7.1199,4.5538,1 +21-11-2022,7.1653,4.579,1 +22-11-2022,7.1403,4.5795,1 +23-11-2022,7.1672,4.5745,1 +24-11-2022,7.1518,4.495,1 +25-11-2022,7.1754,4.48,1 +26-11-2022,7.17445,4.48,1 +27-11-2022,7.168417,4.4989,1 +28-11-2022,7.2086,4.48,1 +29-11-2022,7.1608,4.50879,1 +30-11-2022,7.0791,4.4778,1 +01-12-2022,7.0447,4.422,1 +02-12-2022,7.0246,4.3875,1 +03-12-2022,7.0247,4.3875,1 +04-12-2022,7.0189,4.388,1 +05-12-2022,6.962,4.369,1 +06-12-2022,6.996,4.395,1 +07-12-2022,6.9736,4.3975,1 +08-12-2022,6.9674,4.398,1 +09-12-2022,6.9578,4.4035,1 +10-12-2022,6.9577,4.4035,1 +11-12-2022,6.958067,4.4035,1 +12-12-2022,6.9775,4.417,1 +13-12-2022,6.9444,4.429,1 +14-12-2022,6.9509,4.3915,1 +15-12-2022,6.9732,4.4175,1 +16-12-2022,6.9733,4.4245,1 +17-12-2022,6.9732,4.4245,1 +18-12-2022,6.973267,4.4245,1 +19-12-2022,6.9796,4.4255,1 +20-12-2022,6.9619,4.4335,1 +21-12-2022,6.982,4.4375,1 +22-12-2022,6.9845,4.427,1 +23-12-2022,6.9893,4.425,1 +24-12-2022,6.9897,4.425,1 +25-12-2022,6.98946,4.425,1 +26-12-2022,6.9622,4.425,1 +27-12-2022,6.9601,4.423,1 +28-12-2022,6.9787,4.4225,1 +29-12-2022,6.9641,4.4235,1 +30-12-2022,6.8983,4.405,1 +31-12-2022,6.8979,4.405,1 +01-01-2023,6.89814,4.405,1 +02-01-2023,6.8986,4.405,1 +03-01-2023,6.9151,4.406,1 +04-01-2023,6.8888,4.4049,1 +05-01-2023,6.8827,4.3915,1 +06-01-2023,6.8385,4.4035,1 +07-01-2023,6.8384,4.4035,1 +08-01-2023,6.83846,4.4035,1 +09-01-2023,6.7725,4.3755,1 +10-01-2023,6.7785,4.3725,1 +11-01-2023,6.7705,4.371,1 +12-01-2023,6.7388,4.371,1 +13-01-2023,6.703,4.335,1 +14-01-2023,6.7029,4.335,1 +15-01-2023,6.702967,4.335,1 +16-01-2023,6.7336,4.316,1 +17-01-2023,6.7739,4.3265,1 +18-01-2023,6.7481,4.3265,1 +19-01-2023,6.7769,4.3085,1 +20-01-2023,6.7838,4.2855,1 +21-01-2023,6.7836,4.2855,1 +22-01-2023,6.78372,4.2855,1 +23-01-2023,6.7845,4.2845,1 +24-01-2023,6.7845,4.2845,1 +25-01-2023,6.7839,4.2799,1 +26-01-2023,6.7835,4.2455,1 +27-01-2023,6.7835,4.244,1 +28-01-2023,6.7834,4.244,1 +29-01-2023,6.783967,4.244,1 +30-01-2023,6.7488,4.244,1 +31-01-2023,6.7547,4.2615,1 +01-02-2023,6.7418,4.2475,1 +02-02-2023,6.7325,4.246,1 +03-02-2023,6.7751,4.26,1 +04-02-2023,6.7753,4.26,1 +05-02-2023,6.775067,4.258,1 +06-02-2023,6.795,4.265,1 +07-02-2023,6.7927,4.303,1 +08-02-2023,6.7892,4.3,1 +09-02-2023,6.7807,4.3145,1 +10-02-2023,6.8095,4.3325,1 +11-02-2023,6.8094,4.3325,1 +12-02-2023,6.809467,4.3325,1 +13-02-2023,6.8229,4.3585,1 +14-02-2023,6.8269,4.3485,1 +15-02-2023,6.853,4.3925,1 +16-02-2023,6.8607,4.404,1 +17-02-2023,6.8677,4.432,1 +18-02-2023,6.8676,4.432,1 +19-02-2023,6.8676,4.432,1 +20-02-2023,6.8551,4.4305,1 +21-02-2023,6.8735,4.4325,1 +22-02-2023,6.8923,4.4415,1 +23-02-2023,6.9081,4.434,1 +24-02-2023,6.9562,4.4355,1 +25-02-2023,6.9561,4.4355,1 +26-02-2023,6.9561,4.4355,1 +27-02-2023,6.945,4.449833,1 +28-02-2023,6.9334,4.4875,1 +01-03-2023,6.8691,4.4725,1 +02-03-2023,6.9153,4.4755,1 +03-03-2023,6.9074,4.476,1 +04-03-2023,6.9078,4.476,1 +05-03-2023,6.90756,4.476,1 +06-03-2023,6.9304,4.476,1 +07-03-2023,6.9624,4.478,1 +08-03-2023,6.9517,4.5245,1 +09-03-2023,6.9648,4.521,1 +10-03-2023,6.9063,4.5195,1 +11-03-2023,6.9062,4.5195,1 +12-03-2023,6.906267,4.5195,1 +13-03-2023,6.8457,4.49679,1 +14-03-2023,6.8715,4.487,1 +15-03-2023,6.9069,4.48379,1 +16-03-2023,6.8985,4.504,1 +17-03-2023,6.8871,4.4855,1 +18-03-2023,6.8872,4.4855,1 +19-03-2023,6.8869,4.4855,1 +20-03-2023,6.8787,4.486,1 +21-03-2023,6.8845,4.4725,1 +22-03-2023,6.8807,4.46,1 +23-03-2023,6.8199,4.418,1 +24-03-2023,6.8681,4.4295,1 +25-03-2023,6.868,4.4295,1 +26-03-2023,6.868,4.428,1 +27-03-2023,6.88525,4.4205,1 +28-03-2023,6.8743,4.41,1 +29-03-2023,6.8871,4.4185,1 +30-03-2023,6.8719,4.4225,1 +31-03-2023,6.8688,4.4125,1 +01-04-2023,6.8688,4.4125,1 +02-04-2023,6.869,4.413,1 +03-04-2023,6.8783,4.4195,1 +04-04-2023,6.8798,4.406,1 +05-04-2023,6.8795,4.3985,1 +06-04-2023,6.8759,4.399,1 +07-04-2023,6.8707,4.403,1 +08-04-2023,6.8707,4.403,1 +09-04-2023,6.8703,4.413,1 +10-04-2023,6.8821,4.4105,1 +11-04-2023,6.887,4.4185,1 +12-04-2023,6.8748,4.4125,1 +13-04-2023,6.8688,4.4005,1 +14-04-2023,6.8715,4.402,1 +15-04-2023,6.8715,4.402,1 +16-04-2023,6.8714,4.402,1 +17-04-2023,6.8798,4.422,1 +18-04-2023,6.876,4.4345,1 +19-04-2023,6.8861,4.43,1 +20-04-2023,6.8731,4.438,1 +21-04-2023,6.8936,4.438,1 +22-04-2023,6.8936,4.438,1 +23-04-2023,6.8935,4.4375,1 +24-04-2023,6.8964,4.43779,1 +25-04-2023,6.9327,4.4465,1 +26-04-2023,6.9268,4.457,1 +27-04-2023,6.9238,4.463,1 +28-04-2023,6.9122,4.4605,1 +29-04-2023,6.9122,4.4605,1 +30-04-2023,6.9121,4.4605,1 +01-05-2023,6.9121,4.5329,1 +02-05-2023,6.9121,4.464,1 +03-05-2023,6.9121,4.453,1 +04-05-2023,6.9067,4.4535,1 +05-05-2023,6.9106,4.437,1 +06-05-2023,6.9106,4.437,1 +07-05-2023,6.9106,4.437,1 +08-05-2023,6.9125,4.437,1 +09-05-2023,6.9205,4.446,1 +10-05-2023,6.9333,4.4513,1 +11-05-2023,6.9487,4.465,1 +12-05-2023,6.9582,4.4625,1 +13-05-2023,6.9582,4.4625,1 +14-05-2023,6.9583,4.479,1 +15-05-2023,6.9526,4.4975,1 +16-05-2023,6.9776,4.4971,1 +17-05-2023,6.9986,4.525,1 +18-05-2023,7.0361,4.5365,1 +19-05-2023,7.0076,4.5385,1 +20-05-2023,7.0076,4.5385,1 +21-05-2023,7.0079,4.5385,1 +22-05-2023,7.034,4.548,1 +23-05-2023,7.0574,4.57,1 +24-05-2023,7.0609,4.5915,1 +25-05-2023,7.0789,4.6255,1 +26-05-2023,7.0647,4.601,1 +27-05-2023,7.0647,4.601,1 +28-05-2023,7.0647,4.601,1 +29-05-2023,7.0733,4.605,1 +30-05-2023,7.08,4.6015,1 +31-05-2023,7.1118,4.6155,1 +01-06-2023,7.0945,4.6135,1 +02-06-2023,7.0849,4.5775,1 +03-06-2023,7.0849,4.5775,1 +04-06-2023,7.0848,4.5775,1 +05-06-2023,7.106,4.5775,1 +06-06-2023,7.1198,4.6075,1 +07-06-2023,7.1298,4.6055,1 +08-06-2023,7.1123,4.6185,1 +09-06-2023,7.1286,4.614,1 +10-06-2023,7.1286,4.614,1 +11-06-2023,7.1286,4.614,1 +12-06-2023,7.1456,4.62,1 +13-06-2023,7.1675,4.617,1 +14-06-2023,7.1636,4.6215,1 +15-06-2023,7.121,4.626,1 +16-06-2023,7.1263,4.6145,1 +17-06-2023,7.1263,4.6145,1 +18-06-2023,7.1266,4.6145,1 +19-06-2023,7.1615,4.627423,1 +20-06-2023,7.1818,4.6405,1 +21-06-2023,7.1795,4.6465,1 +22-06-2023,7.1795,4.6505,1 +23-06-2023,7.1799,4.6765,1 +24-06-2023,7.1799,4.6765,1 +25-06-2023,7.1795,4.6765,1 +26-06-2023,7.2376,4.6735,1 +27-06-2023,7.2202,4.666,1 +28-06-2023,7.2445,4.6715,1 +29-06-2023,7.2528,4.6715,1 +30-06-2023,7.2537,4.6675,1 +01-07-2023,7.2537,4.6675,1 +02-07-2023,7.2523,4.6675,1 +03-07-2023,7.2408,4.667,1 +04-07-2023,7.2145,4.652,1 +05-07-2023,7.2475,4.653,1 +06-07-2023,7.2502,4.662,1 +07-07-2023,7.2212,4.67,1 +08-07-2023,7.2212,4.67,1 +09-07-2023,7.2212,4.6695,1 +10-07-2023,7.2316,4.6705,1 +11-07-2023,7.2102,4.658,1 +12-07-2023,7.1663,4.651,1 +13-07-2023,7.151,4.5895,1 +14-07-2023,7.1411,4.526,1 +15-07-2023,7.1411,4.526,1 +16-07-2023,7.1413,4.526,1 +17-07-2023,7.1717,4.5405,1 +18-07-2023,7.1803,4.5425,1 +19-07-2023,7.227,4.5425,1 +20-07-2023,7.1776,4.543,1 +21-07-2023,7.1878,4.561,1 +22-07-2023,7.1878,4.561,1 +23-07-2023,7.1878,4.561,1 +24-07-2023,7.1863,4.5733,1 +25-07-2023,7.1363,4.5625,1 +26-07-2023,7.151,4.5495,1 +27-07-2023,7.1742,4.522,1 +28-07-2023,7.1487,4.5535,1 +29-07-2023,7.1483,4.5535,1 +30-07-2023,7.1127,4.5545,1 +31-07-2023,7.10525,4.5305,1 +01-08-2023,7.1775,4.522,1 +02-08-2023,7.1912,4.554,1 +03-08-2023,7.1638,4.544,1 +04-08-2023,7.1707,4.5545,1 +05-08-2023,7.1703,4.5545,1 +06-08-2023,7.1411,4.544,1 +07-08-2023,7.1935,4.559,1 +08-08-2023,7.2167,4.5825,1 +09-08-2023,7.2093,4.571,1 +10-08-2023,7.2157,4.572,1 +11-08-2023,7.237,4.587,1 +12-08-2023,7.2366,4.587,1 +13-08-2023,7.2022,4.587,1 +14-08-2023,7.2583,4.6195,1 +15-08-2023,7.2825,4.6355,1 +16-08-2023,7.2981,4.6295,1 +17-08-2023,7.2814,4.6525,1 +18-08-2023,7.2816,4.6525,1 +19-08-2023,7.2811,4.6525,1 +20-08-2023,7.2817,4.6475,1 +21-08-2023,7.208,4.649,1 +22-08-2023,7.2934,4.648,1 +23-08-2023,7.1805,4.6497,1 +24-08-2023,7.27775,4.652,1 +25-08-2023,7.2897,4.64,1 +26-08-2023,7.2892,4.64,1 +27-08-2023,7.29,4.64,1 +28-08-2023,7.2901,4.6545,1 +29-08-2023,7.2804,4.6455,1 +30-08-2023,7.2846,4.64,1 +31-08-2023,7.2579,4.64,1 +01-09-2023,7.2612,4.6475,1 +02-09-2023,7.2611,4.6475,1 +03-09-2023,7.26116,4.6475,1 +04-09-2023,7.2729,4.655,1 +05-09-2023,7.3044,4.6625,1 +06-09-2023,7.3169,4.674,1 +07-09-2023,7.3288,4.6785,1 +08-09-2023,7.343,4.6765,1 +09-09-2023,7.343,4.6765,1 +10-09-2023,7.2424,4.6765,1 +11-09-2023,7.289,4.6745,1 +12-09-2023,7.2919,4.677,1 +13-09-2023,7.2698,4.677,1 +14-09-2023,7.2767,4.682,1 +15-09-2023,7.2748,4.684,1 +16-09-2023,7.2743,4.684,1 +17-09-2023,7.2749,4.684,1 +18-09-2023,7.2916,4.689,1 +19-09-2023,7.2966,4.6965,1 +20-09-2023,7.287,4.686,1 +21-09-2023,7.3075,4.6915,1 +22-09-2023,7.298,4.6915,1 +23-09-2023,7.297,4.6915,1 +24-09-2023,7.2985,4.6875,1 +25-09-2023,7.3109,4.6855,1 +26-09-2023,7.3117,4.69,1 +27-09-2023,7.3091,4.708,1 +28-09-2023,7.3009,4.7085,1 +29-09-2023,7.2952,4.69525,1 +30-09-2023,7.2942,4.69525,1 +01-10-2023,7.1736,4.6953,1 +02-10-2023,7.1899,4.717,1 +03-10-2023,7.1961,4.7235,1 +04-10-2023,7.2013,4.7315,1 +05-10-2023,7.1988,4.7275,1 +06-10-2023,7.1948,4.7275,1 +07-10-2023,7.1948,4.7275,1 +08-10-2023,7.3015,4.7135,1 +09-10-2023,7.2915,4.732,1 +10-10-2023,7.296,4.7265,1 +11-10-2023,7.2997,4.7185,1 +12-10-2023,7.3025,4.7125,1 +13-10-2023,7.3048,4.7285,1 +14-10-2023,7.3043,4.7285,1 +15-10-2023,7.178,4.7285,1 +16-10-2023,7.3103,4.736,1 +17-10-2023,7.3127,4.736,1 +18-10-2023,7.3145,4.7428,1 +19-10-2023,7.3122,4.765,1 +20-10-2023,7.3171,4.7675,1 +21-10-2023,7.317,4.7675,1 +22-10-2023,7.3164,4.7675,1 +23-10-2023,7.3151,4.7675,1 +24-10-2023,7.31,4.79,1 +25-10-2023,7.3167,4.78,1 +26-10-2023,7.3159,4.78504,1 +27-10-2023,7.3173,4.7785,1 +28-10-2023,7.3168,4.7785,1 +29-10-2023,7.1687,4.7785,1 +30-10-2023,7.313,4.7625,1 +31-10-2023,7.3163,4.7629,1 +01-11-2023,7.3169,4.7715,1 +02-11-2023,7.3151,4.7515,1 +03-11-2023,7.3,4.7305,1 +04-11-2023,7.2995,4.7305,1 +05-11-2023,7.2318,4.7295,1 +06-11-2023,7.2696,4.6365,1 +07-11-2023,7.2791,4.6435,1 +08-11-2023,7.2803,4.68379,1 +09-11-2023,7.2833,4.6925,1 +10-11-2023,7.2896,4.708,1 +11-11-2023,7.2891,4.708,1 +12-11-2023,7.1918,4.6956,1 +13-11-2023,7.29,4.708,1 +14-11-2023,7.2531,4.72,1 +15-11-2023,7.2468,4.6725,1 +16-11-2023,7.242,4.6885,1 +17-11-2023,7.2111,4.68,1 +18-11-2023,7.2107,4.68,1 +19-11-2023,7.182883,4.674,1 +20-11-2023,7.1686,4.665,1 +21-11-2023,7.0974,4.653,1 +22-11-2023,7.1552,4.678,1 +23-11-2023,7.0958,4.679,1 +24-11-2023,7.092,4.6845,1 +25-11-2023,7.0919,4.6845,1 +26-11-2023,7.09154,4.6845,1 +27-11-2023,7.1313,4.6845,1 +28-11-2023,7.0738,4.673,1 +29-11-2023,7.0889,4.673,1 +30-11-2023,7.0854,4.6581,1 +01-12-2023,7.07208,4.673,1 +02-12-2023,7.0718,4.673,1 +03-12-2023,7.072,4.673,1 +04-12-2023,7.0879,4.6575,1 +05-12-2023,7.1466,4.6645,1 +06-12-2023,7.1179,4.669,1 +07-12-2023,7.1498,4.674,1 +08-12-2023,7.163,4.665,1 +09-12-2023,7.1626,4.665,1 +10-12-2023,7.1366,4.665,1 +11-12-2023,7.1751,4.6825,1 +12-12-2023,7.177,4.6845,1 +13-12-2023,7.1726,4.7,1 +14-12-2023,7.077,4.6725,1 +15-12-2023,7.117,4.6725,1 +16-12-2023,7.0805,4.6725,1 +17-12-2023,7.0805,4.6721,1 +18-12-2023,7.133,4.694,1 +19-12-2023,7.0782,4.6839,1 +20-12-2023,7.1351,4.658,1 +21-12-2023,7.1392,4.6555,1 +22-12-2023,7.1332,4.6555,1 +23-12-2023,7.1328,4.6555,1 +24-12-2023,7.0933,4.6508,1 +25-12-2023,7.1365,4.632,1 +26-12-2023,7.1434,4.6385,1 +27-12-2023,7.1414,4.629,1 +28-12-2023,7.108,4.6075,1 +29-12-2023,7.0796,4.595,1 +30-12-2023,7.0798,4.595,1 +31-12-2023,7.07884,4.5975,1 +01-01-2024,7.0786,4.595,1 +02-01-2024,7.0996,4.6035,1 +03-01-2024,7.1112,4.609,1 +04-01-2024,7.121,4.6345,1 +05-01-2024,7.1008,4.6545,1 +06-01-2024,7.1011,4.6545,1 +07-01-2024,7.1025,4.6545,1 +08-01-2024,7.1,4.6515,1 +09-01-2024,7.1127,4.6435,1 +10-01-2024,7.1713,4.6435,1 \ No newline at end of file diff --git a/seeds/exchange/seed_exchange__metadata.csv b/seeds/exchange/seed_exchange__metadata.csv new file mode 100644 index 0000000..d75abd2 --- /dev/null +++ b/seeds/exchange/seed_exchange__metadata.csv @@ -0,0 +1,2 @@ +ID,TABLE_NAME,SETTING_NAME,COLUMN_NAME,LOGIC,VALUE,LAST_UPDATED_DATE +1,stg_exchange__sd_currency_rate_logs,sd have 20CNY charge every transaction,handling_fee_cny,add column,20,2024-02-20 \ No newline at end of file From 3341e41e9bcb7795a1b56b04c0795c4329c88362 Mon Sep 17 00:00:00 2001 From: Yam ZhengLim Date: Thu, 7 Mar 2024 07:57:01 +0000 Subject: [PATCH 2/3] change join reference --- .../stg_googlesheet__sd_currency_exchange_rates.sql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql b/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql index ed9acdf..af4e25e 100644 --- a/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql +++ b/models/staging/googlesheet/stg_googlesheet__sd_currency_exchange_rates.sql @@ -34,9 +34,7 @@ rename_and_casting AS ( FROM sd_exchange_rate_log LEFT JOIN seed_metadata - ON (seed_metadata.id = 1) - -- refer to model name when referencing from seed - -- But {{this.name}} returning 'inline_query' + ON (seed_metadata.table_name = 'stg_exchange__sd_currency_rate_logs') ), From 1b90eb6eda4f7fd41898f8b0e68f1b61f5c2983c Mon Sep 17 00:00:00 2001 From: Yam ZhengLim Date: Thu, 7 Mar 2024 09:04:01 +0000 Subject: [PATCH 3/3] Changed file name for consistency --- dbt_project.yml | 12 ++- ...ge__currency_exchange_rate_compilation.sql | 8 +- ..._c2m_exchange__c2m_currency_rate_logs.sql} | 0 ...n_ex_api__open_api_currency_rate_logs.sql} | 0 .../stg_exchange__currency_rate_logs.sql | 99 +++++++++++-------- 5 files changed, 70 insertions(+), 49 deletions(-) rename models/staging/currency_exchange_rates/c2m/{stg_exchange__c2m_currency_rate_logs.sql => stg_c2m_exchange__c2m_currency_rate_logs.sql} (100%) rename models/staging/currency_exchange_rates/world_rate/{stg_exchange__open_api_currency_rate_logs.sql => stg_open_ex_api__open_api_currency_rate_logs.sql} (100%) diff --git a/dbt_project.yml b/dbt_project.yml index d503f08..3cda563 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -72,7 +72,17 @@ models: base: +materialized: view - +schema: shipping__base + +schema: shipping__base + + currency_exchange_rates: + c2m: + +materialized: view + +schema: currency_exchange_rate__c2m + + world_rate: + +materialized: view + +schema: currency_exchange_rate__open_exchange_api + intermediate: +materialized: ephemeral diff --git a/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql b/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql index 4e1e3a2..d2db6da 100644 --- a/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql +++ b/models/marts/warehouse/fct_exchange__currency_exchange_rate_compilation.sql @@ -1,6 +1,6 @@ -- IMPORT WITH open_api_exchange_rate_logs AS ( - SELECT * FROM {{ ref('stg_exchange__open_api_currency_rate_logs') }} + SELECT * FROM {{ ref('stg_open_ex_api__open_api_currency_rate_logs') }} ), cief_exchange_rate_logs AS ( @@ -8,7 +8,7 @@ cief_exchange_rate_logs AS ( ), c2m_exchange_rate_logs AS ( - SELECT * FROM {{ ref('stg_exchange__c2m_currency_rate_logs') }} + SELECT * FROM {{ ref('stg_c2m_exchange__c2m_currency_rate_logs') }} ), sd_exchange_rate_logs AS ( @@ -28,10 +28,6 @@ cief_exchange_rate_log_filtering AS ( WHERE payment_method NOT IN ('BA') AND - payment_method IS NOT NULL - AND - service_type IN ('1 DAY TRANSFER', '3 DAYS TRANSFER', 'ENTERPRISE TO ENTERPRISE 公打公', '1688 PAYMENT') - AND quote_currency_id = 2 ), diff --git a/models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql b/models/staging/currency_exchange_rates/c2m/stg_c2m_exchange__c2m_currency_rate_logs.sql similarity index 100% rename from models/staging/currency_exchange_rates/c2m/stg_exchange__c2m_currency_rate_logs.sql rename to models/staging/currency_exchange_rates/c2m/stg_c2m_exchange__c2m_currency_rate_logs.sql diff --git a/models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql b/models/staging/currency_exchange_rates/world_rate/stg_open_ex_api__open_api_currency_rate_logs.sql similarity index 100% rename from models/staging/currency_exchange_rates/world_rate/stg_exchange__open_api_currency_rate_logs.sql rename to models/staging/currency_exchange_rates/world_rate/stg_open_ex_api__open_api_currency_rate_logs.sql diff --git a/models/staging/exchange/stg_exchange__currency_rate_logs.sql b/models/staging/exchange/stg_exchange__currency_rate_logs.sql index 5dd8e8a..e2788c6 100644 --- a/models/staging/exchange/stg_exchange__currency_rate_logs.sql +++ b/models/staging/exchange/stg_exchange__currency_rate_logs.sql @@ -41,9 +41,9 @@ currency_rate_logs_join_currency_rates AS ( LEFT JOIN currency_rates ON (currency_rate_logs.currency_rate_id = currency_rates.currency_rate_id) + ), - currency_rate_logs_quote_currency_id_join_currencies AS ( SELECT @@ -58,7 +58,7 @@ currency_rate_logs_quote_currency_id_join_currencies AS ( currency_rate_logs_join_currency_rates.base_to_quote_currency_exchange_rate, COALESCE(payment_methods.name, currency_rate_logs_join_currency_rates.payment_method::string) AS payment_method, - COALESCE(service_types.name, currency_rate_logs_join_currency_rates.service_type::string) AS service_type, + COALESCE(service_types.name, currency_rate_logs_join_currency_rates.service_type::string) AS service_type, currency_rate_logs_join_currency_rates.creator_user_id, currency_rate_logs_join_currency_rates.created_datetime, @@ -75,66 +75,81 @@ currency_rate_logs_quote_currency_id_join_currencies AS ( LEFT JOIN service_types ON (currency_rate_logs_join_currency_rates.service_type = service_types.service_type_id) + +), + +filtered_currency_rate_logs AS ( + + SELECT + * + + FROM currency_rate_logs_quote_currency_id_join_currencies + + WHERE service_type NOT IN ('x1', 'Company to Company', 'RECEIVED-ON-BEHALF') + ), currency_rate_logs_add_dense_rank AS ( SELECT - currency_rate_logs_quote_currency_id_join_currencies.currency_rate_log_id, + filtered_currency_rate_logs.currency_rate_log_id, - dense_rank() OVER - (PARTITION BY currency_rate_logs_quote_currency_id_join_currencies.currency_rate_id - ORDER BY currency_rate_logs_quote_currency_id_join_currencies.created_datetime) AS dense_rank_index, + DENSE_RANK() OVER + (PARTITION BY filtered_currency_rate_logs.currency_rate_id + ORDER BY filtered_currency_rate_logs.created_datetime) AS dense_rank_index, - currency_rate_logs_quote_currency_id_join_currencies.currency_rate_id AS currency_rate_id, - currency_rate_logs_quote_currency_id_join_currencies.quote_currency_id, - currency_rate_logs_quote_currency_id_join_currencies.quote_currency_name, - currency_rate_logs_quote_currency_id_join_currencies.quote_currency_short_code, - currency_rate_logs_quote_currency_id_join_currencies.quote_currency_symbol, - currency_rate_logs_quote_currency_id_join_currencies.payment_method, - currency_rate_logs_quote_currency_id_join_currencies.service_type, - currency_rate_logs_quote_currency_id_join_currencies.base_to_quote_currency_exchange_rate, - currency_rate_logs_quote_currency_id_join_currencies.creator_user_id, - currency_rate_logs_quote_currency_id_join_currencies.created_datetime + filtered_currency_rate_logs.currency_rate_id AS currency_rate_id, + filtered_currency_rate_logs.quote_currency_id, + filtered_currency_rate_logs.quote_currency_name, + filtered_currency_rate_logs.quote_currency_short_code, + filtered_currency_rate_logs.quote_currency_symbol, + filtered_currency_rate_logs.payment_method, + filtered_currency_rate_logs.service_type, + filtered_currency_rate_logs.base_to_quote_currency_exchange_rate, + filtered_currency_rate_logs.creator_user_id, + filtered_currency_rate_logs.created_datetime - FROM currency_rate_logs_quote_currency_id_join_currencies + FROM filtered_currency_rate_logs ORDER BY currency_rate_id, created_datetime + ), +currency_rate_logs_resturucure AS ( -currency_rate_logs_resturucure AS ( - SELECT - currency_rate_logs_add_dense_rank.currency_rate_log_id, - currency_rate_logs_add_dense_rank.currency_rate_id, - currency_rate_logs_add_dense_rank.quote_currency_id, - currency_rate_logs_add_dense_rank.quote_currency_name, - currency_rate_logs_add_dense_rank.quote_currency_short_code, - currency_rate_logs_add_dense_rank.quote_currency_symbol, - currency_rate_logs_add_dense_rank.payment_method, - currency_rate_logs_add_dense_rank.service_type, - currency_rate_logs_add_dense_rank.base_to_quote_currency_exchange_rate, - currency_rate_logs_add_dense_rank.creator_user_id, + SELECT + currency_rate_logs_add_dense_rank.currency_rate_log_id, + currency_rate_logs_add_dense_rank.currency_rate_id, + currency_rate_logs_add_dense_rank.quote_currency_id, + currency_rate_logs_add_dense_rank.quote_currency_name, + currency_rate_logs_add_dense_rank.quote_currency_short_code, + currency_rate_logs_add_dense_rank.quote_currency_symbol, + currency_rate_logs_add_dense_rank.payment_method, + currency_rate_logs_add_dense_rank.service_type, + currency_rate_logs_add_dense_rank.base_to_quote_currency_exchange_rate, + currency_rate_logs_add_dense_rank.creator_user_id, - CASE - WHEN currency_rate_logs_add_dense_rank.dense_rank_index=1 THEN CAST('1990-01-01 00:00:00 +08:00' AS DATETIME) - ELSE currency_rate_logs_add_dense_rank.created_datetime - END AS from_datetime, + CASE + WHEN currency_rate_logs_add_dense_rank.dense_rank_index=1 THEN CAST('1990-01-01 00:00:00 +08:00' AS DATETIME) + ELSE currency_rate_logs_add_dense_rank.created_datetime + END AS from_datetime, - COALESCE(currency_rate_logs_add_dense_rank_clone.created_datetime, - CAST('2999-12-31 23:59:59 +08:00' AS DATETIME)) AS to_datetime, - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + COALESCE(currency_rate_logs_add_dense_rank_clone.created_datetime, + CAST('2999-12-31 23:59:59 +08:00' AS DATETIME)) AS to_datetime, - FROM - currency_rate_logs_add_dense_rank + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - LEFT JOIN currency_rate_logs_add_dense_rank AS currency_rate_logs_add_dense_rank_clone - ON currency_rate_logs_add_dense_rank.dense_rank_index = currency_rate_logs_add_dense_rank_clone.dense_rank_index-1 - AND currency_rate_logs_add_dense_rank.currency_rate_id = currency_rate_logs_add_dense_rank_clone.currency_rate_id + FROM + currency_rate_logs_add_dense_rank + + LEFT JOIN currency_rate_logs_add_dense_rank AS currency_rate_logs_add_dense_rank_clone + ON currency_rate_logs_add_dense_rank.dense_rank_index = currency_rate_logs_add_dense_rank_clone.dense_rank_index-1 + AND currency_rate_logs_add_dense_rank.currency_rate_id = currency_rate_logs_add_dense_rank_clone.currency_rate_id + + ORDER BY currency_rate_logs_add_dense_rank.currency_rate_id, currency_rate_logs_add_dense_rank.created_datetime - ORDER BY currency_rate_logs_add_dense_rank.currency_rate_id, currency_rate_logs_add_dense_rank.created_datetime ),