From 2b62c0b92c28d8cf82211e11b9f4cd849a39a9a0 Mon Sep 17 00:00:00 2001 From: Rohit Chatterjee Date: Sun, 29 Oct 2023 08:33:33 +0530 Subject: [PATCH 01/58] seed the test database --- dbt_automation/utils/bigquery.py | 51 +++++++++++++++++++++++++- dbt_automation/utils/postgres.py | 40 ++++++++++++++++++++- scripts/seedtestdb.py | 62 ++++++++++++++++++++++++++++++++ seeds/seed_001.csv | 4 +++ seeds/seed_001.yml | 9 +++++ 5 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 scripts/seedtestdb.py create mode 100644 seeds/seed_001.csv create mode 100644 seeds/seed_001.yml diff --git a/dbt_automation/utils/bigquery.py b/dbt_automation/utils/bigquery.py index 8a67e3c..c529c73 100644 --- a/dbt_automation/utils/bigquery.py +++ b/dbt_automation/utils/bigquery.py @@ -2,6 +2,7 @@ from logging import basicConfig, getLogger, INFO from google.cloud import bigquery +from google.cloud.exceptions import NotFound from google.oauth2 import service_account basicConfig(level=INFO) @@ -84,11 +85,59 @@ def get_json_columnspec( ) return [json_field["k"] for json_field in query] + def schema_exists_(self, schema: str) -> bool: + """checks if the schema exists""" + try: + self.bqclient.get_dataset(schema) + return True + except NotFound: + return False + + def ensure_schema(self, schema: str): + """creates the schema if it doesn't exist""" + if not self.schema_exists_(schema): + self.bqclient.create_dataset(schema) + logger.info("created schema %s", schema) + + def ensure_table(self, schema: str, table: str, columns: list): + """creates the table if it doesn't exist""" + if not self.table_exists_(schema, table): + table_ref = f"{self.bqclient.project}.{schema}.{table}" + bqtable = bigquery.Table(table_ref) + bqtable.schema = [bigquery.SchemaField(col, "STRING") for col in columns] + self.bqclient.create_table(bqtable) + logger.info("created table %s.%s", schema, table) + + def table_exists_(self, schema: str, table: str) -> bool: + """checks if the table exists""" + table_ref = f"{self.bqclient.project}.{schema}.{table}" + try: + self.bqclient.get_table(table_ref) + return True + except NotFound: + return False + + def drop_table(self, schema: str, table: str): + """drops the table if it exists""" + if self.table_exists_(schema, table): + logger.info("dropping table %s.%s", schema, table) + table_ref = f"{self.bqclient.project}.{schema}.{table}" + self.bqclient.delete_table(table_ref) + + def insert_row(self, schema: str, table: str, row: dict): + """inserts a row into the table""" + table_ref = f"{self.bqclient.project}.{schema}.{table}" + bqtable = self.bqclient.get_table(table_ref) + errors = self.bqclient.insert_rows(bqtable, [row]) + if errors: + # pylint:disable=logging-fstring-interpolation + logger.error(f"row insertion failed: {errors}") + def close(self): """closing the connection and releasing system resources""" try: self.bqclient.close() - except Exception: + except Exception: # pylint:disable=broad-except logger.error("something went wrong while closing the bigquery connection") return True diff --git a/dbt_automation/utils/postgres.py b/dbt_automation/utils/postgres.py index 7aede13..e3ec279 100644 --- a/dbt_automation/utils/postgres.py +++ b/dbt_automation/utils/postgres.py @@ -35,9 +35,17 @@ def __init__(self, conn_info: dict): ) self.cursor = None + def runcmd(self, statement: str): + """runs a command""" + if self.cursor is None: + self.cursor = self.connection.cursor() + self.cursor.execute(statement) + self.connection.commit() + def execute(self, statement: str) -> list: """run a query and return the results""" - self.cursor = self.connection.cursor() + if self.cursor is None: + self.cursor = self.connection.cursor() self.cursor.execute(statement) return self.cursor.fetchall() @@ -114,6 +122,36 @@ def get_json_columnspec(self, schema: str, table: str): ) ] + def ensure_schema(self, schema: str): + """creates the schema if it doesn't exist""" + self.runcmd(f"CREATE SCHEMA IF NOT EXISTS {schema};") + + def ensure_table(self, schema: str, table: str, columns: list): + """creates the table if it doesn't exist. all columns are TEXT""" + column_defs = [f"{column} TEXT" for column in columns] + self.runcmd( + f""" + CREATE TABLE IF NOT EXISTS {schema}.{table} ( + {','.join(column_defs)} + ); + """ + ) + + def drop_table(self, schema: str, table: str): + """drops the table if it exists""" + self.runcmd(f"DROP TABLE IF EXISTS {schema}.{table};") + + def insert_row(self, schema: str, table: str, row: dict): + """inserts a row into the table""" + columns = ",".join(row.keys()) + values = ",".join([f"'{x}'" for x in row.values()]) + self.runcmd( + f""" + INSERT INTO {schema}.{table} ({columns}) + VALUES ({values}); + """ + ) + def close(self): try: self.connection.close() diff --git a/scripts/seedtestdb.py b/scripts/seedtestdb.py new file mode 100644 index 0000000..5e6696d --- /dev/null +++ b/scripts/seedtestdb.py @@ -0,0 +1,62 @@ +"""seeds a test database with test data""" + +import os +import json +import argparse +import csv +from pathlib import Path +import yaml +from dotenv import load_dotenv +from dbt_automation.utils.warehouseclient import get_client + +parser = argparse.ArgumentParser(description="Seed a test database with test data") +parser.add_argument( + "-y", + "--yamlconfig", + required=True, + help="Path to the yaml config file that defines your test data", +) +args = parser.parse_args() + +load_dotenv("dbconnection.env") + +# Load the YAML file +config_data = None +with open(args.yamlconfig, "r", encoding="utf-8") as yaml_file: + config_data = yaml.safe_load(yaml_file) + +if config_data is None: + raise ValueError("Couldn't read the yaml config data") + +# TODO: Add stronger validations for each operation here +if config_data["warehouse"] not in ["postgres", "bigquery"]: + raise ValueError("unknown warehouse") + +if config_data["warehouse"] == "postgres": + conn_info = { + "host": os.getenv("DBHOST"), + "port": os.getenv("DBPORT"), + "username": os.getenv("DBUSER"), + "password": os.getenv("DBPASSWORD"), + "database": os.getenv("DBNAME"), + } +else: + with open( + os.getenv("GOOGLE_APPLICATION_CREDENTIALS"), "r", encoding="utf-8" + ) as gcp_creds: + conn_info = json.loads(gcp_creds.read()) +warehouse = get_client(config_data["warehouse"], conn_info) + +seed_path = Path(args.yamlconfig).parent +seed_data = config_data["seed_data"] +for seed in seed_data: + warehouse.ensure_schema(seed["schema"]) + for table in seed["tables"]: + reader = csv.DictReader(open(seed_path / table["csv"], "r", encoding="utf-8")) + # bigquery has a race condition when dropping / recreating tables + # comment on the next two lines in the inserts fail + warehouse.drop_table(seed["schema"], table["name"]) + warehouse.ensure_table(seed["schema"], table["name"], reader.fieldnames) + for row in reader: + print(row) + warehouse.insert_row(seed["schema"], table["name"], row) diff --git a/seeds/seed_001.csv b/seeds/seed_001.csv new file mode 100644 index 0000000..85565f0 --- /dev/null +++ b/seeds/seed_001.csv @@ -0,0 +1,4 @@ +col1,col2,col3 +1,2,"{""data"": {""a"": ""b"", ""c"": ""d""}}" +3,4,"{""data"": {""e"": ""f"", ""g"": ""h""}}" + diff --git a/seeds/seed_001.yml b/seeds/seed_001.yml new file mode 100644 index 0000000..fd1bfce --- /dev/null +++ b/seeds/seed_001.yml @@ -0,0 +1,9 @@ +version: 1 +description: "Yaml template to get you started on automating your dbt work. DO NOT EDIT this, make a copy and use" +warehouse: bigquery + +seed_data: + - schema: tests_001 + tables: + - name: model_001 + csv: seed_001.csv From 73d62fdcba21489a9c74b3fbb2ec276df5166613 Mon Sep 17 00:00:00 2001 From: Rohit Chatterjee Date: Sun, 29 Oct 2023 08:33:38 +0530 Subject: [PATCH 02/58] unused --- dbt_automation/assets/flatten_json.sql | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 dbt_automation/assets/flatten_json.sql diff --git a/dbt_automation/assets/flatten_json.sql b/dbt_automation/assets/flatten_json.sql deleted file mode 100644 index d598b6c..0000000 --- a/dbt_automation/assets/flatten_json.sql +++ /dev/null @@ -1,26 +0,0 @@ -{% macro flatten_json(model_name, json_column) %} - -{% set survey_methods_query %} - SELECT DISTINCT(jsonb_object_keys({{json_column}})) - AS column_name - FROM {{model_name}} -{% endset %} - -{% set results = run_query(survey_methods_query) %} - -{% if execute %} - {# Return the first column #} - {% set results_list = results.columns[0].values() %} -{% else %} - {% set results_list = [] %} -{% endif %} - -SELECT - _airbyte_ab_id, - {% for column_name in results_list %} - {{ json_column }}->>'{{ column_name }}' AS {{ column_name | replace('/', '_') | replace('-', '_') }} - {% if not loop.last %},{% endif %} - {% endfor %} -FROM {{model_name}} - -{% endmacro %} \ No newline at end of file From 31dadc990fb40e124ac9f8353db47fec83fe7a1f Mon Sep 17 00:00:00 2001 From: Rohit Chatterjee Date: Sun, 29 Oct 2023 15:52:33 +0530 Subject: [PATCH 03/58] seed airbyte raw --- seeds/seed_001.csv | 6 +++--- tests/test_001.yml | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 tests/test_001.yml diff --git a/seeds/seed_001.csv b/seeds/seed_001.csv index 85565f0..2eb089d 100644 --- a/seeds/seed_001.csv +++ b/seeds/seed_001.csv @@ -1,4 +1,4 @@ -col1,col2,col3 -1,2,"{""data"": {""a"": ""b"", ""c"": ""d""}}" -3,4,"{""data"": {""e"": ""f"", ""g"": ""h""}}" +_airbyte_ab_id,_airbyte_emitted_at,_airbyte_data +"de8a0cae-5406-42cb-a496-43fae6bc1359","2023-10-01T12:01:11","{""data"": {""Name"": ""flum"", ""Age"": ""33""}}" +"b3d98f22-179f-4cbd-a4bf-9934f273d88c","2023-10-01T12:01:12","{""data"": {""Name"": ""hum"", ""Age"": ""40""}}" diff --git a/tests/test_001.yml b/tests/test_001.yml new file mode 100644 index 0000000..68bde4f --- /dev/null +++ b/tests/test_001.yml @@ -0,0 +1,25 @@ +version: 1 +description: "Yaml template to get you started on automating your dbt work. DO NOT EDIT this, make a copy and use" +warehouse: postgres + +operations: + - type: syncsources + config: + source_schema: tests_001 + source_name: tests_001 + - type: flatten + config: + source_schema: tests_001 + dest_schema: tests_001_1 + - type: flattenjson + config: + source_schema: tests_001 + input_name: model_001 + dest_schema: tests_001_2 + output_name: model_001_2 + columns_to_copy: + - _airbyte_ab_id + json_column: data + json_columns_to_copy: + - Name + - Age From e7e0dd02538673fdb0671f911c7c461c42d169ec Mon Sep 17 00:00:00 2001 From: Rohit Chatterjee Date: Sun, 29 Oct 2023 16:04:45 +0530 Subject: [PATCH 04/58] ::jsonb cast --- dbt_automation/utils/postgres.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbt_automation/utils/postgres.py b/dbt_automation/utils/postgres.py index 60f4893..87cbe49 100644 --- a/dbt_automation/utils/postgres.py +++ b/dbt_automation/utils/postgres.py @@ -116,7 +116,7 @@ def get_json_columnspec(self, schema: str, table: str, column: str): x[0] for x in self.execute( f"""SELECT DISTINCT - jsonb_object_keys({column}) + jsonb_object_keys({column}::jsonb) FROM "{schema}"."{table}" """ ) From 573f492b32692d2e005d1ac6b3df10247c27c4ad Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 10:51:56 +0530 Subject: [PATCH 05/58] pytest setup --- pyproject.toml | 6 ++++++ requirements.txt | 5 +++++ tests/__init__.py | 0 tests/test_sample.py | 13 ------------- 4 files changed, 11 insertions(+), 13 deletions(-) create mode 100644 tests/__init__.py delete mode 100644 tests/test_sample.py diff --git a/pyproject.toml b/pyproject.toml index 6902de3..e5cfe32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,3 +4,9 @@ requires = [ "wheel" ] build-backend = "setuptools.build_meta" + + +[tool.pytest.ini_options] +pythonpath = [ + "." +] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 243c93f..db58a50 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ cachetools==5.3.1 certifi==2023.7.22 charset-normalizer==3.3.0 +exceptiongroup==1.1.3 google-api-core==2.12.0 google-auth==2.23.2 google-cloud-bigquery==3.12.0 @@ -11,17 +12,21 @@ googleapis-common-protos==1.60.0 grpcio==1.59.0 grpcio-status==1.59.0 idna==3.4 +iniconfig==2.0.0 packaging==23.2 +pluggy==1.3.0 proto-plus==1.22.3 protobuf==4.24.4 psycopg2-binary==2.9.7 pyasn1==0.5.0 pyasn1-modules==0.3.0 +pytest==7.4.3 python-dateutil==2.8.2 python-dotenv==1.0.0 PyYAML==6.0.1 requests==2.31.0 rsa==4.9 six==1.16.0 +tomli==2.0.1 tqdm==4.66.1 urllib3==2.0.6 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_sample.py b/tests/test_sample.py deleted file mode 100644 index 13efe65..0000000 --- a/tests/test_sample.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest -from dbt_automation.utils.dbtproject import dbtProject - - -class TestSimple(unittest.TestCase): - def test_module_path(self): - path = dbtProject.getModulePath() - print(path) - self.assertEqual(dbtProject.name, "test-module") - - -if __name__ == "__main__": - unittest.main() From cf0b207ab934a70fec9067000ff9949edf965972 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 10:53:06 +0530 Subject: [PATCH 06/58] better sample data , semi-colon separated and public dataset --- seeds/sample_data.csv | 100 ++++++++++++++++++++++++++++++++++++++++++ seeds/seed_001.csv | 4 -- 2 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 seeds/sample_data.csv delete mode 100644 seeds/seed_001.csv diff --git a/seeds/sample_data.csv b/seeds/sample_data.csv new file mode 100644 index 0000000..4bff435 --- /dev/null +++ b/seeds/sample_data.csv @@ -0,0 +1,100 @@ +_airbyte_ab_id;_airbyte_data;_airbyte_emitted_at +c413a202-73fe-422d-b76f-6a1691241411;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""1,793"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:16+00 +c44e63d2-8a16-45ad-95d1-3c1988bba449;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""82"", ""Indicator"": ""Home births""}";2023-09-28 08:50:17+00 +c4ddaa70-8152-4930-bb29-69ffd57391df;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""1,805"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 +c4e41974-1d68-4688-90c8-52cfff032600;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""1,318"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 +c5369aaa-cdac-48e3-b95d-14f0647cde8d;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""38,385"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 +c545171d-f4b0-441f-bdb5-9bc1eb78292e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""4,465"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 +c57565ab-428a-4d58-9289-80fe6ba7e0a0;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:17+00 +c6dc30ae-c245-4f29-b932-98e0caf85814;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""824"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 +c764cd61-2b91-4a5b-b19b-b145e7bfe34a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""97"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:16+00 +c799168a-a15e-4ed0-8347-f8d891c8df69;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,634"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 +caa1a740-b283-478b-8ae4-ad1d5d74141a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""82"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:16+00 +caae18ea-9f83-400d-bf71-bb250a22a79a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""91,137"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 +cbbf16cc-4e91-4762-959b-fb3a80a97c38;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""3,661"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 +cbed5849-452d-4ac4-a57d-c22d8132ebc3;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""40.12%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 +cc05a78d-4f15-498a-b563-92ba1327e660;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""7,589"", ""Indicator"": ""# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)""}";2023-09-28 08:50:17+00 +cc9e3d34-a6f1-4396-93ba-bb768a30ecbb;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""7,874"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 +cd9373af-96a4-4027-bbf4-80fb1f85833a;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""345,328"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 +cda0fb2f-946d-4615-8726-978e312f59b9;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""2,731"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 +cdc992f1-a062-4ca8-bef7-4efbcc78ca94;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""378"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:16+00 +ce1efdb2-27b8-4fe1-9ce2-a0dbcba4571d;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:16+00 +ce299c24-029d-4f62-953a-acaa71345948;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""696"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 +cf13bb91-487b-4247-ac4f-208eea774fbc;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""16,604"", ""Indicator"": ""# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)""}";2023-09-28 08:50:16+00 +d250b3c1-a6f0-46eb-8e38-5dcd44850d6a;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +d31fc554-316e-48ce-a0d4-5f98645b4915;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""1,462"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 +d331691c-3f42-4835-9ffb-ffdf794caa36;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""60,834"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 +d346844e-1ebb-4ee4-ae18-1451dfe648c9;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""43.64%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:16+00 +d35322a1-fb21-469c-af9f-5ce8dac38126;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""983"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 +d3be91f5-f68e-4ad2-ba0e-8bbd4931f5bf;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""761"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 +d46ba645-cc70-4376-a360-f64691ddbeef;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""27.16%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:16+00 +d4f96a63-d9cc-486e-a23c-5417e39094a8;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""8,422"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 +d5c46079-d319-4699-b352-0a64fcfe052f;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""7,197"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 +d6613ef4-3e55-410c-9a55-8f1d9703506f;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:16+00 +d735d8b3-5597-4e5a-bbb8-5dbe89f2c8a5;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""157"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 +d8289aee-02b5-4f3c-8b86-56a1e3611e68;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 +d872d654-c1c2-4ce7-bf39-7f6183b5480b;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""84"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:17+00 +d8a7d8bd-946e-4da7-bca5-a40fe1ecc235;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""40.01%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 +da42d084-6e91-493d-9e9a-716697cd0507;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""526"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:16+00 +da73e615-c8ae-4d06-8c0f-2e3a591bb84c;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""183"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 +db048448-646c-4ee6-9b71-a1d66d63b3cb;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""1,201"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:16+00 +db8531b1-21e1-445c-85d9-b4b00c14d15e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""153,842"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 +dbee0d0e-a10b-4772-85da-8c71e4446e6e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""% of pregnant women who receive counseling on adoption of IYCF practices""}";2023-09-28 08:50:16+00 +dbfa53f5-a29b-4c32-9780-51de1635b7ab;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +dc298434-4677-4047-ba22-0b54f6de0a52;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""2,772"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 +df54da62-e51c-4f2d-8f3c-23163c47eb66;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""2,647"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:17+00 +df9412ac-3445-44c6-9901-e396412dd1c8;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""112"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:17+00 +e0b2c459-5e7d-4c32-8b05-e1be7d66e84f;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""14,366"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 +e0cfba39-6bdf-4c66-a897-944ad6378aa7;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:16+00 +e2723fba-d5e1-428d-9963-a54d4c6ef607;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""67"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 +e2febf05-559e-491c-b6ca-03d28a7ab5a0;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""N/A"", ""Indicator"": ""% of pregnant women who receive counseling on adoption of IYCF practices""}";2023-09-28 08:50:16+00 +e3e80154-38eb-4610-9d08-2b9a4b0227f8;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:17+00 +e44c3273-41ee-405c-b9c9-3973140c33ee;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""12"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 +e56c4987-ffef-4e12-9b5d-32f1c17ced57;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,230"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 +e6fd215d-194d-46ad-b3c6-41baf50a7ae2;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""9,110"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 +e72320fa-849d-41ad-a2ba-fccdf9c2f588;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""7"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 +e81f1ed4-e6e4-4853-89f9-fbbc44634642;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""151,186"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 +e8739c03-638e-486e-a803-7f58f680fb02;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""729"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 +e943e09f-babd-4caa-a2c0-c6f356b6ead9;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""258"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 +e967175b-9349-4db2-a58b-8cb60f49d997;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""2,662"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 +e9b288a7-b20c-48ff-b484-7e3e6c4901d7;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""1,105"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +eaa14a83-d18d-40b6-ac3e-e07e81d2ea1b;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""1,798"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 +eadb5dc5-e3f1-44cd-a165-12df43624011;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""47.00%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 +eb48cffd-1420-4294-8d3a-5cdda960e294;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""3,149"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 +eb4c7069-1ab7-4ad1-805d-c8193b9eead1;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,944"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:17+00 +ec517219-e3f0-41ff-a704-73e2500fc7f3;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""1,359"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:16+00 +ec96bfa1-d2f7-445e-8a59-44994eb7901f;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""957"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 +ed0af78f-bde2-4d7d-a108-a19f4edd1631;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +ed2a3692-76de-4e1a-8762-f997f0a1c231;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""39.80%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 +ed765493-b533-4f69-8080-a73a6a816ddb;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""14,668"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 +edfad18c-a0ed-4d21-8aae-1f1ca44a5f1b;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 +ee4df971-ed71-4821-9afe-67146c8a67e6;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +f03e964d-4a16-44b1-9c78-d6b48f7e4916;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""4,780"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 +f145c8d9-60e2-42c6-8a23-698d8a3d961a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""3,943"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 +f1a4a2ff-6214-4d94-9e46-92616bdcf659;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""37,696"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 +f28596c5-a5d2-4710-9f09-ab6d9d458b67;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""3,386"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 +f3272f07-b5ab-4813-89bd-226216cfa427;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""18"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 +f3fda975-58c2-439d-91bc-2139a67eda1d;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""1,384"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:16+00 +f5e620c9-de0b-424d-85c5-19f54fbb0404;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""59"", ""Indicator"": ""Home births""}";2023-09-28 08:50:17+00 +f6982f46-1939-4c51-8d5f-26eb0bf3d697;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""93"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 +f6c86b6c-96a0-4cd9-86a9-1d74567d3af8;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""84,879"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 +f721ef10-821f-4c41-852d-0c6ce0f77df3;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""1,154"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:16+00 +f76afffd-26a7-49a5-bc9f-1b63b653cdff;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""584"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 +f777681a-6ed6-4c93-9f55-e9a0c2be3be0;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""51.53%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 +f78aff92-3efd-4b16-a683-c8fabd683ce0;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""624"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 +f7eda918-3e1c-4bde-9c17-183a7d0186cd;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""7,784"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 +f844f2a8-5b40-439b-be4b-b64a6a0cb1db;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""732"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:16+00 +f8cea84f-3e94-4d1e-a7a8-5606d54f97bd;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""872"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:16+00 +f8de44e6-84e6-4216-bcb8-b90d61ea9ecb;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""2,071"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 +f99226aa-1237-4be3-b3c2-8185afbd4820;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""146"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:17+00 +f9d0da4b-7d22-4d0b-823d-b7f5ac1b7e51;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""5"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:16+00 +f9e49e74-a3fe-41fe-92b9-1c1322ec17e9;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""8,806"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 +fb396941-16ad-4a2d-87bf-364832e665e4;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""1,030"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 +fc471926-ceb2-4166-825e-56b3810c9d84;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 +fd046b21-f372-476e-b04a-65dba4a123de;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""13"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:16+00 +fd3f2e2c-8cb4-46ef-9f0c-28d3d37478ba;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""3,033"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 +fda2083c-a34c-462e-8e13-68662676928e;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""5,982"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 +fe57ba6b-af2a-4c0d-a624-926cb55dda52;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""8,384"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 +fe603764-18cb-4fdf-99c1-c42da76f11e5;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""378"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 +ff80b3c3-b581-4a46-93cf-c4e3b1b17133;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""8,006"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 +ffffa869-0521-469b-868b-0676b798c8ba;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""8,955"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:17+00 \ No newline at end of file diff --git a/seeds/seed_001.csv b/seeds/seed_001.csv deleted file mode 100644 index 2eb089d..0000000 --- a/seeds/seed_001.csv +++ /dev/null @@ -1,4 +0,0 @@ -_airbyte_ab_id,_airbyte_emitted_at,_airbyte_data -"de8a0cae-5406-42cb-a496-43fae6bc1359","2023-10-01T12:01:11","{""data"": {""Name"": ""flum"", ""Age"": ""33""}}" -"b3d98f22-179f-4cbd-a4bf-9934f273d88c","2023-10-01T12:01:12","{""data"": {""Name"": ""hum"", ""Age"": ""40""}}" - From 58275af8de5f28123622bb3382468cfafd0b3bc6 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 10:53:27 +0530 Subject: [PATCH 07/58] testing class methods of dbtProject --- tests/dbt/test_dbtproject.py | 94 ++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 tests/dbt/test_dbtproject.py diff --git a/tests/dbt/test_dbtproject.py b/tests/dbt/test_dbtproject.py new file mode 100644 index 0000000..33a1ac3 --- /dev/null +++ b/tests/dbt/test_dbtproject.py @@ -0,0 +1,94 @@ +from dbt_automation.utils.dbtproject import dbtProject +import os +import yaml + + +def test_init_constructor(): + """test the constructor""" + project = dbtProject("test") + assert project.project_dir == "test" + + +def test_init_constructor_failure(): + """test the constructor""" + try: + dbtProject() + except TypeError: + assert True + else: + assert False + + +def test_sources_filename(tmpdir): # pytest tmpdir fixture + """test the sources_filename method""" + project = dbtProject(tmpdir) + assert ( + project.sources_filename("test_schema") + == tmpdir / "models" / "test_schema" / "sources.yml" + ) + + +def test_models_dir(tmpdir): # pytest tmpdir fixture + """test the models_dir method""" + project = dbtProject(tmpdir) + assert project.models_dir("test_schema") == tmpdir / "models" / "test_schema" + + +def test_models_dir_subdir(tmpdir): # pytest tmpdir fixture + """test the models_dir method""" + project = dbtProject(tmpdir) + assert ( + project.models_dir("test_schema", "test_subdir") + == tmpdir / "models" / "test_schema" / "test_subdir" + ) + + +def test_ensure_models_dir(tmpdir): # pytest tmpdir fixture + """test the ensure_models_dir method""" + assert os.path.exists(tmpdir / "models" / "test_schema") is False + project = dbtProject(tmpdir) + project.ensure_models_dir("test_schema") + assert os.path.exists(tmpdir / "models" / "test_schema") is True + + +def test_write_model(tmpdir): # pytest tmpdir fixture + """test the write_model method""" + project = dbtProject(tmpdir) + sql_input_model = "select * from table" + project.write_model("test_schema", "test_model", sql_input_model) + assert os.path.exists(tmpdir / "models" / "test_schema" / "test_model.sql") is True + with open( + tmpdir / "models" / "test_schema" / "test_model.sql", "r", encoding="utf-8" + ) as sql_file: + model_sql = sql_file.read() + + assert model_sql.find(sql_input_model) > -1 + + +def test_write_model_config(tmpdir): # pytest tmpdir fixture + """test the write_model_config method""" + schema = "test_schema" + project = dbtProject(tmpdir) + models_input = [ + { + "name": "test_table", + "description": "", + "+schema": schema, + "columns": [ + { + "name": "_airbyte_ab_id", + "description": "", + "tests": ["unique", "not_null"], + } + ], + } + ] + project.write_model_config("test_schema", models_input) + assert os.path.exists(tmpdir / "models" / schema / "models.yml") is True + with open( + tmpdir / "models" / schema / "models.yml", "r", encoding="utf-8" + ) as models_file: + models_yaml = yaml.safe_load(models_file) + + assert len(models_yaml["models"]) == 1 + assert models_yaml["models"][0] == models_input[0] From d6a822c3da9256671f76fd4734413a7ded86895f Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 11:49:17 +0530 Subject: [PATCH 08/58] workflow for CI: running tests with pytest --- .github/workflows/dbt_automation_pkg.yml | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/dbt_automation_pkg.yml diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml new file mode 100644 index 0000000..158ffdd --- /dev/null +++ b/.github/workflows/dbt_automation_pkg.yml @@ -0,0 +1,34 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python package + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main", "39-test-cases-for-dbt-automation" ] # TODO: remove once the PR is approved + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + python setup.py install + - name: Test with pytest + run: | + pytest \ No newline at end of file From daa98eb9f5102e41453867ebfca793f0f9dbe02f Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 12:17:26 +0530 Subject: [PATCH 09/58] adding codecov to our ci --- .github/workflows/dbt_automation_pkg.yml | 12 +++++++++--- .gitignore | 14 ++++++++++++++ requirements.txt | 2 ++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 158ffdd..ae7a7e1 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies @@ -29,6 +29,12 @@ jobs: python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi python setup.py install - - name: Test with pytest + - name: Run tests and collect coverage run: | - pytest \ No newline at end of file + pytest --cov=. + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true + verbose: true \ No newline at end of file diff --git a/.gitignore b/.gitignore index ab4e17a..8ab9264 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,17 @@ share/python-wheels/ *.egg MANIFEST *.json + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index db58a50..b377ce5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ cachetools==5.3.1 certifi==2023.7.22 charset-normalizer==3.3.0 +coverage==7.3.2 exceptiongroup==1.1.3 google-api-core==2.12.0 google-auth==2.23.2 @@ -21,6 +22,7 @@ psycopg2-binary==2.9.7 pyasn1==0.5.0 pyasn1-modules==0.3.0 pytest==7.4.3 +pytest-cov==4.1.0 python-dateutil==2.8.2 python-dotenv==1.0.0 PyYAML==6.0.1 From 031867f39c30bee737f24cec7489f8a7ba0552c4 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 12:18:05 +0530 Subject: [PATCH 10/58] minor changes --- .github/workflows/dbt_automation_pkg.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index ae7a7e1..ee74797 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -1,7 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python -name: Python package +name: DBT Automation Package on: push: @@ -10,7 +10,7 @@ on: branches: [ "main", "39-test-cases-for-dbt-automation" ] # TODO: remove once the PR is approved jobs: - build: + tests: runs-on: ubuntu-latest strategy: From d4d53d528f72321636c7e8b56a7f279372f9a9f2 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 16:25:19 +0530 Subject: [PATCH 11/58] test cases for dbtsources function --- dbt_automation/utils/dbtsources.py | 3 + tests/dbt/test_sources.py | 314 +++++++++++++++++++++++++++++ 2 files changed, 317 insertions(+) create mode 100644 tests/dbt/test_sources.py diff --git a/dbt_automation/utils/dbtsources.py b/dbt_automation/utils/dbtsources.py index bdec046..8767f04 100644 --- a/dbt_automation/utils/dbtsources.py +++ b/dbt_automation/utils/dbtsources.py @@ -1,6 +1,9 @@ import yaml +# TODO: need to take into account the multiple schemas in a single source file + + # ================================================================================ def readsourcedefinitions(sourcefilename: str): """read the source definitions from a dbt sources.yml""" diff --git a/tests/dbt/test_sources.py b/tests/dbt/test_sources.py new file mode 100644 index 0000000..743bf1e --- /dev/null +++ b/tests/dbt/test_sources.py @@ -0,0 +1,314 @@ +import pytest +import yaml +import os +from dbt_automation.utils.dbtproject import dbtProject +from dbt_automation.utils.dbtsources import ( + readsourcedefinitions, + mergesource, + mergetable, + merge_sourcedefinitions, +) + + +SOURCES_YAML = { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + } + ], +} + + +@pytest.fixture +def sources_yaml(): + return SOURCES_YAML + + +def test_readsourcefile_file_not_found( + tmpdir, +): # pytest tmpdir fixture + """test the readsourcedefinitions function""" + # failure + schema = "staging" + sources_file = tmpdir / "sources" / schema / "sources.yml" + with pytest.raises(FileNotFoundError): + readsourcedefinitions(sources_file) + + +def test_reasourcefile_success(tmpdir, sources_yaml): + # success + schema = "staging" + sources_file = tmpdir / "sources" / schema / "sources.yml" + if not os.path.exists(tmpdir / "sources" / schema): + os.makedirs(tmpdir / "sources" / schema) + with open(sources_file, "w", encoding="utf-8") as outfile: + yaml.safe_dump(sources_yaml, outfile, sort_keys=False) + outfile.close() + + assert readsourcedefinitions(sources_file) == sources_yaml + + +@pytest.mark.parametrize( + "table", + [ + { + "name": "Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "this description will over written by the same source in the file", + }, + { + "name": "Sheet3", + "identifier": "_airbyte_raw_Sheet3", + "description": "this description wont be written since it doesnt exist in the sources file", + }, + ], +) +def test_mergetable(table, sources_yaml): + """test the mergetable function""" + source_file_tables = sources_yaml["sources"][0]["tables"] + table_exists_src_file = [ + src_table + for src_table in source_file_tables + if src_table["identifier"] == table["identifier"] + ] + assert ( + mergetable(table, source_file_tables) == table_exists_src_file[0] + if len(table_exists_src_file) == 1 + else table + ) + + +@pytest.mark.parametrize( + "dbsource,expected_result", + [ + ( + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet3", + "identifier": "_airbyte_raw_Sheet3", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet4", + "identifier": "_airbyte_raw_Sheet4", + "description": "", + }, + ], + }, + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet3", + "identifier": "_airbyte_raw_Sheet3", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet4", + "identifier": "_airbyte_raw_Sheet4", + "description": "", + }, + ], + }, + ), + ( + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + }, + SOURCES_YAML["sources"][0], + ), + ( + { + "name": "Sheets", + "schema": "staging_new", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + }, + { + "name": "Sheets", + "schema": "staging_new", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + }, + ), + ], +) +def test_mergesource(dbsource, expected_result, sources_yaml): + """test the mergesource function""" + sources_file = sources_yaml["sources"] + assert mergesource(dbsource, sources_file) == expected_result + + +@pytest.mark.parametrize( + "dbdefs,expected_result", + [ + ( + { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet3", + "identifier": "_airbyte_raw_Sheet3", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet4", + "identifier": "_airbyte_raw_Sheet4", + "description": "", + }, + ], + } + ], + }, + { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet3", + "identifier": "_airbyte_raw_Sheet3", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet4", + "identifier": "_airbyte_raw_Sheet4", + "description": "", + }, + ], + } + ], + }, + ), + ( + { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging_new", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + } + ], + }, + { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging_new", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + } + ], + }, + ), + ( + { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "_airbyte_raw_Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "_airbyte_raw_Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + } + ], + }, + {"version": 2, "sources": [SOURCES_YAML["sources"][0]]}, + ), + ], +) +def test_merge_sourcedefinitions(dbdefs, expected_result, sources_yaml): + """test the merge_sourcedefinitions function""" + filedefs = sources_yaml + + assert merge_sourcedefinitions(filedefs, dbdefs) == expected_result From 374c24212e15b4c2503087bcdd652032af31fd45 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 16:54:45 +0530 Subject: [PATCH 12/58] test cases for dbt configs --- tests/dbt/test_dbtconfigs.py | 45 +++++++++++++++++++ .../{test_sources.py => test_dbtsources.py} | 0 2 files changed, 45 insertions(+) create mode 100644 tests/dbt/test_dbtconfigs.py rename tests/dbt/{test_sources.py => test_dbtsources.py} (100%) diff --git a/tests/dbt/test_dbtconfigs.py b/tests/dbt/test_dbtconfigs.py new file mode 100644 index 0000000..1f60adf --- /dev/null +++ b/tests/dbt/test_dbtconfigs.py @@ -0,0 +1,45 @@ +from dbt_automation.utils.dbtconfigs import mk_model_config, get_columns_from_model + + +def test_mk_model_config(): + """test mk_model_config""" + schemaname = "schemaname" + modelname = "modelname" + columnspec = ["column1", "column2"] + model_config = mk_model_config(schemaname, modelname, columnspec) + assert model_config["name"] == modelname + assert model_config["columns"][0]["name"] == "_airbyte_ab_id" + assert model_config["columns"][1]["name"] == "column1" + assert model_config["columns"][2]["name"] == "column2" + + +def test_get_columns_from_model(): + """test get_columns_from_model""" + models = { + "models": [ + { + "name": "modelname", + "description": "", + "+schema": "schemaname", + "columns": [ + { + "name": "_airbyte_ab_id", + "description": "", + "tests": ["unique", "not_null"], + }, + { + "name": "column1", + "description": "", + }, + { + "name": "column2", + "description": "", + }, + ], + } + ] + } + columns = get_columns_from_model(models, "modelname") + assert columns == ["_airbyte_ab_id", "column1", "column2"] + columns = get_columns_from_model(models, "modelname2") + assert columns is None diff --git a/tests/dbt/test_sources.py b/tests/dbt/test_dbtsources.py similarity index 100% rename from tests/dbt/test_sources.py rename to tests/dbt/test_dbtsources.py From bbbac48bf512386b6528445bfb5c0c42b16d9c34 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 17:26:14 +0530 Subject: [PATCH 13/58] testing column utils module --- tests/{ => utils}/dbt/test_dbtconfigs.py | 0 tests/{ => utils}/dbt/test_dbtproject.py | 0 tests/{ => utils}/dbt/test_dbtsources.py | 0 tests/utils/test_columnutils.py | 61 ++++++++++++++++++++++++ 4 files changed, 61 insertions(+) rename tests/{ => utils}/dbt/test_dbtconfigs.py (100%) rename tests/{ => utils}/dbt/test_dbtproject.py (100%) rename tests/{ => utils}/dbt/test_dbtsources.py (100%) create mode 100644 tests/utils/test_columnutils.py diff --git a/tests/dbt/test_dbtconfigs.py b/tests/utils/dbt/test_dbtconfigs.py similarity index 100% rename from tests/dbt/test_dbtconfigs.py rename to tests/utils/dbt/test_dbtconfigs.py diff --git a/tests/dbt/test_dbtproject.py b/tests/utils/dbt/test_dbtproject.py similarity index 100% rename from tests/dbt/test_dbtproject.py rename to tests/utils/dbt/test_dbtproject.py diff --git a/tests/dbt/test_dbtsources.py b/tests/utils/dbt/test_dbtsources.py similarity index 100% rename from tests/dbt/test_dbtsources.py rename to tests/utils/dbt/test_dbtsources.py diff --git a/tests/utils/test_columnutils.py b/tests/utils/test_columnutils.py new file mode 100644 index 0000000..283a438 --- /dev/null +++ b/tests/utils/test_columnutils.py @@ -0,0 +1,61 @@ +import pytest +from dbt_automation.utils.columnutils import ( + cleaned_column_name, + make_cleaned_column_names, + dedup_list, + fmt_colname, + quote_columnname, +) + + +@pytest.mark.parametrize( + "col,expected", + [("colname", "colname"), ("col name!", "col_name_"), ("123", "c123")], +) +def test_cleaned_column_name(col: str, expected: str): + """test cleaned_column_name""" + assert cleaned_column_name(col) == expected + + +@pytest.mark.parametrize( + "col_list,deduped_col_list", + [(["colname", "colname", "colname"], ["colname", "colname_b", "colname_c"])], +) +def test_dedup_list(col_list, deduped_col_list): + """test dedupe_list""" + assert dedup_list(col_list) == deduped_col_list + + +def test_fmt_colname(): + """test fmt_colname""" + assert fmt_colname("colname", "postgres") == '"colname"' + assert fmt_colname("colname", "bigquery") == "colname" + with pytest.raises(ValueError): + fmt_colname("colname", "unsupported") + + +def test_quote_columnname(): + """test quote_columnname""" + assert quote_columnname("colname", "postgres") == '"colname"' + assert quote_columnname("colname", "bigquery") == "`colname`" + with pytest.raises(ValueError): + quote_columnname("colname", "unsupported") + + +def test_make_cleaned_column_names(): + """test make_cleaned_column_names""" + assert make_cleaned_column_names(["colname", "colname", "colname"]) == [ + "colname", + "colname_b", + "colname_c", + ] + assert make_cleaned_column_names(["colname", "col name!", "123"]) == [ + "colname", + "col_name_", + "c123", + ] + assert make_cleaned_column_names(["colname", "colname", "colname"]) == [ + "colname", + "colname_b", + "colname_c", + ] From ae62448b34e818ec4b8915375d046842bdec6429 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 18:09:44 +0530 Subject: [PATCH 14/58] test sourceschemas module --- tests/utils/test_sourceschemas.py | 68 +++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/utils/test_sourceschemas.py diff --git a/tests/utils/test_sourceschemas.py b/tests/utils/test_sourceschemas.py new file mode 100644 index 0000000..70c865d --- /dev/null +++ b/tests/utils/test_sourceschemas.py @@ -0,0 +1,68 @@ +import pytest +import os +import yaml +from dbt_automation.utils.sourceschemas import get_source, mksourcedefinition + +SOURCES_YAML = { + "version": 2, + "sources": [ + { + "name": "Sheets", + "schema": "staging", + "tables": [ + { + "name": "Sheet1", + "identifier": "_airbyte_raw_Sheet1", + "description": "", + }, + { + "name": "Sheet2", + "identifier": "_airbyte_raw_Sheet2", + "description": "", + }, + ], + } + ], +} + + +@pytest.fixture +def sources_yaml(): + return SOURCES_YAML + + +def test_mk_source_definition(): + """test mksourcedefinition""" + sourcename = "sourcename" + input_schema = "input_schema" + tables = ["_airbyte_raw_Sheet1", "_airbyte_raw_Sheet2"] + sourcedefinition = mksourcedefinition(sourcename, input_schema, tables) + assert sourcedefinition["sources"][0]["name"] == sourcename + assert sourcedefinition["sources"][0]["schema"] == input_schema + assert sourcedefinition["sources"][0]["tables"][0]["name"] == "Sheet1" + assert sourcedefinition["sources"][0]["tables"][1]["name"] == "Sheet2" + + +def test_get_source(sources_yaml, tmpdir): + """test get_source""" + schema = "staging" + sources_file = tmpdir / "sources" / schema / "sources.yml" + if not os.path.exists(tmpdir / "sources" / schema): + os.makedirs(tmpdir / "sources" / schema) + with open(sources_file, "w", encoding="utf-8") as outfile: + yaml.safe_dump(sources_yaml, outfile, sort_keys=False) + outfile.close() + + input_schema = "schema_not_available" + source = get_source(sources_file, input_schema) + assert source is None + + source = get_source(sources_file, schema) + assert source["name"] == sources_yaml["sources"][0]["name"] + assert source["schema"] == sources_yaml["sources"][0]["schema"] + assert ( + source["tables"][0]["name"] == sources_yaml["sources"][0]["tables"][0]["name"] + ) + assert ( + source["tables"][1]["name"] == sources_yaml["sources"][0]["tables"][1]["name"] + ) From cc86e4b038cadfe643d168b9ebbbc55e7393d561 Mon Sep 17 00:00:00 2001 From: Ishan Date: Tue, 31 Oct 2023 18:26:48 +0530 Subject: [PATCH 15/58] update in reading bigquery creds from file specified in env --- dbt_automation/utils/bigquery.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dbt_automation/utils/bigquery.py b/dbt_automation/utils/bigquery.py index 753fd25..70cba3e 100644 --- a/dbt_automation/utils/bigquery.py +++ b/dbt_automation/utils/bigquery.py @@ -1,9 +1,11 @@ """utilities for working with bigquery""" from logging import basicConfig, getLogger, INFO +import os from google.cloud import bigquery from google.cloud.exceptions import NotFound from google.oauth2 import service_account +import json basicConfig(level=INFO) logger = getLogger() @@ -16,12 +18,11 @@ def __init__(self, conn_info=None): self.name = "bigquery" self.bqclient = None if conn_info is None: # take creds from env - self.bqclient = bigquery.Client() - else: - creds1 = service_account.Credentials.from_service_account_info(conn_info) - self.bqclient = bigquery.Client( - credentials=creds1, project=creds1.project_id - ) + creds_file = open(os.getenv("GOOGLE_APPLICATION_CREDENTIALS")) + conn_info = json.load(creds_file) + + creds1 = service_account.Credentials.from_service_account_info(conn_info) + self.bqclient = bigquery.Client(credentials=creds1, project=creds1.project_id) def execute(self, statement: str, **kwargs) -> list: """run a query and return the results""" From 28bc4152594eccc43634a093a4b31822f25b5ccb Mon Sep 17 00:00:00 2001 From: Ishan Date: Wed, 1 Nov 2023 19:07:55 +0530 Subject: [PATCH 16/58] 1.) making connection info an object level variable so that it can be used to generate profiles.yml file in scaffold operation 2.) also for postgres if no conn_info is provided try to pick from the dbconnection.env --- dbt_automation/utils/bigquery.py | 6 ++++++ dbt_automation/utils/postgres.py | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dbt_automation/utils/bigquery.py b/dbt_automation/utils/bigquery.py index 70cba3e..fb20041 100644 --- a/dbt_automation/utils/bigquery.py +++ b/dbt_automation/utils/bigquery.py @@ -23,6 +23,7 @@ def __init__(self, conn_info=None): creds1 = service_account.Credentials.from_service_account_info(conn_info) self.bqclient = bigquery.Client(credentials=creds1, project=creds1.project_id) + self.conn_info = conn_info def execute(self, statement: str, **kwargs) -> list: """run a query and return the results""" @@ -147,3 +148,8 @@ def close(self): logger.error("something went wrong while closing the bigquery connection") return True + + def generate_profiles_yaml_dbt(self, default_schema, location=None): + """Generates the profiles.yml dictionary object for dbt""" + + return {} diff --git a/dbt_automation/utils/postgres.py b/dbt_automation/utils/postgres.py index 87cbe49..d3e8572 100644 --- a/dbt_automation/utils/postgres.py +++ b/dbt_automation/utils/postgres.py @@ -1,6 +1,7 @@ """helpers for postgres""" from logging import basicConfig, getLogger, INFO import psycopg2 +import os basicConfig(level=INFO) logger = getLogger() @@ -23,8 +24,14 @@ def get_connection(host: str, port: str, user: str, password: str, database: str def __init__(self, conn_info: dict): self.name = "postgres" - if conn_info is None: - raise ValueError("connection info required") + if conn_info is None: # take creds from env + conn_info = { + "host": os.getenv("DBHOST"), + "port": os.getenv("DBPORT"), + "username": os.getenv("DBUSER"), + "password": os.getenv("DBPASSWORD"), + "database": os.getenv("DBNAME"), + } self.connection = PostgresClient.get_connection( conn_info.get("host"), @@ -34,6 +41,7 @@ def __init__(self, conn_info: dict): conn_info.get("database"), ) self.cursor = None + self.conn_info = conn_info def runcmd(self, statement: str): """runs a command""" @@ -163,3 +171,8 @@ def close(self): logger.error("something went wrong while closing the postgres connection") return True + + def generate_profiles_yaml_dbt(self, default_schema, location=None): + """Generates the profiles.yml dictionary object for dbt""" + + return {} From 313c479af9ed0899e40be121477c58606fc3dfee Mon Sep 17 00:00:00 2001 From: Ishan Date: Wed, 1 Nov 2023 20:47:44 +0530 Subject: [PATCH 17/58] functions to generate profiles.yml in dbt project to connect to warehouse --- dbt_automation/utils/bigquery.py | 47 ++++++++++++++++++++++++++++---- dbt_automation/utils/postgres.py | 40 +++++++++++++++++++++++++-- 2 files changed, 80 insertions(+), 7 deletions(-) diff --git a/dbt_automation/utils/bigquery.py b/dbt_automation/utils/bigquery.py index fb20041..de10c5d 100644 --- a/dbt_automation/utils/bigquery.py +++ b/dbt_automation/utils/bigquery.py @@ -14,16 +14,18 @@ class BigQueryClient: """a bigquery client that can be used as a context manager""" - def __init__(self, conn_info=None): + def __init__(self, conn_info=None, location=None): self.name = "bigquery" self.bqclient = None if conn_info is None: # take creds from env creds_file = open(os.getenv("GOOGLE_APPLICATION_CREDENTIALS")) conn_info = json.load(creds_file) + location = os.getenv("BIQUERY_LOCATION") creds1 = service_account.Credentials.from_service_account_info(conn_info) self.bqclient = bigquery.Client(credentials=creds1, project=creds1.project_id) self.conn_info = conn_info + self.location = location or "asia-south1" def execute(self, statement: str, **kwargs) -> list: """run a query and return the results""" @@ -83,7 +85,7 @@ def get_json_columnspec( FROM keys CROSS JOIN UNNEST(keys.keys) AS k ''', - location="asia-south1", + location=self.location, ) return [json_field["k"] for json_field in query] @@ -149,7 +151,42 @@ def close(self): return True - def generate_profiles_yaml_dbt(self, default_schema, location=None): + def generate_profiles_yaml_dbt(self, project_name, default_schema): """Generates the profiles.yml dictionary object for dbt""" - - return {} + if project_name is None or default_schema is None: + raise ValueError("project_name and default_schema are required") + + target = "prod" + + """ + : + outputs: + prod: + keyfile_json: + location: + method: service-account-json + project: + schema: + threads: 4 + type: bigquery + target: prod + """ + profiles_yml = { + f"{project_name}": { + "outputs": { + f"{target}": { + "keyfile_json": self.conn_info, + "location": self.location, + "method": "service-account-json", + "project": self.conn_info["project_id"], + "method": "service-account-json", + "schema": default_schema, + "threads": 4, + "type": "bigquery", + } + }, + "target": target, + }, + } + + return profiles_yml diff --git a/dbt_automation/utils/postgres.py b/dbt_automation/utils/postgres.py index d3e8572..e631655 100644 --- a/dbt_automation/utils/postgres.py +++ b/dbt_automation/utils/postgres.py @@ -172,7 +172,43 @@ def close(self): return True - def generate_profiles_yaml_dbt(self, default_schema, location=None): + def generate_profiles_yaml_dbt(self, project_name, default_schema): """Generates the profiles.yml dictionary object for dbt""" + if project_name is None or default_schema is None: + raise ValueError("project_name and default_schema are required") - return {} + target = "prod" + + """ + : + outputs: + prod: + dbname: + host: + password: + port: 5432 + user: airbyte_user + schema: + threads: 4 + type: postgres + target: prod + """ + profiles_yml = { + f"{project_name}": { + "outputs": { + f"{target}": { + "dbname": self.conn_info["database"], + "host": self.conn_info["host"], + "password": self.conn_info["password"], + "port": self.conn_info["port"], + "user": self.conn_info["username"], + "schema": default_schema, + "threads": 4, + "type": "postgres", + } + }, + "target": target, + }, + } + + return profiles_yml From 338d263a942ca3c8ced9bb94805c23f4be95f980 Mon Sep 17 00:00:00 2001 From: Ishan Date: Wed, 1 Nov 2023 20:51:22 +0530 Subject: [PATCH 18/58] scaffold operation --- dbt_automation/operations/scaffold.py | 122 ++++++++++++++++++++++++++ dbt_automation/utils/postgres.py | 2 +- scripts/dbconnection.env.template | 3 +- scripts/main.py | 4 +- scripts/operations.yaml.template | 4 + scripts/scaffolddbt.py | 82 ----------------- 6 files changed, 132 insertions(+), 85 deletions(-) create mode 100644 dbt_automation/operations/scaffold.py delete mode 100644 scripts/scaffolddbt.py diff --git a/dbt_automation/operations/scaffold.py b/dbt_automation/operations/scaffold.py new file mode 100644 index 0000000..77052aa --- /dev/null +++ b/dbt_automation/operations/scaffold.py @@ -0,0 +1,122 @@ +"""setup the dbt project""" +import os, shutil, yaml +from pathlib import Path +from string import Template +from logging import basicConfig, getLogger, INFO +import subprocess, sys + +from dbt_automation.utils.warehouseclient import get_client + + +basicConfig(level=INFO) +logger = getLogger() + + +def scaffold(config: dict, warehouse, project_dir: str): + """scaffolds a dbt project""" + project_name = config["project_name"] + default_schema = config["default_schema"] + project_dir = Path(project_dir) / project_name + + if os.path.exists(project_dir): + print("directory exists: %s", project_dir) + return + + logger.info("mkdir %s", project_dir) + os.makedirs(project_dir) + + for subdir in [ + # "analyses", + "logs", + "macros", + "models", + # "seeds", + # "snapshots", + "target", + "tests", + ]: + (Path(project_dir) / subdir).mkdir() + logger.info("created %s", str(Path(project_dir) / subdir)) + + (Path(project_dir) / "models" / "staging").mkdir() + (Path(project_dir) / "models" / "intermediate").mkdir() + + flatten_json_target = Path(project_dir) / "macros" / "flatten_json.sql" + custom_schema_target = Path(project_dir) / "macros" / "generate_schema_name.sql" + logger.info("created %s", flatten_json_target) + shutil.copy("dbt_automation/assets/generate_schema_name.sql", custom_schema_target) + logger.info("created %s", custom_schema_target) + + dbtproject_filename = Path(project_dir) / "dbt_project.yml" + project_template = { + "name": project_name, + "version": "1.0.0", + "config-version": 2, + "profile": project_name, + "model-paths": ["models"], + "test-paths": ["tests"], + "macro-paths": ["macros"], + "target-path": "target", + "clean-targets": ["target", "dbt_packages"], + } + with open(dbtproject_filename, "w", encoding="utf-8") as dbtprojectfile: + yaml.safe_dump(project_template, dbtprojectfile) + logger.info("wrote %s", dbtproject_filename) + + dbtpackages_filename = Path(project_dir) / "packages.yml" + with open(dbtpackages_filename, "w", encoding="utf-8") as dbtpackgesfile: + yaml.safe_dump( + {"packages": [{"package": "dbt-labs/dbt_utils", "version": "1.1.1"}]}, + dbtpackgesfile, + ) + + # create a python virtual environment in project directory + subprocess.call([sys.executable, "-m", "venv", Path(project_dir) / "venv"]) + + # install dbt and dbt-bigquery or dbt-postgres based on the warehouse in the virtual environment + logger.info("installing package to setup & run for a %s warehouse", warehouse.name) + logger.info("using pip from %s", Path(project_dir) / "venv" / "bin" / "pip") + subprocess.call( + [ + Path(project_dir) / "venv" / "bin" / "pip", + "install", + "--upgrade", + "pip", + ] + ) + subprocess.call( + [Path(project_dir) / "venv" / "bin" / "pip", "install", f"dbt-{warehouse.name}"] + ) + + # create profiles.yaml that will be used to connect to the warehouse + profiles_filename = Path(project_dir) / "profiles.yml" + profiles_yml_obj = warehouse.generate_profiles_yaml_dbt( + default_schema=default_schema, project_name=project_name + ) + logger.info("successfully generated profiles.yml and now writing it to the file") + with open(profiles_filename, "w", encoding="utf-8") as file: + yaml.safe_dump( + profiles_yml_obj, + file, + ) + logger.info("generated profiles.yml successfully") + + # run dbt debug to check warehouse connection + logger.info("running dbt debug to check warehouse connection") + try: + subprocess.check_call( + [ + "cd", + project_dir, + "&&", + Path(project_dir) / "venv" / "bin" / "dbt", + "debug", + ], + cwd=project_dir, + ) + + except subprocess.CalledProcessError as e: + logger.error(f"dbt debug failed with {e.returncode}") + raise Exception("Something went wrong while running dbt debug") + + logger.info("successfully ran dbt debug") diff --git a/dbt_automation/utils/postgres.py b/dbt_automation/utils/postgres.py index e631655..8a9213a 100644 --- a/dbt_automation/utils/postgres.py +++ b/dbt_automation/utils/postgres.py @@ -200,7 +200,7 @@ def generate_profiles_yaml_dbt(self, project_name, default_schema): "dbname": self.conn_info["database"], "host": self.conn_info["host"], "password": self.conn_info["password"], - "port": self.conn_info["port"], + "port": int(self.conn_info["port"]), "user": self.conn_info["username"], "schema": default_schema, "threads": 4, diff --git a/scripts/dbconnection.env.template b/scripts/dbconnection.env.template index e26a767..6fc32ae 100644 --- a/scripts/dbconnection.env.template +++ b/scripts/dbconnection.env.template @@ -7,4 +7,5 @@ DBNAME= DBT_PROJECT_DIR= # for bigquery -GOOGLE_APPLICATION_CREDENTIALS= \ No newline at end of file +GOOGLE_APPLICATION_CREDENTIALS= +BIQUERY_LOCATION= \ No newline at end of file diff --git a/scripts/main.py b/scripts/main.py index f2ece32..2dddedf 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -19,6 +19,7 @@ from dbt_automation.operations.flattenairbyte import flatten_operation from dbt_automation.operations.flattenjson import flattenjson from dbt_automation.operations.regexextraction import regex_extraction +from dbt_automation.operations.scaffold import scaffold OPERATIONS_DICT = { "flatten": flatten_operation, @@ -32,9 +33,10 @@ "dropcolumns": drop_columns, "renamecolumns": rename_columns, "regexextraction": regex_extraction, + "scaffold": scaffold, } -load_dotenv("dbconnection.env") +load_dotenv("./../dbconnection.env") project_dir = os.getenv("DBT_PROJECT_DIR") diff --git a/scripts/operations.yaml.template b/scripts/operations.yaml.template index bff3ef4..7ddb722 100644 --- a/scripts/operations.yaml.template +++ b/scripts/operations.yaml.template @@ -2,6 +2,10 @@ version: 1 description: "Yaml template to get you started on automating your dbt work. DO NOT EDIT this, make a copy and use" warehouse: operations: + - type: scaffold + config: + project_name: + default_schema: - type: flatten config: source_schema: diff --git a/scripts/scaffolddbt.py b/scripts/scaffolddbt.py deleted file mode 100644 index aecbfaa..0000000 --- a/scripts/scaffolddbt.py +++ /dev/null @@ -1,82 +0,0 @@ -"""creates the dbt project""" -import os -import sys -import shutil -from string import Template -import argparse -from pathlib import Path -from logging import basicConfig, getLogger, INFO -import yaml - -basicConfig(level=INFO) -logger = getLogger() - -# ================================================================================ -parser = argparse.ArgumentParser() -parser.add_argument("--project-dir", required=True) -parser.add_argument( - "--project-name", - required=True, - help="a profile of this name must exist in your profiles.yml", -) -args = parser.parse_args() - -project_dir = args.project_dir - -if os.path.exists(project_dir): - print("directory exists: %s", project_dir) - sys.exit(1) - -logger.info("mkdir %s", project_dir) -os.makedirs(project_dir) - -for subdir in [ - # "analyses", - "logs", - "macros", - "models", - # "seeds", - # "snapshots", - "target", - "tests", -]: - (Path(project_dir) / subdir).mkdir() - logger.info("created %s", str(Path(project_dir) / subdir)) - -(Path(project_dir) / "models" / "staging").mkdir() -(Path(project_dir) / "models" / "intermediate").mkdir() - -flatten_json_target = Path(project_dir) / "macros" / "flatten_json.sql" -custom_schema_target = Path(project_dir) / "macros" / "generate_schema_name.sql" -logger.info("created %s", flatten_json_target) -shutil.copy("dbt_automation/assets/generate_schema_name.sql", custom_schema_target) -logger.info("created %s", custom_schema_target) - -dbtproject_filename = Path(project_dir) / "dbt_project.yml" -PROJECT_TEMPLATE = Template( - """ -name: '$project_name' -version: '1.0.0' -config-version: 2 -profile: '$project_name' -model-paths: ["models"] -test-paths: ["tests"] -macro-paths: ["macros"] - -target-path: "target" -clean-targets: - - "target" - - "dbt_packages" -""" -) -dbtproject = PROJECT_TEMPLATE.substitute({"project_name": args.project_name}) -with open(dbtproject_filename, "w", encoding="utf-8") as dbtprojectfile: - dbtprojectfile.write(dbtproject) - logger.info("wrote %s", dbtproject_filename) - -dbtpackages_filename = Path(project_dir) / "packages.yml" -with open(dbtpackages_filename, "w", encoding="utf-8") as dbtpackgesfile: - yaml.safe_dump( - {"packages": [{"package": "dbt-labs/dbt_utils", "version": "1.1.1"}]}, - dbtpackgesfile, - ) From 56d129b9e9b1b99c0b2befc296d964d31d6fc31c Mon Sep 17 00:00:00 2001 From: Ishan Date: Thu, 2 Nov 2023 13:48:12 +0530 Subject: [PATCH 19/58] seeder - WIP --- .gitignore | 1 + ....env.template => dbconnection.env.template | 9 +- seeds/sample_data.csv | 100 - seeds/sample_sheet1.json | 1997 +++++++++++++++++ seeds/seed.py | 90 + 5 files changed, 2096 insertions(+), 101 deletions(-) rename scripts/dbconnection.env.template => dbconnection.env.template (51%) delete mode 100644 seeds/sample_data.csv create mode 100644 seeds/sample_sheet1.json create mode 100644 seeds/seed.py diff --git a/.gitignore b/.gitignore index 8ab9264..2d2eb4b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ share/python-wheels/ *.egg MANIFEST *.json +!sample_sheet1.json # Unit test / coverage reports htmlcov/ diff --git a/scripts/dbconnection.env.template b/dbconnection.env.template similarity index 51% rename from scripts/dbconnection.env.template rename to dbconnection.env.template index 6fc32ae..605bc55 100644 --- a/scripts/dbconnection.env.template +++ b/dbconnection.env.template @@ -8,4 +8,11 @@ DBT_PROJECT_DIR= # for bigquery GOOGLE_APPLICATION_CREDENTIALS= -BIQUERY_LOCATION= \ No newline at end of file +BIQUERY_LOCATION= + +# pytest related +TEST_PG_DBHOST= +TEST_PG_DBPORT= +TEST_PG_DBUSER= +TEST_PG_DBPASSWORD= +TEST_PG_DBNAME= \ No newline at end of file diff --git a/seeds/sample_data.csv b/seeds/sample_data.csv deleted file mode 100644 index 4bff435..0000000 --- a/seeds/sample_data.csv +++ /dev/null @@ -1,100 +0,0 @@ -_airbyte_ab_id;_airbyte_data;_airbyte_emitted_at -c413a202-73fe-422d-b76f-6a1691241411;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""1,793"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:16+00 -c44e63d2-8a16-45ad-95d1-3c1988bba449;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""82"", ""Indicator"": ""Home births""}";2023-09-28 08:50:17+00 -c4ddaa70-8152-4930-bb29-69ffd57391df;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""1,805"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 -c4e41974-1d68-4688-90c8-52cfff032600;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""1,318"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 -c5369aaa-cdac-48e3-b95d-14f0647cde8d;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""38,385"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 -c545171d-f4b0-441f-bdb5-9bc1eb78292e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""4,465"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 -c57565ab-428a-4d58-9289-80fe6ba7e0a0;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:17+00 -c6dc30ae-c245-4f29-b932-98e0caf85814;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""824"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 -c764cd61-2b91-4a5b-b19b-b145e7bfe34a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""97"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:16+00 -c799168a-a15e-4ed0-8347-f8d891c8df69;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,634"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 -caa1a740-b283-478b-8ae4-ad1d5d74141a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""82"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:16+00 -caae18ea-9f83-400d-bf71-bb250a22a79a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""91,137"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 -cbbf16cc-4e91-4762-959b-fb3a80a97c38;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""3,661"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 -cbed5849-452d-4ac4-a57d-c22d8132ebc3;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""40.12%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 -cc05a78d-4f15-498a-b563-92ba1327e660;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""7,589"", ""Indicator"": ""# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)""}";2023-09-28 08:50:17+00 -cc9e3d34-a6f1-4396-93ba-bb768a30ecbb;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""7,874"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 -cd9373af-96a4-4027-bbf4-80fb1f85833a;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""345,328"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 -cda0fb2f-946d-4615-8726-978e312f59b9;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""2,731"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 -cdc992f1-a062-4ca8-bef7-4efbcc78ca94;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""378"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:16+00 -ce1efdb2-27b8-4fe1-9ce2-a0dbcba4571d;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:16+00 -ce299c24-029d-4f62-953a-acaa71345948;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""696"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 -cf13bb91-487b-4247-ac4f-208eea774fbc;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""16,604"", ""Indicator"": ""# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)""}";2023-09-28 08:50:16+00 -d250b3c1-a6f0-46eb-8e38-5dcd44850d6a;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -d31fc554-316e-48ce-a0d4-5f98645b4915;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""1,462"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 -d331691c-3f42-4835-9ffb-ffdf794caa36;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""60,834"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 -d346844e-1ebb-4ee4-ae18-1451dfe648c9;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""43.64%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:16+00 -d35322a1-fb21-469c-af9f-5ce8dac38126;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""983"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 -d3be91f5-f68e-4ad2-ba0e-8bbd4931f5bf;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""761"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 -d46ba645-cc70-4376-a360-f64691ddbeef;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""27.16%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:16+00 -d4f96a63-d9cc-486e-a23c-5417e39094a8;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""8,422"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 -d5c46079-d319-4699-b352-0a64fcfe052f;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""7,197"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 -d6613ef4-3e55-410c-9a55-8f1d9703506f;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:16+00 -d735d8b3-5597-4e5a-bbb8-5dbe89f2c8a5;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""157"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 -d8289aee-02b5-4f3c-8b86-56a1e3611e68;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 -d872d654-c1c2-4ce7-bf39-7f6183b5480b;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""84"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:17+00 -d8a7d8bd-946e-4da7-bca5-a40fe1ecc235;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""40.01%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 -da42d084-6e91-493d-9e9a-716697cd0507;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""526"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:16+00 -da73e615-c8ae-4d06-8c0f-2e3a591bb84c;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""183"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 -db048448-646c-4ee6-9b71-a1d66d63b3cb;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""1,201"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:16+00 -db8531b1-21e1-445c-85d9-b4b00c14d15e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""153,842"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 -dbee0d0e-a10b-4772-85da-8c71e4446e6e;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""% of pregnant women who receive counseling on adoption of IYCF practices""}";2023-09-28 08:50:16+00 -dbfa53f5-a29b-4c32-9780-51de1635b7ab;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -dc298434-4677-4047-ba22-0b54f6de0a52;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""2,772"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 -df54da62-e51c-4f2d-8f3c-23163c47eb66;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""2,647"", ""Indicator"": ""ANC First visit""}";2023-09-28 08:50:17+00 -df9412ac-3445-44c6-9901-e396412dd1c8;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""112"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:17+00 -e0b2c459-5e7d-4c32-8b05-e1be7d66e84f;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""14,366"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 -e0cfba39-6bdf-4c66-a897-944ad6378aa7;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""N/A"", ""Indicator"": ""# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas""}";2023-09-28 08:50:16+00 -e2723fba-d5e1-428d-9963-a54d4c6ef607;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""67"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 -e2febf05-559e-491c-b6ca-03d28a7ab5a0;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""N/A"", ""Indicator"": ""% of pregnant women who receive counseling on adoption of IYCF practices""}";2023-09-28 08:50:16+00 -e3e80154-38eb-4610-9d08-2b9a4b0227f8;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas""}";2023-09-28 08:50:17+00 -e44c3273-41ee-405c-b9c9-3973140c33ee;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""12"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 -e56c4987-ffef-4e12-9b5d-32f1c17ced57;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,230"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 -e6fd215d-194d-46ad-b3c6-41baf50a7ae2;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""9,110"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 -e72320fa-849d-41ad-a2ba-fccdf9c2f588;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""7"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 -e81f1ed4-e6e4-4853-89f9-fbbc44634642;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""151,186"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 -e8739c03-638e-486e-a803-7f58f680fb02;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""729"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 -e943e09f-babd-4caa-a2c0-c6f356b6ead9;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""258"", ""Indicator"": ""# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)""}";2023-09-28 08:50:17+00 -e967175b-9349-4db2-a58b-8cb60f49d997;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""2,662"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:17+00 -e9b288a7-b20c-48ff-b484-7e3e6c4901d7;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""1,105"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -eaa14a83-d18d-40b6-ac3e-e07e81d2ea1b;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""1,798"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 -eadb5dc5-e3f1-44cd-a165-12df43624011;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""47.00%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 -eb48cffd-1420-4294-8d3a-5cdda960e294;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""3,149"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 -eb4c7069-1ab7-4ad1-805d-c8193b9eead1;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""1,944"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:17+00 -ec517219-e3f0-41ff-a704-73e2500fc7f3;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""1,359"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:16+00 -ec96bfa1-d2f7-445e-8a59-44994eb7901f;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""957"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:17+00 -ed0af78f-bde2-4d7d-a108-a19f4edd1631;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -ed2a3692-76de-4e1a-8762-f997f0a1c231;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""39.80%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 -ed765493-b533-4f69-8080-a73a6a816ddb;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""14,668"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 -edfad18c-a0ed-4d21-8aae-1f1ca44a5f1b;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 -ee4df971-ed71-4821-9afe-67146c8a67e6;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -f03e964d-4a16-44b1-9c78-d6b48f7e4916;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""4,780"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:16+00 -f145c8d9-60e2-42c6-8a23-698d8a3d961a;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""3,943"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 -f1a4a2ff-6214-4d94-9e46-92616bdcf659;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""37,696"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:17+00 -f28596c5-a5d2-4710-9f09-ab6d9d458b67;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""3,386"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 -f3272f07-b5ab-4813-89bd-226216cfa427;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""12/31/2022"", ""Measure"": ""18"", ""Indicator"": ""Home births""}";2023-09-28 08:50:16+00 -f3fda975-58c2-439d-91bc-2139a67eda1d;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""1,384"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:16+00 -f5e620c9-de0b-424d-85c5-19f54fbb0404;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""59"", ""Indicator"": ""Home births""}";2023-09-28 08:50:17+00 -f6982f46-1939-4c51-8d5f-26eb0bf3d697;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""93"", ""Indicator"": ""Facility births""}";2023-09-28 08:50:17+00 -f6c86b6c-96a0-4cd9-86a9-1d74567d3af8;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""84,879"", ""Indicator"": ""# of service contacts at NGO partners clinics""}";2023-09-28 08:50:16+00 -f721ef10-821f-4c41-852d-0c6ce0f77df3;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""1,154"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:16+00 -f76afffd-26a7-49a5-bc9f-1b63b653cdff;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""584"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 -f777681a-6ed6-4c93-9f55-e9a0c2be3be0;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""51.53%"", ""Indicator"": ""% of service contacts who qualify as poor""}";2023-09-28 08:50:17+00 -f78aff92-3efd-4b16-a683-c8fabd683ce0;"{""NGO"": ""IMAGE"", ""SPOC"": ""SPOC C"", ""Month"": ""12/31/2022"", ""Measure"": ""624"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:17+00 -f7eda918-3e1c-4bde-9c17-183a7d0186cd;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""7,784"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 -f844f2a8-5b40-439b-be4b-b64a6a0cb1db;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""732"", ""Indicator"": ""# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs""}";2023-09-28 08:50:16+00 -f8cea84f-3e94-4d1e-a7a8-5606d54f97bd;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""11/30/2022"", ""Measure"": ""872"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:16+00 -f8de44e6-84e6-4216-bcb8-b90d61ea9ecb;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""10/31/2022"", ""Measure"": ""2,071"", ""Indicator"": ""# of post-natal care (PNC) services by skilled provider of Delivery""}";2023-09-28 08:50:17+00 -f99226aa-1237-4be3-b3c2-8185afbd4820;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""146"", ""Indicator"": ""# of childhood pneumonia cases treated with antibiotics""}";2023-09-28 08:50:17+00 -f9d0da4b-7d22-4d0b-823d-b7f5ac1b7e51;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""5"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:16+00 -f9e49e74-a3fe-41fe-92b9-1c1322ec17e9;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""8,806"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:16+00 -fb396941-16ad-4a2d-87bf-364832e665e4;"{""NGO"": ""CRC"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""1,030"", ""Indicator"": ""ANC Fourth visit""}";2023-09-28 08:50:16+00 -fc471926-ceb2-4166-825e-56b3810c9d84;"{""NGO"": ""JTS"", ""SPOC"": ""SPOC C"", ""Month"": ""11/30/2022"", ""Measure"": ""0"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:17+00 -fd046b21-f372-476e-b04a-65dba4a123de;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""13"", ""Indicator"": ""# of deliveries with an SBA in targeted communities""}";2023-09-28 08:50:16+00 -fd3f2e2c-8cb4-46ef-9f0c-28d3d37478ba;"{""NGO"": ""BANDHAN"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""3,033"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 -fda2083c-a34c-462e-8e13-68662676928e;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""12/31/2022"", ""Measure"": ""5,982"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:17+00 -fe57ba6b-af2a-4c0d-a624-926cb55dda52;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""8,384"", ""Indicator"": ""# of ANC checkups provided during pregnancy through USG supported programs""}";2023-09-28 08:50:17+00 -fe603764-18cb-4fdf-99c1-c42da76f11e5;"{""NGO"": ""CWFD"", ""SPOC"": ""SPOC B"", ""Month"": ""10/31/2022"", ""Measure"": ""378"", ""Indicator"": ""# of Pregnant & Lactating Women prescribed with 30IFA""}";2023-09-28 08:50:16+00 -ff80b3c3-b581-4a46-93cf-c4e3b1b17133;"{""NGO"": ""BAMANEH"", ""SPOC"": ""SPOC A"", ""Month"": ""10/31/2022"", ""Measure"": ""8,006"", ""Indicator"": ""# of CYP""}";2023-09-28 08:50:16+00 -ffffa869-0521-469b-868b-0676b798c8ba;"{""NGO"": ""FDSR"", ""SPOC"": ""SPOC B"", ""Month"": ""11/30/2022"", ""Measure"": ""8,955"", ""Indicator"": ""# of injectables provided through USG supported program to prevent unintended pregnancies""}";2023-09-28 08:50:17+00 \ No newline at end of file diff --git a/seeds/sample_sheet1.json b/seeds/sample_sheet1.json new file mode 100644 index 0000000..a559152 --- /dev/null +++ b/seeds/sample_sheet1.json @@ -0,0 +1,1997 @@ +[ + { + "_airbyte_ab_id": "006b18b2-cccd-47f1-a9dc-5638d2d1abc7", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"183\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "009a7823-c119-4837-89a2-2c5808428d84", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"937\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0213d8fd-ea0b-447e-8d59-7ecbd7396b7c", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"41.19%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "033b0d74-cb2c-4edf-b586-90afe497cad9", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "039b3d53-dadd-4a56-aed1-93ff8c39f259", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,308\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "04b2ea2d-b12e-479e-adcd-b03362b50256", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"753\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "04bf44cf-0105-4a39-8dd8-5cfae8f449da", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"68,755\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "04c87852-4082-4d6d-b967-b4db867dbc0b", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"61\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "04f47c87-25ad-42fe-86dc-cb8589efd096", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"193\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0642cd10-bfd0-4dda-9785-f3cde92abf98", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,648\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "06ab84df-a4b4-4cc9-ae06-c59fbfe9d194", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"61,646\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "079d739b-fafc-4501-a747-2282ac84c52c", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"869\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "07b38952-a085-4709-a89f-046f8ba038cc", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "0a18eed8-968f-4eb4-a65c-c4b7a2646cbd", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,474\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0b0d6df6-58e5-4494-9ba8-d66e312f2b42", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12,577\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "0c1bba1e-231e-42df-877c-278c65186113", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0cf86686-375b-4e0c-93dd-3b74c8e3f025", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"794\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0d190bcb-00aa-4701-8ec5-9909809f034e", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"8,748\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "0d482ce5-40ee-4c43-a677-ea4545177027", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"44.08%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "0d9c3e2d-35da-4f17-b935-0c4bd9305f36", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"605\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "0e63cc1b-2cae-49d0-82c5-d369e7a090f0", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"2,923\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0e9f48c4-f8b4-416f-acfe-9ae089f9ebd9", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,668\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "1087cd3a-b9b1-4a44-bb45-2e28d4a45f4e", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"907\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "11ebfb56-719a-42fc-b3ba-2fed25e67ebd", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"752\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "121eb687-d4b1-4a82-8910-00ba3e1e68cf", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "15745654-98c6-43a1-b4d0-8743647d2527", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"21\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1593225f-b335-488b-9f4a-bf26a0cc5f0e", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"18,420\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "15cea643-4dbc-4421-8806-8fbd0d7799ab", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"33,127\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1917ce42-2409-49c7-8237-0dbdbab9ada7", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,060\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1b6ae2b6-e6a3-457a-8422-001879dc4250", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"8,237\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1bd550a2-9f4a-4632-bd1e-f80c69d53a44", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"69,264\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "1be89ccd-46ce-4f90-b5c2-fbabf737d71c", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1c4edb9b-2b6e-44f4-b0d6-372c7bab0d81", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"5\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1cfe1ac5-3e0f-462a-95dd-d308d28be8a1", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"57\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "1ee27b2f-b5bd-48e5-ba47-d9af4473ac1d", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"13,254\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "1f7a659a-f0a2-4f23-96a6-3706ddda5d8f", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"5\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "1fc2188b-e5e8-4699-a3e5-2e0771ef6c84", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "1fdf2272-402d-4a79-8a5b-fc63e1f1c2ab", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"15788\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "206fa178-fc3b-417c-84a0-3d22d92a932c", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"967\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "217e26d9-7541-4ecd-8b36-537e7f8a1039", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "21a7f5d4-13c1-42af-9c54-fdbf7c9cf6d5", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"15,155\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "221a785b-f9af-4def-a5bc-ed521d6446ef", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "22af7a75-7e50-477f-8b7d-68d177621510", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"113\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "23c79a06-e8b1-462c-b47a-a68e08236b30", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,769\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "241dbcd6-94a8-49a7-a259-49e39868d8f5", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"960\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "24a4402c-ccbf-4a7b-8d4d-40b0562c01d9", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"168\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "250aedfa-4521-4040-a746-a0b0a1ba08c2", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"820\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2560dcba-4cbe-4abe-b7fb-15a10e8a6168", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,875\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "25685136-0af9-42ad-9520-548c18d85b17", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,182\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "25d613c6-1c61-4446-84e1-794259577e8d", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"51\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "268345c2-46ad-4018-b17c-b5de325b6bbf", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3,732\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "26f26525-07cb-4837-98d4-dae86e6944b3", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,714\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "2782dff5-95c8-472d-b033-3f991eb8d7c3", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"8,356\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "285e2a15-3c77-4c9e-8103-da1ae278afcc", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,138\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "285e59b6-4255-4803-bb22-42e692c1bd84", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "28da59d9-acc2-4f34-9ddd-497105c0f339", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "2929c65a-63c3-47dc-a247-400585ae6012", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "295bd04f-91ba-4c06-916b-f305d6208493", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "29e4f585-f121-4de8-858f-36bb3c9d00f5", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"545\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2a444a06-7fca-4725-8ec0-67dc41ab8db2", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"38,571\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2ae2c69b-386a-4ad1-a707-bffa4f6e23b3", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"437\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2c7b58e9-eaac-4064-8acc-4ffb566a9956", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"36\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "2cad4195-a5bf-4af4-9702-d266d7e0935f", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"875\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2f3b2d38-07e9-4bfb-8903-1a07d784b1ee", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"3,589\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "2fd533c5-0384-4437-b917-2eb7746b8f0b", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"259\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "2fff627a-7a39-4722-afa2-4006834db15d", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3007a5a1-1778-4a1d-ad4a-87c6cb624425", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"81\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "30afc7a8-7852-4364-b78d-b6fc06522e97", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,486\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "31411872-3801-4963-b5b6-ba291b93c47e", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "31890015-488a-49e2-9431-ef0860669717", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"161,281\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "319352c0-5149-4508-8364-5584b1cbbf91", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"18\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "322c0672-cc46-46e1-aa73-3be3e11bb597", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,094\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "33b2659b-1b52-4414-a088-862c1bb62ff4", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"86\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "33c48317-5240-4d3a-ad9f-686b55645f9e", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"46.07%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "35c298a1-52c7-4f87-8ac2-956db0e60b1a", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "3688cf73-2cbe-491c-9ba9-c4f570463e8c", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"89\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "36ad2232-26e5-4a2a-b089-c982d9456b0c", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"599\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "36b0ac12-bc3b-440d-90a7-090cb298a0b4", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,742\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "370ff530-e317-447f-80d1-ea709627e5ed", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3777071b-5239-4e84-b25c-b91f1138fad7", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "37fb10d2-c6a2-455d-8c15-3fd45ea4a956", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"174,699\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "389193a0-1c04-46fe-821e-af8f1ba40f72", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"38.85%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "38dc4016-a3e4-43a5-a03d-476e2de3a753", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"196\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "39d3ec96-2c9d-4967-908e-3e7fb218a57f", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"478\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3a6b85fb-3861-403a-9bee-f88ed9e9f453", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"227\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "3ae36d4c-213d-42f0-a027-aa381749cb26", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"2,743\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3be4fce8-0763-45dc-a3a9-37f016bb3f8d", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"408\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3c2929d0-9567-4f6d-9a25-b76f14b3b90a", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"37.42%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "3c8ff02f-5fcc-4e67-87c9-555fe0ea599d", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"187\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3d4822c7-1795-40c1-884f-cbf236e3373a", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,121\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "3df92743-e48b-483e-8af2-c41a8216af64", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"996\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "3e0b2d38-2f1c-40f7-8116-6f668936b2f8", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"94\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "3ed9aa36-489d-4db0-979a-4204600ff2f0", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"573\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "40a10b4c-0b2d-48ff-872d-bbe07492e293", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "40e3ed75-7fc6-487c-9b6a-4abb24bf60d7", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"469\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "415cc42b-a387-4d51-8824-759d6cb9788c", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"423\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "425029f6-4674-4b2e-aac5-44e714816468", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "43279cf2-1c64-4c5c-ab05-0950acc0e7c7", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "43422b82-f3de-4d62-bc54-b3e16b57e12b", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"158\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "43f9b78e-392b-461d-a3db-022faf1b8162", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"831\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "44262286-e8d3-47b1-9f62-b3485a733527", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,838\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "447697b0-104e-4702-ae1b-5f4e657f7a29", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"684\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "46c1a8f0-348d-4e42-b135-b145cf124f97", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "47617f51-3d55-4fdf-a235-02d9c4046aea", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"6,279\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "47e60831-776d-487a-abfa-498e45bb982e", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"861\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "490fd2df-438a-45a1-91fd-86a3532e0b91", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,478\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "49c1ee12-96f7-4dfe-8a5c-90d3c18b792c", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,784\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4a2384e9-f63c-41ef-83fe-d95666272900", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"139\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4a4480cc-a540-4cc9-8a0e-b1c6939c96bf", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4a53f3be-ef09-4e18-a5dc-6a58b1752ce1", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"842\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4a644ce0-ac37-4838-8fc5-2e5cab1a40c1", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"416\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "4ab6206c-a3bb-4813-8177-1ad03b07abdd", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"4,925\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4abe80b5-2af3-40df-a6e6-c0ea90a047e6", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4b9ff364-d91d-422e-af6f-497704a0c60b", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "4c2f6654-a048-4d59-8ace-79fb3726153b", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"78\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "4d47b76e-e98b-42af-b1c8-f37ff019102c", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"12,920\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4e0d1079-e2ee-48b7-bec0-b1b3337454ca", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"693\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4e60f18a-8844-4db9-83ad-0f1ba74275bf", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,239\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4e655f3c-6ba2-496c-86cf-80a32b33964b", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "4ea9cc6c-7ced-4468-bef9-255534cfea4f", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,032\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "4ebba9c6-4e99-4464-8b40-08de8e70349b", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "4fa48b49-ca5a-4a70-8322-b53108f1775f", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"66\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "50c5756e-86f7-44da-8ad9-2fef58bae7c3", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "50d3a7af-b12e-450c-9537-466d7c8bc5ba", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,078\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5151bfc6-48d9-41e6-8f16-0b948cb41bd0", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"41\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "51adbee5-07f8-4a42-9d73-7d554b23ac7a", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"11\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5200afc0-40d8-455d-a5e3-efbcab9bf11a", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,290\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "55f5c5b8-6087-4c6e-b5dc-0ce35075ca68", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"422\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5608858c-c8c3-4e4a-ad61-132f65106436", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"253\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5697d6b8-5882-4926-9862-4b59da66e771", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"40.73%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "57d6f76e-743a-498e-a865-6be76cfc58fd", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"84,734\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "57f6e801-cfe4-4647-8122-a787537d150a", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "588a42ad-e3e2-4150-a5c8-a647d47503c2", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"876\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "59e6df28-d21d-412b-9e63-6aa6567f92e4", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"30\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5a402eac-8a25-4eed-ae98-ef60d8b84940", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"553\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5a565fa3-5f48-49b3-8cbc-5606d145a530", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"2,423\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5a649a93-c851-492a-81a6-91b94ad22490", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5af0c047-c0f1-4296-a265-bf4a05633c8f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,662\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5be14fbf-2121-4742-8e29-561a1aeae16e", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"77,155\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5cd8c973-508a-4525-8e44-ba43a261ac38", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"15,118\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5d413930-6895-45de-83c2-e819cafb27d3", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3085\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5d6b9809-ff2c-4877-a513-267117e98ba8", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,241\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5dd88dae-4dfa-4de5-8b40-191bf8f4d8c0", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5e2552a7-eb8e-4f3f-931a-a13203f21f60", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5e5c4ab1-3f9b-4308-af84-5cd3381f4b94", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,184\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5eee3144-4de0-47e8-ac03-6c7d7dc4d734", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,482\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5f064d2d-a17d-4fd8-ba35-c3587aee2e4e", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6,426\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5f0c5053-2fbe-4ae0-baef-fc929b479731", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"47.50%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "5fe6dbb1-1178-40e3-aff4-5400b433f8f7", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"429\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "5ff8964b-295e-43d4-bf60-cc808e475862", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"600\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "60534701-795f-403d-ab29-38e30c767572", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"324\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "617da9d9-feca-49c9-9ea9-0c67301e190d", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"35,659\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "61e6f4fc-a54d-4c13-934c-c67b5fa715f8", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"60,857\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "634cada4-f2fe-406d-b73b-c10c8a9d39f3", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"56\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6438419c-0429-477a-b627-e478e01b9a01", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "643e85b5-45c5-4ab2-8e38-078a09e275a6", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"41.78%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "649aed05-e19f-4f08-a640-136748ee0cb8", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"403\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "67fb6d27-9ec1-41b9-9beb-d8d75fa9fcb2", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,453\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6860136b-eecd-4ce7-a715-f694b3690778", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"16,799\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6907362c-37a7-4ef4-afe5-d06fe339403a", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,048\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "69422325-0e07-4ff6-a96d-28fc98aa153b", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"123\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "69b73ce1-b426-45c5-8aaa-dc763e3225fc", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"31,909\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6a498b24-ed0c-4a7d-be73-e9ddba8f9ee6", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"158\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6a542bf5-706e-4269-b528-629412fa164c", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6aaf1317-a79a-47e8-9f29-b24c696c995c", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5,089\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6ac2b96d-24fc-4567-a0f3-ec632e4da433", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,974\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6b547487-2001-4605-bbb1-999764ab2f62", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"87\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6b82f323-1920-4f94-8fa8-f0052d91795f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"26.44%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6be1999d-5794-4369-9507-8bea14702693", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,967\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6bf58d15-56f0-4950-8608-350fceb560ad", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,688\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6dde29d3-27ef-4bca-85e6-e316f4fae528", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6e843d78-f2e8-409c-a0a3-c2a6a8539a7c", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"768\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "6ef399be-0e98-4f26-a9d1-fcb88e1a3936", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3,886\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "6f3b0733-afcb-4f98-9677-1ec7c0d91932", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"160,439\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "700b6abe-3619-4ea8-90f0-fa9b7add5302", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "703f80b0-2581-4805-ad04-415eeb588dd1", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"16799\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "71248c48-6558-49b9-9150-42b142d481c0", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"38\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "71703d06-a2fa-46ee-af8d-478ffd78fba0", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "71ee9aa6-5222-4212-9995-e4d4a23fa1b5", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"16,081\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7246bbd1-4340-4549-b7f3-37886ac7577f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"26.42%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "730e93bc-2c10-4ea9-a055-efaa8a890495", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "735b1470-590c-463d-8c19-be16c8782fca", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "73c2b70d-2517-407f-a8d8-2b71a703f4aa", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"84,650\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "76243aaf-be42-4fc7-bbe9-a46fba378e70", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"100\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "767df832-839e-4645-b004-ddde09212e33", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "76e8dde3-7b47-469b-bad7-17cdb19de5c0", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "77246bbe-0a17-4726-b96c-b5bc9a80d728", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"39.57%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "779ae797-2c2f-44be-9c56-47f9f5680c19", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"2,588\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "780b3319-6f8f-4ecd-be3c-79bf8c5fa1bb", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"352\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "78457dbe-44f9-4385-811b-0bbafbae365b", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "79ef5132-f576-4d96-ad7e-651ed586ec8a", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,711\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7b21a59f-c1eb-4e34-b2a6-5ce46590118f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"538\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7bbaa86c-48f5-4598-ab35-a135240679bc", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,119\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7bddba9c-044c-4297-ab71-617ad2afaa89", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,554\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7cb6347c-3a92-4ae5-8c0c-e7b95846d7c2", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "7d2c6b6c-73b2-4284-bd1d-26251c29b385", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"12,305\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7de19f0c-1866-4687-bdf7-74e163f5c4dc", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "7e19b4d4-641b-4540-9725-6487e5b339ae", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"82\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "7ec705dc-0889-49af-8381-17b731779ae7", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"13\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "7fac0d67-8850-4d48-8364-470e0cfb2c89", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"15,101\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "7fb6b459-6f87-49a0-bfc5-5a860f4a831d", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "80057354-5956-48ca-a2f2-5e44611fd5a3", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"13\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "80724d1c-7f22-4539-bcf0-23861ec00cd2", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,130\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "824d750a-2172-41bc-ae8a-38ca7bbc0b4b", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"39.50%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "84e397d0-81fc-4539-8692-120ed1c19bbc", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,791\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "850ec469-c40b-4349-9a8f-8bbc751fc0ae", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"7\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "85657518-1a4c-4cbe-a5a1-b92bcf3733e2", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,179\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8667e6a7-8387-4704-81f8-baefa768d04f", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"194,517\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "86bd4507-259e-415d-b4fa-67eecd2b9931", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"701\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "87304c26-0c6d-4f1f-8ba7-c8cee43a665e", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"254\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "884389f7-3642-4f9c-89d6-8449050fe905", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"743\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8a03640e-e52d-4f21-bb35-76d9af3378ff", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"31\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8c3b52c4-1580-4088-b2ba-2f430325d7e8", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"382\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8c9eec44-7a13-4029-a56d-f8fced4ac504", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8cb2f9be-cc7b-48c1-945b-db9af2ae94b8", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"851\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "8cd7006f-dd82-45cc-997e-741236943697", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"46\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "8e95666a-8a30-4e06-8ded-fd557f552803", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"693\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "8eeac417-fb1a-449c-a0e8-332546f593d9", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"453\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8efa387b-7f72-41ab-afc7-c13d2fe07d62", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "8f739c93-4e8b-4a8f-a202-f8155b8fe4f3", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,194\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "8fca86a3-b07c-46d7-9a21-bbef545d1383", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"107\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "90f05ff1-34a4-4fdd-8bf9-3687967208a9", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"44\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "913fafac-f2bf-4bfd-a1e4-4ad576b216f3", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"35\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "916625f1-cbfb-4edf-89ee-49b1dbfc9097", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"708\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "92ad4f17-2c1d-4c36-868e-1aec05e874d0", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,272\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9326eb42-6aa0-4e2a-aadd-5eac26b95d72", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"346,511\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9360810e-0602-49da-a29d-809462936f74", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"13\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9370b465-3872-4639-b935-4dccf65a86fc", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"70\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "938bf2ca-df5a-411c-8981-38b305dcde8c", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"15,788\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "94f986ba-6ce4-44a8-afff-7eea66e126fc", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"710\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "95976876-34e2-4b7c-b64e-6eca70f378af", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"68,844\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "95b608f5-2753-4681-a498-84c4e6e8e8b2", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,602\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "96342223-14e7-433d-9f1c-a3c355668c30", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9788cf8e-0814-4b7e-85c9-e2e9e0feadc3", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "97abe445-199b-431f-a91e-880d61501dee", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"906\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "97c3c3d2-58ec-4de6-b575-8486ebeab481", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,138\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "97dae2ee-0c11-44a4-a18c-8781ac778d1c", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9858130e-c53e-407e-b34d-c474ccc753b0", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,968\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "98c1e49a-5973-4388-8dc4-f3698db52094", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"40.31%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "99713c02-7ec7-4668-bdd3-cf92f4ab74a7", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"4,387\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9a6217ab-4396-4c4c-872d-47130bc27a49", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"433\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9a924f15-27d1-4bf0-b5fa-7fe8230afe77", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"533\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9b35d9eb-6fb5-4346-90aa-490bc3154e94", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,060\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9ca6207f-504c-4afa-b3c6-856a0fa28107", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"16,105\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9e25e04f-b0dc-4be8-a03a-8c81f5b161d3", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9e51b9f4-6ee7-4880-baf6-ae476d5c95cc", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"11,813\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "9e69e2a0-af55-418e-b1f8-4caffaf94e87", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"870\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "9f3681c8-2708-4e52-a6b3-02b42bc67d8c", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"8,454\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a1b29c14-197c-4a57-9ce7-0a6cfe6ccfa4", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"85,791\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a245441a-1646-40da-993e-c667849fe33c", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"769\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a24ec1b1-0a92-44f0-8395-f9460d10c829", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a2e0c69e-7e61-442d-a374-1ce8bff7530d", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"4,043\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a2e9d86b-b5a3-45c1-8c71-f0dfaefba93c", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,010\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a3782b28-f38d-42ef-80db-0f6bf446d999", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"35\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a3b637bc-633d-49aa-bdf8-7c48a7f992af", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,589\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a3d26754-3629-4249-90d6-af2b2efda298", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"29\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a453678e-7d3d-464a-9d1d-e59252cfdc4d", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"630\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a4d2bd6d-5893-4123-b16d-7f80c7869e2f", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"347,821\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a5a5e1f3-b097-456b-b72c-c6ed51d3619f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"33,245\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a6c2b9d5-0a2e-4904-959b-df0e4f924bc6", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"991\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a7954840-f634-4db4-b57a-68c677601c55", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"295\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "a8989be6-35c2-4672-bc0e-f53d2077bf2a", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,198\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "a996cbeb-be61-41d7-a6c7-dfc179a9e74c", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"43.44%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "aa68917c-136e-4574-935a-dbb7b0938240", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,445\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "aaeb1a54-1d6b-42ad-ac7e-668a74df74e1", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,517\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ab806c07-14eb-4dda-a441-4caa6bca2851", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"879\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ac1eb6e6-5a87-4efb-a808-e75ebca97404", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"183\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "acbd4057-4412-46f3-bd3e-3b73cd295650", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,058\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "adbe80b0-45b3-4e72-ab4c-f9e58226c80f", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"7,838\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "afebe78d-78a8-4f81-8d97-9c01ab8448a2", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"287\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b0556e71-80bf-4019-a1dd-e65cc8789bed", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b1cff9b7-d364-4b00-bbe6-96e6eb3ead10", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,683\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b2342574-e4e5-4a2e-bd74-950b0b5a8e0f", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,428\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b2b5645c-c89d-4460-848f-e988c4b47e97", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"916\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b2dde2d2-49f7-423c-9ac9-1505cbeafccf", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"199\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b40b0318-a052-412b-b08c-5a39ae8dee1c", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"16\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b63af52a-5a4a-414d-9aa0-22dc60ccb760", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"9\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b6ccb37b-7c47-46d3-b91b-80b82dfd8b35", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"8,348\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b7c65d03-2741-4b24-935d-915a9419fc64", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"849\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b7dd0373-28e2-4169-937a-34b94e4f9e71", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"16604\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b806b4e9-8b2e-4292-80dc-94c33e3f0b1a", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,856\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b86c531b-72aa-4c4d-9b7d-8f3b90b05976", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,458\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b8d9c861-7f33-4970-806f-622053a5e52d", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"14,110\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b8e837f9-21f1-4bb8-8532-57689ce58448", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "b97ba65c-4d0b-4eaf-841c-ae6164beaeaf", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "b9897e95-45c7-4d35-8645-c5ba598214db", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"40,329\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "baf7c4b5-4dd6-4c71-8202-b52f4b06b8e9", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"38\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "bb23329a-7e9f-4b99-a0bf-0d55f1b3af8d", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"4,461\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "bc150a85-6dc5-4022-8313-c6e4200abab0", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "bc35c21a-9455-4404-95c2-db585ebb0843", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"768\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "bfbbd988-b0db-44a8-bb7b-cbe2c475c9cd", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"613\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "bfd3eafa-f723-47e5-af3d-39b57a216feb", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"34,431\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c1d5eb5c-5c5b-46ac-b2fb-144454a1c285", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,228\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c1e2c8c2-51b1-4315-92d1-e2286a6dd80d", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"385\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c23068db-d1f5-41b7-ae2e-836a63228694", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"93\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c24c2523-e3d7-4fb6-8bbf-fd6005206187", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"230\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c2e0002d-a4c3-48cf-9fe2-9cbf1ab9715b", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"754\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c31f825f-a84b-4ea7-8971-f81d1e6581ca", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,163\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c36b3d8c-e3bf-4367-a566-88a1f70e46f3", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,199\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c39ab1bd-5df8-45d0-8810-5f75cad6c6f1", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"362\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c413a202-73fe-422d-b76f-6a1691241411", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,793\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c44e63d2-8a16-45ad-95d1-3c1988bba449", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"82\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c4ddaa70-8152-4930-bb29-69ffd57391df", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,805\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c4e41974-1d68-4688-90c8-52cfff032600", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,318\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c5369aaa-cdac-48e3-b95d-14f0647cde8d", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"38,385\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c545171d-f4b0-441f-bdb5-9bc1eb78292e", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"4,465\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c57565ab-428a-4d58-9289-80fe6ba7e0a0", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c6dc30ae-c245-4f29-b932-98e0caf85814", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"824\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "c764cd61-2b91-4a5b-b19b-b145e7bfe34a", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"97\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "c799168a-a15e-4ed0-8347-f8d891c8df69", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,634\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "caa1a740-b283-478b-8ae4-ad1d5d74141a", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"82\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "caae18ea-9f83-400d-bf71-bb250a22a79a", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"91,137\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "cbbf16cc-4e91-4762-959b-fb3a80a97c38", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,661\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "cbed5849-452d-4ac4-a57d-c22d8132ebc3", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"40.12%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "cc05a78d-4f15-498a-b563-92ba1327e660", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"7,589\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "cc9e3d34-a6f1-4396-93ba-bb768a30ecbb", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"7,874\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "cd9373af-96a4-4027-bbf4-80fb1f85833a", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"345,328\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "cda0fb2f-946d-4615-8726-978e312f59b9", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,731\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "cdc992f1-a062-4ca8-bef7-4efbcc78ca94", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"378\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ce1efdb2-27b8-4fe1-9ce2-a0dbcba4571d", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ce299c24-029d-4f62-953a-acaa71345948", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"696\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "cf13bb91-487b-4247-ac4f-208eea774fbc", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"16,604\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d250b3c1-a6f0-46eb-8e38-5dcd44850d6a", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d31fc554-316e-48ce-a0d4-5f98645b4915", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,462\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d331691c-3f42-4835-9ffb-ffdf794caa36", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"60,834\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d346844e-1ebb-4ee4-ae18-1451dfe648c9", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"43.64%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d35322a1-fb21-469c-af9f-5ce8dac38126", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"983\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d3be91f5-f68e-4ad2-ba0e-8bbd4931f5bf", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"761\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d46ba645-cc70-4376-a360-f64691ddbeef", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"27.16%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d4f96a63-d9cc-486e-a23c-5417e39094a8", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"8,422\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d5c46079-d319-4699-b352-0a64fcfe052f", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"7,197\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d6613ef4-3e55-410c-9a55-8f1d9703506f", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d735d8b3-5597-4e5a-bbb8-5dbe89f2c8a5", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d8289aee-02b5-4f3c-8b86-56a1e3611e68", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "d872d654-c1c2-4ce7-bf39-7f6183b5480b", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"84\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "d8a7d8bd-946e-4da7-bca5-a40fe1ecc235", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"40.01%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "da42d084-6e91-493d-9e9a-716697cd0507", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"526\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "da73e615-c8ae-4d06-8c0f-2e3a591bb84c", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"183\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "db048448-646c-4ee6-9b71-a1d66d63b3cb", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,201\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "db8531b1-21e1-445c-85d9-b4b00c14d15e", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"153,842\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "dbee0d0e-a10b-4772-85da-8c71e4446e6e", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "dbfa53f5-a29b-4c32-9780-51de1635b7ab", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "dc298434-4677-4047-ba22-0b54f6de0a52", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,772\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "df54da62-e51c-4f2d-8f3c-23163c47eb66", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,647\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "df9412ac-3445-44c6-9901-e396412dd1c8", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"112\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e0b2c459-5e7d-4c32-8b05-e1be7d66e84f", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"14,366\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e0cfba39-6bdf-4c66-a897-944ad6378aa7", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e2723fba-d5e1-428d-9963-a54d4c6ef607", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"67\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e2febf05-559e-491c-b6ca-03d28a7ab5a0", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e3e80154-38eb-4610-9d08-2b9a4b0227f8", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e44c3273-41ee-405c-b9c9-3973140c33ee", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e56c4987-ffef-4e12-9b5d-32f1c17ced57", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,230\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e6fd215d-194d-46ad-b3c6-41baf50a7ae2", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"9,110\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e72320fa-849d-41ad-a2ba-fccdf9c2f588", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"7\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e81f1ed4-e6e4-4853-89f9-fbbc44634642", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"151,186\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "e8739c03-638e-486e-a803-7f58f680fb02", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"729\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e943e09f-babd-4caa-a2c0-c6f356b6ead9", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"258\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e967175b-9349-4db2-a58b-8cb60f49d997", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,662\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "e9b288a7-b20c-48ff-b484-7e3e6c4901d7", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,105\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "eaa14a83-d18d-40b6-ac3e-e07e81d2ea1b", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,798\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "eadb5dc5-e3f1-44cd-a165-12df43624011", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"47.00%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "eb48cffd-1420-4294-8d3a-5cdda960e294", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"3,149\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "eb4c7069-1ab7-4ad1-805d-c8193b9eead1", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,944\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ec517219-e3f0-41ff-a704-73e2500fc7f3", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,359\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ec96bfa1-d2f7-445e-8a59-44994eb7901f", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"957\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ed0af78f-bde2-4d7d-a108-a19f4edd1631", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ed2a3692-76de-4e1a-8762-f997f0a1c231", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"39.80%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "ed765493-b533-4f69-8080-a73a6a816ddb", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"14,668\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "edfad18c-a0ed-4d21-8aae-1f1ca44a5f1b", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ee4df971-ed71-4821-9afe-67146c8a67e6", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f03e964d-4a16-44b1-9c78-d6b48f7e4916", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"4,780\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f145c8d9-60e2-42c6-8a23-698d8a3d961a", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"3,943\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f1a4a2ff-6214-4d94-9e46-92616bdcf659", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"37,696\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f28596c5-a5d2-4710-9f09-ab6d9d458b67", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,386\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f3272f07-b5ab-4813-89bd-226216cfa427", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"18\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f3fda975-58c2-439d-91bc-2139a67eda1d", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,384\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f5e620c9-de0b-424d-85c5-19f54fbb0404", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"59\", \"Indicator\": \"Home births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f6982f46-1939-4c51-8d5f-26eb0bf3d697", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"93\", \"Indicator\": \"Facility births\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f6c86b6c-96a0-4cd9-86a9-1d74567d3af8", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"84,879\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f721ef10-821f-4c41-852d-0c6ce0f77df3", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,154\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f76afffd-26a7-49a5-bc9f-1b63b653cdff", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"584\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f777681a-6ed6-4c93-9f55-e9a0c2be3be0", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"51.53%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f78aff92-3efd-4b16-a683-c8fabd683ce0", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"624\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f7eda918-3e1c-4bde-9c17-183a7d0186cd", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"7,784\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f844f2a8-5b40-439b-be4b-b64a6a0cb1db", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"732\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f8cea84f-3e94-4d1e-a7a8-5606d54f97bd", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"872\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f8de44e6-84e6-4216-bcb8-b90d61ea9ecb", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,071\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f99226aa-1237-4be3-b3c2-8185afbd4820", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"146\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "f9d0da4b-7d22-4d0b-823d-b7f5ac1b7e51", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "f9e49e74-a3fe-41fe-92b9-1c1322ec17e9", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"8,806\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "fb396941-16ad-4a2d-87bf-364832e665e4", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,030\", \"Indicator\": \"ANC Fourth visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "fc471926-ceb2-4166-825e-56b3810c9d84", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "fd046b21-f372-476e-b04a-65dba4a123de", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"13\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "fd3f2e2c-8cb4-46ef-9f0c-28d3d37478ba", + "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,033\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "fda2083c-a34c-462e-8e13-68662676928e", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"5,982\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "fe57ba6b-af2a-4c0d-a624-926cb55dda52", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"8,384\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "fe603764-18cb-4fdf-99c1-c42da76f11e5", + "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"378\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ff80b3c3-b581-4a46-93cf-c4e3b1b17133", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"8,006\", \"Indicator\": \"# of CYP\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "ffffa869-0521-469b-868b-0676b798c8ba", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"8,955\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + } +] \ No newline at end of file diff --git a/seeds/seed.py b/seeds/seed.py new file mode 100644 index 0000000..3d41f5b --- /dev/null +++ b/seeds/seed.py @@ -0,0 +1,90 @@ +"""This script seeds airbyte's raw data into test warehouse""" + +import argparse, os +from logging import basicConfig, getLogger, INFO +from dbt_automation.utils.warehouseclient import get_client +from dotenv import load_dotenv +import csv +from pathlib import Path +import json + + +basicConfig(level=INFO) +logger = getLogger() + +# ================================================================================ +parser = argparse.ArgumentParser() +parser.add_argument("--warehouse", required=True, choices=["postgres", "bigquery"]) +args = parser.parse_args() +warehouse = args.warehouse + +load_dotenv("dbconnection.env") + +tablename = "_airbyte_raw_Sheet1" +json_file = "seeds/sample_sheet1.json" + +data = [] +with open(json_file, "r") as file: + data = json.load(file) + +columns = ["_airbyte_ab_id", "_airbyte_data", "_airbyte_emitted_at"] + +# schema check; expecting only airbyte raw data +for row in data: + schema_check = [True if key in columns else False for key in row.keys()] + if all(schema_check) is False: + raise Exception("Schema mismatch") + + +if args.warehouse == "postgres": + logger.info("Found postgres warehouse") + conn_info = { + "host": os.getenv("TEST_PG_DBHOST"), + "port": os.getenv("TEST_PG_DBPORT"), + "username": os.getenv("TEST_PG_DBUSER"), + "database": os.getenv("TEST_PG_DBNAME"), + "password": os.getenv("TEST_PG_DBPASSWORD"), + } + schema = os.getenv("TEST_PG_DBSCHEMA") + + wc_client = get_client(args.warehouse, conn_info) + + drop_schema_query = f""" + DROP SCHEMA IF EXISTS {schema} CASCADE; + """ + create_schema_query = f""" + CREATE SCHEMA IF NOT EXISTS {schema}; + """ + create_table_query = f""" + CREATE TABLE IF NOT EXISTS {schema}."{tablename}" + ( + _airbyte_ab_id character varying, + _airbyte_data jsonb, + _airbyte_emitted_at timestamp with time zone + ); + """ + + wc_client.runcmd(drop_schema_query) + wc_client.runcmd(create_schema_query) + wc_client.runcmd(create_table_query) + + """ + INSERT INTO your_table_name (column1, column2, column3, ...) + VALUES ({}, {}, {}, ...); + """ + # seed sample json data into the newly table created + logger.info("seeding sample json data") + for row in data: + # Execute the insert query with the data from the CSV + insert_query = f"""INSERT INTO {schema}."{tablename}" ({', '.join(columns)}) VALUES ('{row['_airbyte_ab_id']}', JSON '{row['_airbyte_data']}', '{row['_airbyte_emitted_at']}')""" + wc_client.runcmd(insert_query) + + wc_client.close() + logger.info("seeding finished") + + +if args.warehouse == "bigquery": + logger.info("Found bigquery warehouse") + conn_info = os.getenv("TEST_BG_SERVICEJSON") + print(conn_info) + print(type(conn_info)) From ceb861ea122c3542a53484e6fc89f7548d04e3b2 Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 11:55:19 +0530 Subject: [PATCH 20/58] seeder finished - to seed only airbyte raw data - using truncate instead of deleting --- .gitignore | 1 + seeds/seed.py | 67 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 2d2eb4b..954bd55 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ venv/ workspace/ *.yaml .venv +.vscode # Distribution / packaging .Python diff --git a/seeds/seed.py b/seeds/seed.py index 3d41f5b..30a655f 100644 --- a/seeds/seed.py +++ b/seeds/seed.py @@ -7,6 +7,7 @@ import csv from pathlib import Path import json +from google.cloud import bigquery basicConfig(level=INFO) @@ -49,9 +50,6 @@ wc_client = get_client(args.warehouse, conn_info) - drop_schema_query = f""" - DROP SCHEMA IF EXISTS {schema} CASCADE; - """ create_schema_query = f""" CREATE SCHEMA IF NOT EXISTS {schema}; """ @@ -63,10 +61,13 @@ _airbyte_emitted_at timestamp with time zone ); """ + truncate_table_query = f""" + TRUNCATE TABLE {schema}."{tablename}"; + """ - wc_client.runcmd(drop_schema_query) wc_client.runcmd(create_schema_query) wc_client.runcmd(create_table_query) + wc_client.runcmd(truncate_table_query) """ INSERT INTO your_table_name (column1, column2, column3, ...) @@ -79,12 +80,58 @@ insert_query = f"""INSERT INTO {schema}."{tablename}" ({', '.join(columns)}) VALUES ('{row['_airbyte_ab_id']}', JSON '{row['_airbyte_data']}', '{row['_airbyte_emitted_at']}')""" wc_client.runcmd(insert_query) - wc_client.close() - logger.info("seeding finished") - if args.warehouse == "bigquery": logger.info("Found bigquery warehouse") - conn_info = os.getenv("TEST_BG_SERVICEJSON") - print(conn_info) - print(type(conn_info)) + conn_info = json.loads(os.getenv("TEST_BG_SERVICEJSON")) + location = os.getenv("TEST_BG_LOCATION") + test_dataset = os.getenv("TEST_BG_DATASET") + + wc_client = get_client(args.warehouse, conn_info) + + # create the dataset if it does not exist + dataset = bigquery.Dataset(f"{conn_info['project_id']}.{test_dataset}") + dataset.location = location + + logger.info("creating the dataset") + dataset = wc_client.bqclient.create_dataset(dataset, timeout=30, exists_ok=True) + logger.info("created dataset : {}".format(dataset.dataset_id)) + + # create the staging table if its does not exist + table_schema = [ + bigquery.SchemaField("_airbyte_ab_id", "STRING", mode="REQUIRED"), + bigquery.SchemaField("_airbyte_data", "STRING", mode="REQUIRED"), + bigquery.SchemaField("_airbyte_emitted_at", "TIMESTAMP", mode="REQUIRED"), + ] + table = bigquery.Table( + f"{conn_info['project_id']}.{dataset.dataset_id}.{tablename}", + schema=table_schema, + ) + wc_client.bqclient.create_table(table, exists_ok=True) + + # truncate data to (re-)seed fresh data + truncate_table_query = f""" + DELETE FROM `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` + WHERE true; + """ + + wc_client.execute(truncate_table_query) + + # seed data + insert_query = f""" + INSERT INTO `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` (_airbyte_ab_id, _airbyte_data, _airbyte_emitted_at) + VALUES + """ + insert_query_values = ",".join( + [ + f"""('{row["_airbyte_ab_id"]}', '{row["_airbyte_data"]}', '{row["_airbyte_emitted_at"]}')""" + for row in data + ] + ) + insert_query += insert_query_values + + wc_client.execute(insert_query) + + +wc_client.close() +logger.info("seeding finished") From f6b67b1ebb3223f36e9045d6e686a71ba928490b Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 12:01:18 +0530 Subject: [PATCH 21/58] env template --- dbconnection.env.template | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dbconnection.env.template b/dbconnection.env.template index 605bc55..9c84feb 100644 --- a/dbconnection.env.template +++ b/dbconnection.env.template @@ -11,8 +11,14 @@ GOOGLE_APPLICATION_CREDENTIALS= BIQUERY_LOCATION= # pytest related +# postgres TEST_PG_DBHOST= TEST_PG_DBPORT= TEST_PG_DBUSER= TEST_PG_DBPASSWORD= -TEST_PG_DBNAME= \ No newline at end of file +TEST_PG_DBNAME= + +# bigquery +TEST_BG_SERVICEJSON='' +TEST_BG_LOCATION= +TEST_BG_DATASET= \ No newline at end of file From 74eef8ed8386e741ccb0bd503c7d534f84cc51e8 Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 17:03:48 +0530 Subject: [PATCH 22/58] minor change in the scaffold operation; need to pass project dir and profiles dir so as to run from pytest --- dbt_automation/operations/scaffold.py | 40 +++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/dbt_automation/operations/scaffold.py b/dbt_automation/operations/scaffold.py index 77052aa..8cc1f8b 100644 --- a/dbt_automation/operations/scaffold.py +++ b/dbt_automation/operations/scaffold.py @@ -48,19 +48,25 @@ def scaffold(config: dict, warehouse, project_dir: str): logger.info("created %s", custom_schema_target) dbtproject_filename = Path(project_dir) / "dbt_project.yml" - project_template = { - "name": project_name, - "version": "1.0.0", - "config-version": 2, - "profile": project_name, - "model-paths": ["models"], - "test-paths": ["tests"], - "macro-paths": ["macros"], - "target-path": "target", - "clean-targets": ["target", "dbt_packages"], - } + PROJECT_TEMPLATE = Template( + """ +name: '$project_name' +version: '1.0.0' +config-version: 2 +profile: '$project_name' +model-paths: ["models"] +test-paths: ["tests"] +macro-paths: ["macros"] + +target-path: "target" +clean-targets: + - "target" + - "dbt_packages" +""" + ) + dbtproject_template = PROJECT_TEMPLATE.substitute({"project_name": project_name}) with open(dbtproject_filename, "w", encoding="utf-8") as dbtprojectfile: - yaml.safe_dump(project_template, dbtprojectfile) + dbtprojectfile.write(dbtproject_template) logger.info("wrote %s", dbtproject_filename) dbtpackages_filename = Path(project_dir) / "packages.yml" @@ -106,13 +112,13 @@ def scaffold(config: dict, warehouse, project_dir: str): try: subprocess.check_call( [ - "cd", - project_dir, - "&&", - Path(project_dir) / "venv" / "bin" / "dbt", + Path(project_dir) / "venv/bin/dbt", "debug", + "--project-dir", + project_dir, + "--profiles-dir", + project_dir, ], - cwd=project_dir, ) except subprocess.CalledProcessError as e: From bc41e7d2fd8bccd679e325cb723586cdb1d35857 Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 18:28:43 +0530 Subject: [PATCH 23/58] seeding data for test database --- dbconnection.env.template | 7 ++++--- seeds/seed.py | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dbconnection.env.template b/dbconnection.env.template index 9c84feb..872c6a4 100644 --- a/dbconnection.env.template +++ b/dbconnection.env.template @@ -10,15 +10,16 @@ DBT_PROJECT_DIR= GOOGLE_APPLICATION_CREDENTIALS= BIQUERY_LOCATION= -# pytest related +# sample data seed credentials # postgres TEST_PG_DBHOST= TEST_PG_DBPORT= TEST_PG_DBUSER= TEST_PG_DBPASSWORD= TEST_PG_DBNAME= +TEST_PG_DBSCHEMA_SRC= # bigquery -TEST_BG_SERVICEJSON='' +TEST_BG_SERVICEJSON= TEST_BG_LOCATION= -TEST_BG_DATASET= \ No newline at end of file +TEST_BG_DATASET_SRC= \ No newline at end of file diff --git a/seeds/seed.py b/seeds/seed.py index 30a655f..62f8d00 100644 --- a/seeds/seed.py +++ b/seeds/seed.py @@ -46,7 +46,7 @@ "database": os.getenv("TEST_PG_DBNAME"), "password": os.getenv("TEST_PG_DBPASSWORD"), } - schema = os.getenv("TEST_PG_DBSCHEMA") + schema = os.getenv("TEST_PG_DBSCHEMA_SRC") wc_client = get_client(args.warehouse, conn_info) @@ -85,7 +85,7 @@ logger.info("Found bigquery warehouse") conn_info = json.loads(os.getenv("TEST_BG_SERVICEJSON")) location = os.getenv("TEST_BG_LOCATION") - test_dataset = os.getenv("TEST_BG_DATASET") + test_dataset = os.getenv("TEST_BG_DATASET_SRC") wc_client = get_client(args.warehouse, conn_info) From 70efac006035eafc8a7bf4800acbf600da0931fa Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 18:28:54 +0530 Subject: [PATCH 24/58] flatten airbyte add the destination schema --- dbt_automation/operations/flattenairbyte.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dbt_automation/operations/flattenairbyte.py b/dbt_automation/operations/flattenairbyte.py index 11d283d..5a49418 100644 --- a/dbt_automation/operations/flattenairbyte.py +++ b/dbt_automation/operations/flattenairbyte.py @@ -67,6 +67,7 @@ def flatten_operation(config: dict, warehouse, project_dir: str): # and the .sql model model_sql = mk_dbtmodel( warehouse, + DEST_SCHEMA, source["name"], # pass the source in the yaml file modelname, zip(json_fields, sql_columns), @@ -80,18 +81,21 @@ def flatten_operation(config: dict, warehouse, project_dir: str): # ================================================================================ -def mk_dbtmodel(warehouse, sourcename: str, srctablename: str, columntuples: list): +def mk_dbtmodel( + warehouse, dest_schema: str, sourcename: str, srctablename: str, columntuples: list +): """create the .sql model for this table""" - dbtmodel = """ -{{ + dbtmodel = f""" +{{{{ config( materialized='table', + schema='{dest_schema}', indexes=[ - {'columns': ['_airbyte_ab_id'], 'type': 'hash'} + {{'columns': ['_airbyte_ab_id'], 'type': 'hash'}} ] ) -}} +}}}} """ dbtmodel += "SELECT _airbyte_ab_id " dbtmodel += "\n" From 4e235758f7a106442ac4483bf42ae646ac33bdc7 Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 18:30:22 +0530 Subject: [PATCH 25/58] postgres - setting up the playfield for pytests to run; env vars for test will come from pytest.ini --- .gitignore | 4 +- pytest.ini.template | 12 ++ tests/warehouse/postgres/test_operations.py | 121 ++++++++++++++++++++ 3 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 pytest.ini.template create mode 100644 tests/warehouse/postgres/test_operations.py diff --git a/.gitignore b/.gitignore index 954bd55..fb151ac 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ workspace/ *.yaml .venv .vscode +logs/ # Distribution / packaging .Python @@ -39,4 +40,5 @@ coverage.xml *.cover *.py,cover .hypothesis/ -.pytest_cache/ \ No newline at end of file +.pytest_cache/ +pytest.ini \ No newline at end of file diff --git a/pytest.ini.template b/pytest.ini.template new file mode 100644 index 0000000..6aee205 --- /dev/null +++ b/pytest.ini.template @@ -0,0 +1,12 @@ +[pytest] +env = + TEST_PG_DBHOST= + TEST_PG_DBPORT= + TEST_PG_DBUSER= + TEST_PG_DBPASSWORD= + TEST_PG_DBNAME= + TEST_PG_DBSCHEMA_SRC= + + R:TEST_BG_SERVICEJSON='' + TEST_BG_LOCATION= + TEST_BG_DATASET_SRC= \ No newline at end of file diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py new file mode 100644 index 0000000..2d90b5c --- /dev/null +++ b/tests/warehouse/postgres/test_operations.py @@ -0,0 +1,121 @@ +import pytest +import os +from pathlib import Path +import subprocess, sys +from logging import basicConfig, getLogger, INFO +from dbt_automation.operations.droprenamecolumns import rename_columns +from dbt_automation.utils.warehouseclient import get_client +from dbt_automation.operations.scaffold import scaffold +from dbt_automation.operations.syncsources import sync_sources +from dbt_automation.operations.flattenairbyte import flatten_operation + + +basicConfig(level=INFO) +logger = getLogger() + + +class TestPostgresOperations: + """test rename_columns operation""" + + warehouse = "postgres" + test_project_dir = None + wc_client = get_client( + "postgres", + { + "host": os.environ.get("TEST_PG_DBHOST"), + "port": os.environ.get("TEST_PG_DBPORT"), + "username": os.environ.get("TEST_PG_DBUSER"), + "database": os.environ.get("TEST_PG_DBNAME"), + "password": os.environ.get("TEST_PG_DBPASSWORD"), + }, + ) + schema = os.environ.get( + "TEST_PG_DBSCHEMA_SRC" + ) # source schema where the raw data lies + + def test_scaffold(self, tmpdir): + """This will setup the dbt repo to run dbt commands after running a test operation""" + print("starting scaffolding") + project_name = "pytest_dbt" + config = { + "project_name": project_name, + "default_schema": TestPostgresOperations.schema, + } + scaffold(config, TestPostgresOperations.wc_client, tmpdir) + TestPostgresOperations.test_project_dir = Path(tmpdir) / project_name + subprocess.call( + [ + Path(TestPostgresOperations.test_project_dir) / "venv" / "bin" / "dbt", + "deps", + "--project-dir", + TestPostgresOperations.test_project_dir, + "--profiles-dir", + TestPostgresOperations.test_project_dir, + ], + ) + print("finished scaffolding") + + def test_syncsources(self): + """test the sync sources operation against the warehouse""" + print("syncing sources") + config = { + "source_name": "sample", + "source_schema": TestPostgresOperations.schema, + } + sync_sources( + config, + TestPostgresOperations.wc_client, + TestPostgresOperations.test_project_dir, + ) + sources_yml = ( + Path(TestPostgresOperations.test_project_dir) + / "models" + / TestPostgresOperations.schema + / "sources.yml" + ) + assert os.path.exists(sources_yml) is True + print("finished syncing sources") + + def test_flatten(self): + """test the flatten operation against the warehouse""" + config = { + "source_schema": TestPostgresOperations.schema, + "dest_schema": "pytest_intermediate", + } + flatten_operation( + config, + TestPostgresOperations.wc_client, + TestPostgresOperations.test_project_dir, + ) + subprocess.call( + [ + Path(TestPostgresOperations.test_project_dir) / "venv" / "bin" / "dbt", + "run", + "--project-dir", + TestPostgresOperations.test_project_dir, + "--profiles-dir", + TestPostgresOperations.test_project_dir, + ], + ) + print("inside test flatten") + print(f"inside project directory : {TestPostgresOperations.test_project_dir}") + + # def test_rename_columns(self): + # """test rename_columns for sample seed data""" + # config = {"input_name": "", "dest_schema": "", "output_name": "", "columns": {}} + + # rename_columns( + # config, + # TestPostgresOperations.wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # subprocess.call( + # [ + # "cd", + # self.test_project_dir, + # "&&", + # Path(self.test_project_dir) / "venv" / "bin" / "dbt", + # "debug", + # ], + # ) From 127bd02818ccfc43a4e58c40d4299e924450bfe7 Mon Sep 17 00:00:00 2001 From: Ishan Date: Fri, 3 Nov 2023 20:44:56 +0530 Subject: [PATCH 26/58] flatten airbyte operation assertion --- tests/warehouse/postgres/test_operations.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index 2d90b5c..51f708b 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -99,6 +99,9 @@ def test_flatten(self): ) print("inside test flatten") print(f"inside project directory : {TestPostgresOperations.test_project_dir}") + assert "Sheet1" in TestPostgresOperations.wc_client.get_tables( + "pytest_intermediate" + ) # def test_rename_columns(self): # """test rename_columns for sample seed data""" From 09073e5a9c576dd230bc59b815129506dd1c5ee0 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sat, 4 Nov 2023 12:09:37 +0530 Subject: [PATCH 27/58] reducing the records in seed data --- seeds/sample_sheet1.json | 1970 -------------------------------------- 1 file changed, 1970 deletions(-) diff --git a/seeds/sample_sheet1.json b/seeds/sample_sheet1.json index a559152..b33e863 100644 --- a/seeds/sample_sheet1.json +++ b/seeds/sample_sheet1.json @@ -23,1975 +23,5 @@ "_airbyte_ab_id": "039b3d53-dadd-4a56-aed1-93ff8c39f259", "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,308\", \"Indicator\": \"ANC First visit\"}", "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "04b2ea2d-b12e-479e-adcd-b03362b50256", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"753\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "04bf44cf-0105-4a39-8dd8-5cfae8f449da", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"68,755\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "04c87852-4082-4d6d-b967-b4db867dbc0b", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"61\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "04f47c87-25ad-42fe-86dc-cb8589efd096", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"193\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "0642cd10-bfd0-4dda-9785-f3cde92abf98", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,648\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "06ab84df-a4b4-4cc9-ae06-c59fbfe9d194", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"61,646\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "079d739b-fafc-4501-a747-2282ac84c52c", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"869\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "07b38952-a085-4709-a89f-046f8ba038cc", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "0a18eed8-968f-4eb4-a65c-c4b7a2646cbd", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,474\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "0b0d6df6-58e5-4494-9ba8-d66e312f2b42", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12,577\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "0c1bba1e-231e-42df-877c-278c65186113", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "0cf86686-375b-4e0c-93dd-3b74c8e3f025", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"794\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "0d190bcb-00aa-4701-8ec5-9909809f034e", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"8,748\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "0d482ce5-40ee-4c43-a677-ea4545177027", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"44.08%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "0d9c3e2d-35da-4f17-b935-0c4bd9305f36", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"605\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "0e63cc1b-2cae-49d0-82c5-d369e7a090f0", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"2,923\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "0e9f48c4-f8b4-416f-acfe-9ae089f9ebd9", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,668\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "1087cd3a-b9b1-4a44-bb45-2e28d4a45f4e", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"907\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "11ebfb56-719a-42fc-b3ba-2fed25e67ebd", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"752\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "121eb687-d4b1-4a82-8910-00ba3e1e68cf", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "15745654-98c6-43a1-b4d0-8743647d2527", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"21\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1593225f-b335-488b-9f4a-bf26a0cc5f0e", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"18,420\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "15cea643-4dbc-4421-8806-8fbd0d7799ab", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"33,127\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1917ce42-2409-49c7-8237-0dbdbab9ada7", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,060\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1b6ae2b6-e6a3-457a-8422-001879dc4250", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"8,237\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1bd550a2-9f4a-4632-bd1e-f80c69d53a44", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"69,264\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "1be89ccd-46ce-4f90-b5c2-fbabf737d71c", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1c4edb9b-2b6e-44f4-b0d6-372c7bab0d81", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"5\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1cfe1ac5-3e0f-462a-95dd-d308d28be8a1", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"57\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "1ee27b2f-b5bd-48e5-ba47-d9af4473ac1d", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"13,254\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "1f7a659a-f0a2-4f23-96a6-3706ddda5d8f", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"5\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "1fc2188b-e5e8-4699-a3e5-2e0771ef6c84", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "1fdf2272-402d-4a79-8a5b-fc63e1f1c2ab", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"15788\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "206fa178-fc3b-417c-84a0-3d22d92a932c", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"967\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "217e26d9-7541-4ecd-8b36-537e7f8a1039", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "21a7f5d4-13c1-42af-9c54-fdbf7c9cf6d5", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"15,155\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "221a785b-f9af-4def-a5bc-ed521d6446ef", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "22af7a75-7e50-477f-8b7d-68d177621510", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"113\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "23c79a06-e8b1-462c-b47a-a68e08236b30", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,769\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "241dbcd6-94a8-49a7-a259-49e39868d8f5", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"960\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "24a4402c-ccbf-4a7b-8d4d-40b0562c01d9", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"168\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "250aedfa-4521-4040-a746-a0b0a1ba08c2", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"820\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2560dcba-4cbe-4abe-b7fb-15a10e8a6168", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,875\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "25685136-0af9-42ad-9520-548c18d85b17", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,182\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "25d613c6-1c61-4446-84e1-794259577e8d", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"51\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "268345c2-46ad-4018-b17c-b5de325b6bbf", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3,732\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "26f26525-07cb-4837-98d4-dae86e6944b3", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,714\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "2782dff5-95c8-472d-b033-3f991eb8d7c3", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"8,356\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "285e2a15-3c77-4c9e-8103-da1ae278afcc", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,138\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "285e59b6-4255-4803-bb22-42e692c1bd84", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "28da59d9-acc2-4f34-9ddd-497105c0f339", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "2929c65a-63c3-47dc-a247-400585ae6012", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "295bd04f-91ba-4c06-916b-f305d6208493", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "29e4f585-f121-4de8-858f-36bb3c9d00f5", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"545\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2a444a06-7fca-4725-8ec0-67dc41ab8db2", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"38,571\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2ae2c69b-386a-4ad1-a707-bffa4f6e23b3", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"437\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2c7b58e9-eaac-4064-8acc-4ffb566a9956", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"36\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "2cad4195-a5bf-4af4-9702-d266d7e0935f", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"875\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2f3b2d38-07e9-4bfb-8903-1a07d784b1ee", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"3,589\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "2fd533c5-0384-4437-b917-2eb7746b8f0b", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"259\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "2fff627a-7a39-4722-afa2-4006834db15d", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3007a5a1-1778-4a1d-ad4a-87c6cb624425", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"81\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "30afc7a8-7852-4364-b78d-b6fc06522e97", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,486\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "31411872-3801-4963-b5b6-ba291b93c47e", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "31890015-488a-49e2-9431-ef0860669717", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"161,281\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "319352c0-5149-4508-8364-5584b1cbbf91", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"18\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "322c0672-cc46-46e1-aa73-3be3e11bb597", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,094\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "33b2659b-1b52-4414-a088-862c1bb62ff4", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"86\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "33c48317-5240-4d3a-ad9f-686b55645f9e", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"46.07%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "35c298a1-52c7-4f87-8ac2-956db0e60b1a", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "3688cf73-2cbe-491c-9ba9-c4f570463e8c", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"89\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "36ad2232-26e5-4a2a-b089-c982d9456b0c", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"599\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "36b0ac12-bc3b-440d-90a7-090cb298a0b4", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,742\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "370ff530-e317-447f-80d1-ea709627e5ed", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3777071b-5239-4e84-b25c-b91f1138fad7", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "37fb10d2-c6a2-455d-8c15-3fd45ea4a956", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"174,699\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "389193a0-1c04-46fe-821e-af8f1ba40f72", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"38.85%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "38dc4016-a3e4-43a5-a03d-476e2de3a753", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"196\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "39d3ec96-2c9d-4967-908e-3e7fb218a57f", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"478\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3a6b85fb-3861-403a-9bee-f88ed9e9f453", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"227\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "3ae36d4c-213d-42f0-a027-aa381749cb26", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"2,743\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3be4fce8-0763-45dc-a3a9-37f016bb3f8d", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"408\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3c2929d0-9567-4f6d-9a25-b76f14b3b90a", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"37.42%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "3c8ff02f-5fcc-4e67-87c9-555fe0ea599d", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"187\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3d4822c7-1795-40c1-884f-cbf236e3373a", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,121\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "3df92743-e48b-483e-8af2-c41a8216af64", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"996\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "3e0b2d38-2f1c-40f7-8116-6f668936b2f8", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"94\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "3ed9aa36-489d-4db0-979a-4204600ff2f0", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"573\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "40a10b4c-0b2d-48ff-872d-bbe07492e293", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "40e3ed75-7fc6-487c-9b6a-4abb24bf60d7", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"469\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "415cc42b-a387-4d51-8824-759d6cb9788c", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"423\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "425029f6-4674-4b2e-aac5-44e714816468", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "43279cf2-1c64-4c5c-ab05-0950acc0e7c7", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "43422b82-f3de-4d62-bc54-b3e16b57e12b", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"158\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "43f9b78e-392b-461d-a3db-022faf1b8162", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"831\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "44262286-e8d3-47b1-9f62-b3485a733527", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,838\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "447697b0-104e-4702-ae1b-5f4e657f7a29", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"684\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "46c1a8f0-348d-4e42-b135-b145cf124f97", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "47617f51-3d55-4fdf-a235-02d9c4046aea", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"6,279\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "47e60831-776d-487a-abfa-498e45bb982e", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"861\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "490fd2df-438a-45a1-91fd-86a3532e0b91", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,478\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "49c1ee12-96f7-4dfe-8a5c-90d3c18b792c", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,784\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4a2384e9-f63c-41ef-83fe-d95666272900", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"139\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4a4480cc-a540-4cc9-8a0e-b1c6939c96bf", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4a53f3be-ef09-4e18-a5dc-6a58b1752ce1", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"842\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4a644ce0-ac37-4838-8fc5-2e5cab1a40c1", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"416\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "4ab6206c-a3bb-4813-8177-1ad03b07abdd", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"4,925\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4abe80b5-2af3-40df-a6e6-c0ea90a047e6", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4b9ff364-d91d-422e-af6f-497704a0c60b", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "4c2f6654-a048-4d59-8ace-79fb3726153b", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"78\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "4d47b76e-e98b-42af-b1c8-f37ff019102c", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"12,920\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4e0d1079-e2ee-48b7-bec0-b1b3337454ca", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"693\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4e60f18a-8844-4db9-83ad-0f1ba74275bf", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,239\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4e655f3c-6ba2-496c-86cf-80a32b33964b", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "4ea9cc6c-7ced-4468-bef9-255534cfea4f", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,032\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "4ebba9c6-4e99-4464-8b40-08de8e70349b", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "4fa48b49-ca5a-4a70-8322-b53108f1775f", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"66\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "50c5756e-86f7-44da-8ad9-2fef58bae7c3", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "50d3a7af-b12e-450c-9537-466d7c8bc5ba", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,078\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5151bfc6-48d9-41e6-8f16-0b948cb41bd0", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"41\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "51adbee5-07f8-4a42-9d73-7d554b23ac7a", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"11\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5200afc0-40d8-455d-a5e3-efbcab9bf11a", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,290\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "55f5c5b8-6087-4c6e-b5dc-0ce35075ca68", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"422\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5608858c-c8c3-4e4a-ad61-132f65106436", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"253\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5697d6b8-5882-4926-9862-4b59da66e771", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"40.73%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "57d6f76e-743a-498e-a865-6be76cfc58fd", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"84,734\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "57f6e801-cfe4-4647-8122-a787537d150a", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "588a42ad-e3e2-4150-a5c8-a647d47503c2", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"876\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "59e6df28-d21d-412b-9e63-6aa6567f92e4", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"30\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5a402eac-8a25-4eed-ae98-ef60d8b84940", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"553\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5a565fa3-5f48-49b3-8cbc-5606d145a530", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"2,423\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5a649a93-c851-492a-81a6-91b94ad22490", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5af0c047-c0f1-4296-a265-bf4a05633c8f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,662\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5be14fbf-2121-4742-8e29-561a1aeae16e", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"77,155\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5cd8c973-508a-4525-8e44-ba43a261ac38", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"15,118\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5d413930-6895-45de-83c2-e819cafb27d3", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3085\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5d6b9809-ff2c-4877-a513-267117e98ba8", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,241\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5dd88dae-4dfa-4de5-8b40-191bf8f4d8c0", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5e2552a7-eb8e-4f3f-931a-a13203f21f60", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5e5c4ab1-3f9b-4308-af84-5cd3381f4b94", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,184\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5eee3144-4de0-47e8-ac03-6c7d7dc4d734", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,482\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5f064d2d-a17d-4fd8-ba35-c3587aee2e4e", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"6,426\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5f0c5053-2fbe-4ae0-baef-fc929b479731", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"47.50%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "5fe6dbb1-1178-40e3-aff4-5400b433f8f7", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"429\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "5ff8964b-295e-43d4-bf60-cc808e475862", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"600\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "60534701-795f-403d-ab29-38e30c767572", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"324\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "617da9d9-feca-49c9-9ea9-0c67301e190d", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"35,659\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "61e6f4fc-a54d-4c13-934c-c67b5fa715f8", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"60,857\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "634cada4-f2fe-406d-b73b-c10c8a9d39f3", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"56\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6438419c-0429-477a-b627-e478e01b9a01", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "643e85b5-45c5-4ab2-8e38-078a09e275a6", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"41.78%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "649aed05-e19f-4f08-a640-136748ee0cb8", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"403\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "67fb6d27-9ec1-41b9-9beb-d8d75fa9fcb2", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,453\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6860136b-eecd-4ce7-a715-f694b3690778", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"16,799\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6907362c-37a7-4ef4-afe5-d06fe339403a", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,048\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "69422325-0e07-4ff6-a96d-28fc98aa153b", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"123\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "69b73ce1-b426-45c5-8aaa-dc763e3225fc", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"31,909\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6a498b24-ed0c-4a7d-be73-e9ddba8f9ee6", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"158\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6a542bf5-706e-4269-b528-629412fa164c", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6aaf1317-a79a-47e8-9f29-b24c696c995c", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5,089\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6ac2b96d-24fc-4567-a0f3-ec632e4da433", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,974\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6b547487-2001-4605-bbb1-999764ab2f62", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"87\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6b82f323-1920-4f94-8fa8-f0052d91795f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"26.44%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6be1999d-5794-4369-9507-8bea14702693", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,967\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6bf58d15-56f0-4950-8608-350fceb560ad", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,688\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6dde29d3-27ef-4bca-85e6-e316f4fae528", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6e843d78-f2e8-409c-a0a3-c2a6a8539a7c", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"768\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "6ef399be-0e98-4f26-a9d1-fcb88e1a3936", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"3,886\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "6f3b0733-afcb-4f98-9677-1ec7c0d91932", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"160,439\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "700b6abe-3619-4ea8-90f0-fa9b7add5302", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "703f80b0-2581-4805-ad04-415eeb588dd1", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"16799\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "71248c48-6558-49b9-9150-42b142d481c0", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"38\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "71703d06-a2fa-46ee-af8d-478ffd78fba0", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "71ee9aa6-5222-4212-9995-e4d4a23fa1b5", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"16,081\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7246bbd1-4340-4549-b7f3-37886ac7577f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"26.42%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "730e93bc-2c10-4ea9-a055-efaa8a890495", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "735b1470-590c-463d-8c19-be16c8782fca", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "73c2b70d-2517-407f-a8d8-2b71a703f4aa", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"84,650\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "76243aaf-be42-4fc7-bbe9-a46fba378e70", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"100\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "767df832-839e-4645-b004-ddde09212e33", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "76e8dde3-7b47-469b-bad7-17cdb19de5c0", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "77246bbe-0a17-4726-b96c-b5bc9a80d728", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"39.57%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "779ae797-2c2f-44be-9c56-47f9f5680c19", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"2,588\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "780b3319-6f8f-4ecd-be3c-79bf8c5fa1bb", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"352\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "78457dbe-44f9-4385-811b-0bbafbae365b", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "79ef5132-f576-4d96-ad7e-651ed586ec8a", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,711\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7b21a59f-c1eb-4e34-b2a6-5ce46590118f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"538\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7bbaa86c-48f5-4598-ab35-a135240679bc", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,119\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7bddba9c-044c-4297-ab71-617ad2afaa89", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,554\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7cb6347c-3a92-4ae5-8c0c-e7b95846d7c2", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "7d2c6b6c-73b2-4284-bd1d-26251c29b385", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"12,305\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7de19f0c-1866-4687-bdf7-74e163f5c4dc", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "7e19b4d4-641b-4540-9725-6487e5b339ae", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"82\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "7ec705dc-0889-49af-8381-17b731779ae7", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"13\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "7fac0d67-8850-4d48-8364-470e0cfb2c89", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"15,101\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "7fb6b459-6f87-49a0-bfc5-5a860f4a831d", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "80057354-5956-48ca-a2f2-5e44611fd5a3", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"13\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "80724d1c-7f22-4539-bcf0-23861ec00cd2", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,130\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "824d750a-2172-41bc-ae8a-38ca7bbc0b4b", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"39.50%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "84e397d0-81fc-4539-8692-120ed1c19bbc", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,791\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "850ec469-c40b-4349-9a8f-8bbc751fc0ae", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"7\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "85657518-1a4c-4cbe-a5a1-b92bcf3733e2", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,179\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8667e6a7-8387-4704-81f8-baefa768d04f", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"194,517\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "86bd4507-259e-415d-b4fa-67eecd2b9931", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"701\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "87304c26-0c6d-4f1f-8ba7-c8cee43a665e", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"254\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "884389f7-3642-4f9c-89d6-8449050fe905", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"743\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8a03640e-e52d-4f21-bb35-76d9af3378ff", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"31\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8c3b52c4-1580-4088-b2ba-2f430325d7e8", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"382\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8c9eec44-7a13-4029-a56d-f8fced4ac504", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8cb2f9be-cc7b-48c1-945b-db9af2ae94b8", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"851\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "8cd7006f-dd82-45cc-997e-741236943697", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"46\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "8e95666a-8a30-4e06-8ded-fd557f552803", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"693\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "8eeac417-fb1a-449c-a0e8-332546f593d9", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"453\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8efa387b-7f72-41ab-afc7-c13d2fe07d62", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "8f739c93-4e8b-4a8f-a202-f8155b8fe4f3", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,194\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "8fca86a3-b07c-46d7-9a21-bbef545d1383", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"107\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "90f05ff1-34a4-4fdd-8bf9-3687967208a9", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"44\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "913fafac-f2bf-4bfd-a1e4-4ad576b216f3", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"35\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "916625f1-cbfb-4edf-89ee-49b1dbfc9097", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"708\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "92ad4f17-2c1d-4c36-868e-1aec05e874d0", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,272\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9326eb42-6aa0-4e2a-aadd-5eac26b95d72", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"346,511\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9360810e-0602-49da-a29d-809462936f74", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"13\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9370b465-3872-4639-b935-4dccf65a86fc", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"70\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "938bf2ca-df5a-411c-8981-38b305dcde8c", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"15,788\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "94f986ba-6ce4-44a8-afff-7eea66e126fc", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"710\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "95976876-34e2-4b7c-b64e-6eca70f378af", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"68,844\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "95b608f5-2753-4681-a498-84c4e6e8e8b2", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,602\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "96342223-14e7-433d-9f1c-a3c355668c30", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9788cf8e-0814-4b7e-85c9-e2e9e0feadc3", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "97abe445-199b-431f-a91e-880d61501dee", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"906\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "97c3c3d2-58ec-4de6-b575-8486ebeab481", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,138\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "97dae2ee-0c11-44a4-a18c-8781ac778d1c", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9858130e-c53e-407e-b34d-c474ccc753b0", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,968\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "98c1e49a-5973-4388-8dc4-f3698db52094", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"40.31%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "99713c02-7ec7-4668-bdd3-cf92f4ab74a7", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"4,387\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9a6217ab-4396-4c4c-872d-47130bc27a49", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"433\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9a924f15-27d1-4bf0-b5fa-7fe8230afe77", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"533\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9b35d9eb-6fb5-4346-90aa-490bc3154e94", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,060\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9ca6207f-504c-4afa-b3c6-856a0fa28107", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"16,105\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9e25e04f-b0dc-4be8-a03a-8c81f5b161d3", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9e51b9f4-6ee7-4880-baf6-ae476d5c95cc", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"11,813\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "9e69e2a0-af55-418e-b1f8-4caffaf94e87", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"870\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "9f3681c8-2708-4e52-a6b3-02b42bc67d8c", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"8,454\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a1b29c14-197c-4a57-9ce7-0a6cfe6ccfa4", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"85,791\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a245441a-1646-40da-993e-c667849fe33c", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"769\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a24ec1b1-0a92-44f0-8395-f9460d10c829", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a2e0c69e-7e61-442d-a374-1ce8bff7530d", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"4,043\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a2e9d86b-b5a3-45c1-8c71-f0dfaefba93c", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,010\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a3782b28-f38d-42ef-80db-0f6bf446d999", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"35\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a3b637bc-633d-49aa-bdf8-7c48a7f992af", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,589\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a3d26754-3629-4249-90d6-af2b2efda298", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"29\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a453678e-7d3d-464a-9d1d-e59252cfdc4d", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"630\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a4d2bd6d-5893-4123-b16d-7f80c7869e2f", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"347,821\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a5a5e1f3-b097-456b-b72c-c6ed51d3619f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"33,245\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a6c2b9d5-0a2e-4904-959b-df0e4f924bc6", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"991\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a7954840-f634-4db4-b57a-68c677601c55", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"295\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "a8989be6-35c2-4672-bc0e-f53d2077bf2a", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,198\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "a996cbeb-be61-41d7-a6c7-dfc179a9e74c", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"43.44%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "aa68917c-136e-4574-935a-dbb7b0938240", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,445\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "aaeb1a54-1d6b-42ad-ac7e-668a74df74e1", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,517\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ab806c07-14eb-4dda-a441-4caa6bca2851", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"879\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ac1eb6e6-5a87-4efb-a808-e75ebca97404", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"183\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "acbd4057-4412-46f3-bd3e-3b73cd295650", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,058\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "adbe80b0-45b3-4e72-ab4c-f9e58226c80f", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"7,838\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "afebe78d-78a8-4f81-8d97-9c01ab8448a2", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"287\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b0556e71-80bf-4019-a1dd-e65cc8789bed", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b1cff9b7-d364-4b00-bbe6-96e6eb3ead10", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,683\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b2342574-e4e5-4a2e-bd74-950b0b5a8e0f", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,428\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b2b5645c-c89d-4460-848f-e988c4b47e97", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"916\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b2dde2d2-49f7-423c-9ac9-1505cbeafccf", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"199\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b40b0318-a052-412b-b08c-5a39ae8dee1c", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"16\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b63af52a-5a4a-414d-9aa0-22dc60ccb760", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"9\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b6ccb37b-7c47-46d3-b91b-80b82dfd8b35", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"8,348\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b7c65d03-2741-4b24-935d-915a9419fc64", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"849\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b7dd0373-28e2-4169-937a-34b94e4f9e71", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"16604\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b806b4e9-8b2e-4292-80dc-94c33e3f0b1a", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"2,856\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b86c531b-72aa-4c4d-9b7d-8f3b90b05976", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,458\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b8d9c861-7f33-4970-806f-622053a5e52d", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"14,110\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b8e837f9-21f1-4bb8-8532-57689ce58448", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "b97ba65c-4d0b-4eaf-841c-ae6164beaeaf", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "b9897e95-45c7-4d35-8645-c5ba598214db", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"40,329\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "baf7c4b5-4dd6-4c71-8202-b52f4b06b8e9", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"38\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "bb23329a-7e9f-4b99-a0bf-0d55f1b3af8d", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"4,461\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "bc150a85-6dc5-4022-8313-c6e4200abab0", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "bc35c21a-9455-4404-95c2-db585ebb0843", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"768\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "bfbbd988-b0db-44a8-bb7b-cbe2c475c9cd", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"613\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "bfd3eafa-f723-47e5-af3d-39b57a216feb", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"34,431\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c1d5eb5c-5c5b-46ac-b2fb-144454a1c285", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,228\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c1e2c8c2-51b1-4315-92d1-e2286a6dd80d", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"385\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c23068db-d1f5-41b7-ae2e-836a63228694", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"93\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c24c2523-e3d7-4fb6-8bbf-fd6005206187", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"230\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c2e0002d-a4c3-48cf-9fe2-9cbf1ab9715b", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"754\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c31f825f-a84b-4ea7-8971-f81d1e6581ca", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,163\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c36b3d8c-e3bf-4367-a566-88a1f70e46f3", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,199\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c39ab1bd-5df8-45d0-8810-5f75cad6c6f1", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"362\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c413a202-73fe-422d-b76f-6a1691241411", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,793\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c44e63d2-8a16-45ad-95d1-3c1988bba449", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"82\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c4ddaa70-8152-4930-bb29-69ffd57391df", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"1,805\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c4e41974-1d68-4688-90c8-52cfff032600", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,318\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c5369aaa-cdac-48e3-b95d-14f0647cde8d", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"38,385\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c545171d-f4b0-441f-bdb5-9bc1eb78292e", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"4,465\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c57565ab-428a-4d58-9289-80fe6ba7e0a0", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c6dc30ae-c245-4f29-b932-98e0caf85814", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"824\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "c764cd61-2b91-4a5b-b19b-b145e7bfe34a", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"97\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "c799168a-a15e-4ed0-8347-f8d891c8df69", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,634\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "caa1a740-b283-478b-8ae4-ad1d5d74141a", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"82\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "caae18ea-9f83-400d-bf71-bb250a22a79a", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"91,137\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "cbbf16cc-4e91-4762-959b-fb3a80a97c38", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"3,661\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "cbed5849-452d-4ac4-a57d-c22d8132ebc3", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"40.12%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "cc05a78d-4f15-498a-b563-92ba1327e660", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"7,589\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "cc9e3d34-a6f1-4396-93ba-bb768a30ecbb", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"7,874\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "cd9373af-96a4-4027-bbf4-80fb1f85833a", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"345,328\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "cda0fb2f-946d-4615-8726-978e312f59b9", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"2,731\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "cdc992f1-a062-4ca8-bef7-4efbcc78ca94", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"378\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ce1efdb2-27b8-4fe1-9ce2-a0dbcba4571d", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ce299c24-029d-4f62-953a-acaa71345948", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"696\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "cf13bb91-487b-4247-ac4f-208eea774fbc", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"16,604\", \"Indicator\": \"# of youth (15-25 years) accessing reproductive health services (PBG Indicator, reported quarter basis)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d250b3c1-a6f0-46eb-8e38-5dcd44850d6a", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d31fc554-316e-48ce-a0d4-5f98645b4915", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"1,462\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d331691c-3f42-4835-9ffb-ffdf794caa36", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"60,834\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d346844e-1ebb-4ee4-ae18-1451dfe648c9", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"43.64%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d35322a1-fb21-469c-af9f-5ce8dac38126", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"983\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d3be91f5-f68e-4ad2-ba0e-8bbd4931f5bf", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"761\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d46ba645-cc70-4376-a360-f64691ddbeef", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"27.16%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d4f96a63-d9cc-486e-a23c-5417e39094a8", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"8,422\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d5c46079-d319-4699-b352-0a64fcfe052f", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"7,197\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d6613ef4-3e55-410c-9a55-8f1d9703506f", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d735d8b3-5597-4e5a-bbb8-5dbe89f2c8a5", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"157\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d8289aee-02b5-4f3c-8b86-56a1e3611e68", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "d872d654-c1c2-4ce7-bf39-7f6183b5480b", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"84\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "d8a7d8bd-946e-4da7-bca5-a40fe1ecc235", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"40.01%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "da42d084-6e91-493d-9e9a-716697cd0507", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"526\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "da73e615-c8ae-4d06-8c0f-2e3a591bb84c", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"183\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "db048448-646c-4ee6-9b71-a1d66d63b3cb", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"1,201\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "db8531b1-21e1-445c-85d9-b4b00c14d15e", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"153,842\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "dbee0d0e-a10b-4772-85da-8c71e4446e6e", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "dbfa53f5-a29b-4c32-9780-51de1635b7ab", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "dc298434-4677-4047-ba22-0b54f6de0a52", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"2,772\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "df54da62-e51c-4f2d-8f3c-23163c47eb66", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"2,647\", \"Indicator\": \"ANC First visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "df9412ac-3445-44c6-9901-e396412dd1c8", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"112\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e0b2c459-5e7d-4c32-8b05-e1be7d66e84f", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"14,366\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e0cfba39-6bdf-4c66-a897-944ad6378aa7", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"N/A\", \"Indicator\": \"# of vitamin A supplementations provided to children under 5 through USG supported programs in targeted areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e2723fba-d5e1-428d-9963-a54d4c6ef607", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"67\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e2febf05-559e-491c-b6ca-03d28a7ab5a0", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"N/A\", \"Indicator\": \"% of pregnant women who receive counseling on adoption of IYCF practices\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e3e80154-38eb-4610-9d08-2b9a4b0227f8", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of service contacts with children under 5 that included growth monitoring in USG supported programs in project areas\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e44c3273-41ee-405c-b9c9-3973140c33ee", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"12\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e56c4987-ffef-4e12-9b5d-32f1c17ced57", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,230\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e6fd215d-194d-46ad-b3c6-41baf50a7ae2", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"9,110\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e72320fa-849d-41ad-a2ba-fccdf9c2f588", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"7\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e81f1ed4-e6e4-4853-89f9-fbbc44634642", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"151,186\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "e8739c03-638e-486e-a803-7f58f680fb02", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"729\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e943e09f-babd-4caa-a2c0-c6f356b6ead9", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"258\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e967175b-9349-4db2-a58b-8cb60f49d997", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,662\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "e9b288a7-b20c-48ff-b484-7e3e6c4901d7", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"1,105\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "eaa14a83-d18d-40b6-ac3e-e07e81d2ea1b", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"1,798\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "eadb5dc5-e3f1-44cd-a165-12df43624011", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"47.00%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "eb48cffd-1420-4294-8d3a-5cdda960e294", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"3,149\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "eb4c7069-1ab7-4ad1-805d-c8193b9eead1", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"1,944\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ec517219-e3f0-41ff-a704-73e2500fc7f3", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"1,359\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ec96bfa1-d2f7-445e-8a59-44994eb7901f", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"957\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ed0af78f-bde2-4d7d-a108-a19f4edd1631", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ed2a3692-76de-4e1a-8762-f997f0a1c231", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"39.80%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "ed765493-b533-4f69-8080-a73a6a816ddb", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"14,668\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "edfad18c-a0ed-4d21-8aae-1f1ca44a5f1b", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ee4df971-ed71-4821-9afe-67146c8a67e6", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f03e964d-4a16-44b1-9c78-d6b48f7e4916", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"4,780\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f145c8d9-60e2-42c6-8a23-698d8a3d961a", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"3,943\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f1a4a2ff-6214-4d94-9e46-92616bdcf659", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"37,696\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f28596c5-a5d2-4710-9f09-ab6d9d458b67", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"3,386\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f3272f07-b5ab-4813-89bd-226216cfa427", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"18\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f3fda975-58c2-439d-91bc-2139a67eda1d", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,384\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f5e620c9-de0b-424d-85c5-19f54fbb0404", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"59\", \"Indicator\": \"Home births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f6982f46-1939-4c51-8d5f-26eb0bf3d697", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"93\", \"Indicator\": \"Facility births\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f6c86b6c-96a0-4cd9-86a9-1d74567d3af8", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"84,879\", \"Indicator\": \"# of service contacts at NGO partners clinics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f721ef10-821f-4c41-852d-0c6ce0f77df3", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"1,154\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f76afffd-26a7-49a5-bc9f-1b63b653cdff", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"584\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f777681a-6ed6-4c93-9f55-e9a0c2be3be0", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"51.53%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f78aff92-3efd-4b16-a683-c8fabd683ce0", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"624\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f7eda918-3e1c-4bde-9c17-183a7d0186cd", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"7,784\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f844f2a8-5b40-439b-be4b-b64a6a0cb1db", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"732\", \"Indicator\": \"# of children less than 12 months of age who received DPT3/Penta3 from USG-supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f8cea84f-3e94-4d1e-a7a8-5606d54f97bd", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"872\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f8de44e6-84e6-4216-bcb8-b90d61ea9ecb", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,071\", \"Indicator\": \"# of post-natal care (PNC) services by skilled provider of Delivery\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f99226aa-1237-4be3-b3c2-8185afbd4820", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"146\", \"Indicator\": \"# of childhood pneumonia cases treated with antibiotics\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "f9d0da4b-7d22-4d0b-823d-b7f5ac1b7e51", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"5\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "f9e49e74-a3fe-41fe-92b9-1c1322ec17e9", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"8,806\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "fb396941-16ad-4a2d-87bf-364832e665e4", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"1,030\", \"Indicator\": \"ANC Fourth visit\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "fc471926-ceb2-4166-825e-56b3810c9d84", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"11/30/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "fd046b21-f372-476e-b04a-65dba4a123de", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"13\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "fd3f2e2c-8cb4-46ef-9f0c-28d3d37478ba", - "_airbyte_data": "{\"NGO\": \"BANDHAN\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"3,033\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "fda2083c-a34c-462e-8e13-68662676928e", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"5,982\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "fe57ba6b-af2a-4c0d-a624-926cb55dda52", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"8,384\", \"Indicator\": \"# of ANC checkups provided during pregnancy through USG supported programs\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" - }, - { - "_airbyte_ab_id": "fe603764-18cb-4fdf-99c1-c42da76f11e5", - "_airbyte_data": "{\"NGO\": \"CWFD\", \"SPOC\": \"SPOC B\", \"Month\": \"10/31/2022\", \"Measure\": \"378\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ff80b3c3-b581-4a46-93cf-c4e3b1b17133", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"10/31/2022\", \"Measure\": \"8,006\", \"Indicator\": \"# of CYP\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:16+00" - }, - { - "_airbyte_ab_id": "ffffa869-0521-469b-868b-0676b798c8ba", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"11/30/2022\", \"Measure\": \"8,955\", \"Indicator\": \"# of injectables provided through USG supported program to prevent unintended pregnancies\"}", - "_airbyte_emitted_at": "2023-09-28 08:50:17+00" } ] \ No newline at end of file From 500cf915f567467ea53ac6615c7748acc244da74 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sat, 4 Nov 2023 12:10:06 +0530 Subject: [PATCH 28/58] destination schema in the model for the rename operation --- dbt_automation/operations/droprenamecolumns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbt_automation/operations/droprenamecolumns.py b/dbt_automation/operations/droprenamecolumns.py index 3487425..6495c0e 100644 --- a/dbt_automation/operations/droprenamecolumns.py +++ b/dbt_automation/operations/droprenamecolumns.py @@ -35,7 +35,7 @@ def rename_columns(config: dict, warehouse, project_dir: str): dbtproject = dbtProject(project_dir) dbtproject.ensure_models_dir(dest_schema) - model_code = '{{ config(materialized="table") }}\n\n' + model_code = '{{ config(materialized="table", schema="' + dest_schema + '") }}\n\n' exclude_cols = ",".join([f'"{col}"' for col in columns.keys()]) model_code += f'SELECT {{{{ dbt_utils.star(from=ref("{input_name}"), except=[{exclude_cols}]) }}}}, ' From e393faedff37f2a8123f126a2fb4ade865f81074 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sat, 4 Nov 2023 12:45:34 +0530 Subject: [PATCH 29/58] drop and rename cols test cases --- tests/warehouse/postgres/test_operations.py | 122 ++++++++++++-------- 1 file changed, 76 insertions(+), 46 deletions(-) diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index 51f708b..3dad969 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -3,7 +3,7 @@ from pathlib import Path import subprocess, sys from logging import basicConfig, getLogger, INFO -from dbt_automation.operations.droprenamecolumns import rename_columns +from dbt_automation.operations.droprenamecolumns import rename_columns, drop_columns from dbt_automation.utils.warehouseclient import get_client from dbt_automation.operations.scaffold import scaffold from dbt_automation.operations.syncsources import sync_sources @@ -33,31 +33,39 @@ class TestPostgresOperations: "TEST_PG_DBSCHEMA_SRC" ) # source schema where the raw data lies - def test_scaffold(self, tmpdir): - """This will setup the dbt repo to run dbt commands after running a test operation""" - print("starting scaffolding") - project_name = "pytest_dbt" - config = { - "project_name": project_name, - "default_schema": TestPostgresOperations.schema, - } - scaffold(config, TestPostgresOperations.wc_client, tmpdir) - TestPostgresOperations.test_project_dir = Path(tmpdir) / project_name + @staticmethod + def execute_dbt(cmd: str, select_model: str = None): + select_cli = ["--select", select_model] if select_model is not None else [] subprocess.call( [ Path(TestPostgresOperations.test_project_dir) / "venv" / "bin" / "dbt", - "deps", + cmd, + ] + + select_cli + + [ "--project-dir", TestPostgresOperations.test_project_dir, "--profiles-dir", TestPostgresOperations.test_project_dir, ], ) - print("finished scaffolding") + + def test_scaffold(self, tmpdir): + """This will setup the dbt repo to run dbt commands after running a test operation""" + logger.info("starting scaffolding") + project_name = "pytest_dbt" + config = { + "project_name": project_name, + "default_schema": TestPostgresOperations.schema, + } + scaffold(config, TestPostgresOperations.wc_client, tmpdir) + TestPostgresOperations.test_project_dir = Path(tmpdir) / project_name + TestPostgresOperations.execute_dbt("deps") + logger.info("finished scaffolding") def test_syncsources(self): """test the sync sources operation against the warehouse""" - print("syncing sources") + logger.info("syncing sources") config = { "source_name": "sample", "source_schema": TestPostgresOperations.schema, @@ -74,51 +82,73 @@ def test_syncsources(self): / "sources.yml" ) assert os.path.exists(sources_yml) is True - print("finished syncing sources") + logger.info("finished syncing sources") def test_flatten(self): """test the flatten operation against the warehouse""" + wc_client = TestPostgresOperations.wc_client config = { "source_schema": TestPostgresOperations.schema, "dest_schema": "pytest_intermediate", } flatten_operation( config, - TestPostgresOperations.wc_client, + wc_client, TestPostgresOperations.test_project_dir, ) - subprocess.call( - [ - Path(TestPostgresOperations.test_project_dir) / "venv" / "bin" / "dbt", - "run", - "--project-dir", - TestPostgresOperations.test_project_dir, - "--profiles-dir", - TestPostgresOperations.test_project_dir, - ], + TestPostgresOperations.execute_dbt("run", "Sheet1") + logger.info("inside test flatten") + logger.info( + f"inside project directory : {TestPostgresOperations.test_project_dir}" ) - print("inside test flatten") - print(f"inside project directory : {TestPostgresOperations.test_project_dir}") assert "Sheet1" in TestPostgresOperations.wc_client.get_tables( "pytest_intermediate" ) - # def test_rename_columns(self): - # """test rename_columns for sample seed data""" - # config = {"input_name": "", "dest_schema": "", "output_name": "", "columns": {}} - - # rename_columns( - # config, - # TestPostgresOperations.wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # subprocess.call( - # [ - # "cd", - # self.test_project_dir, - # "&&", - # Path(self.test_project_dir) / "venv" / "bin" / "dbt", - # "debug", - # ], - # ) + def test_rename_columns(self): + """test rename_columns for sample seed data""" + wc_client = TestPostgresOperations.wc_client + output_name = "rename" + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "ngo", "Month": "month"}, + } + + rename_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo" in cols + assert "month" in cols + assert "NGO" not in cols + assert "MONTH" not in cols + + def test_drop_columns(self): + """test drop_columns""" + wc_client = TestPostgresOperations.wc_client + output_name = "drop" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": ["MONTH"], + } + + drop_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "MONTH" not in cols From c8d09adac1b7c9c1c529ad7eb784a328c545eb67 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 09:04:31 +0530 Subject: [PATCH 30/58] setting up CI to run postgres warehouse tests --- .github/workflows/dbt_automation_pkg.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index ee74797..f90066e 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -11,6 +11,13 @@ on: jobs: tests: + env: + TEST_PG_DBHOST: ${{ secrets.TEST_PG_DBHOST }} + TEST_PG_DBPORT: ${{ secrets.TEST_PG_DBPORT }} + TEST_PG_DBUSER: ${{ secrets.TEST_PG_DBUSER }} + TEST_PG_DBPASSWORD: ${{ secrets.TEST_PG_DBPASSWORD }} + TEST_PG_DBNAME: ${{ secrets.TEST_PG_DBNAME }} + TEST_PG_DBSCHEMA_SRC: ${{ secrets.TEST_PG_DBSCHEMA_SRC }} runs-on: ubuntu-latest strategy: @@ -24,6 +31,17 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + - name: Create known_hosts file + run: | + mkdir -p ~/.ssh + touch ~/.ssh/known_hosts + - name: Add remote host key to known_hosts + run: ssh-keyscan ${{ secrets.SERVERIP }} >> ~/.ssh/known_hosts + - name: Port forward to the jump server to connect to the postgres warehouse + run: | + eval `ssh-agent -s` + ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" + ssh 5432:${{ secrets.SSH_HOST }}:5432 ddp@${{ secrets.SSH_SERVERIP }} -f -N - name: Install dependencies run: | python -m pip install --upgrade pip @@ -31,7 +49,7 @@ jobs: python setup.py install - name: Run tests and collect coverage run: | - pytest --cov=. + pytest -c pytest.ini -s --cov=. - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: From 16cf5b97b3abce76ba3ea5ccd7d1ecd3119ba6b8 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 09:06:42 +0530 Subject: [PATCH 31/58] minor change --- .github/workflows/dbt_automation_pkg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index f90066e..86160ae 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -36,7 +36,7 @@ jobs: mkdir -p ~/.ssh touch ~/.ssh/known_hosts - name: Add remote host key to known_hosts - run: ssh-keyscan ${{ secrets.SERVERIP }} >> ~/.ssh/known_hosts + run: ssh-keyscan ${{ secrets.SSH_SERVERIP }} >> ~/.ssh/known_hosts - name: Port forward to the jump server to connect to the postgres warehouse run: | eval `ssh-agent -s` From fce143430c0fdc86317f3304964d651fcf8e6005 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 09:28:18 +0530 Subject: [PATCH 32/58] minor changes --- .github/workflows/dbt_automation_pkg.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 86160ae..7005e4c 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -31,25 +31,31 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + - name: Create known_hosts file run: | mkdir -p ~/.ssh touch ~/.ssh/known_hosts + - name: Add remote host key to known_hosts run: ssh-keyscan ${{ secrets.SSH_SERVERIP }} >> ~/.ssh/known_hosts + - name: Port forward to the jump server to connect to the postgres warehouse run: | eval `ssh-agent -s` ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ssh 5432:${{ secrets.SSH_HOST }}:5432 ddp@${{ secrets.SSH_SERVERIP }} -f -N + - name: Install dependencies run: | python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi python setup.py install + - name: Run tests and collect coverage run: | - pytest -c pytest.ini -s --cov=. + pytest -s --cov=. + - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: From 2235d6603a62a28a8232ddade3f0a2178e284fc5 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 09:29:39 +0530 Subject: [PATCH 33/58] minor change --- .github/workflows/dbt_automation_pkg.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 7005e4c..8f054ef 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -39,6 +39,9 @@ jobs: - name: Add remote host key to known_hosts run: ssh-keyscan ${{ secrets.SSH_SERVERIP }} >> ~/.ssh/known_hosts + + - name: Add remote host key to known_hosts + run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts - name: Port forward to the jump server to connect to the postgres warehouse run: | From 8bc95a50a0adde0dcfd28da8bddea7c223f7f1da Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 09:30:51 +0530 Subject: [PATCH 34/58] minor change --- .github/workflows/dbt_automation_pkg.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 8f054ef..e901817 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -37,9 +37,6 @@ jobs: mkdir -p ~/.ssh touch ~/.ssh/known_hosts - - name: Add remote host key to known_hosts - run: ssh-keyscan ${{ secrets.SSH_SERVERIP }} >> ~/.ssh/known_hosts - - name: Add remote host key to known_hosts run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts From 217108eaede23023e4869c2cc8904193af11addd Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:08:07 +0530 Subject: [PATCH 35/58] minor change --- .github/workflows/dbt_automation_pkg.yml | 64 ++++++++++++------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index e901817..df192d3 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -26,39 +26,39 @@ jobs: python-version: ["3.10"] steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} - - name: Create known_hosts file - run: | - mkdir -p ~/.ssh - touch ~/.ssh/known_hosts + - name: Create known_hosts file + run: | + mkdir -p ~/.ssh + touch ~/.ssh/known_hosts - - name: Add remote host key to known_hosts - run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts - - - name: Port forward to the jump server to connect to the postgres warehouse - run: | - eval `ssh-agent -s` - ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" - ssh 5432:${{ secrets.SSH_HOST }}:5432 ddp@${{ secrets.SSH_SERVERIP }} -f -N + - name: Add remote host key to known_hosts + run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts + + - name: Port forward to the jump server to connect to the postgres warehouse + run: | + eval `ssh-agent -s` + ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" + ssh 5432:${{ secrets.SSH_HOST }}:5432 ddp@${{ secrets.SSH_SERVERIP }} -f -N - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - python setup.py install - - - name: Run tests and collect coverage - run: | - pytest -s --cov=. + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + python setup.py install + + - name: Run tests and collect coverage + run: | + pytest -s --cov=. - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: true - verbose: true \ No newline at end of file + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true + verbose: true \ No newline at end of file From c9de0a26412021ddd9fd0f528362f0b2c1195b6d Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:15:53 +0530 Subject: [PATCH 36/58] minor changes --- .github/workflows/dbt_automation_pkg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index df192d3..d01009a 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -44,7 +44,7 @@ jobs: run: | eval `ssh-agent -s` ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" - ssh 5432:${{ secrets.SSH_HOST }}:5432 ddp@${{ secrets.SSH_SERVERIP }} -f -N + ssh -L 5432:${{ secrets.SSH_HOST }}:5432 -f -N ddp@${{ secrets.SSH_SERVERIP }} - name: Install dependencies run: | From 44bc14d378eeeb5ceb23adeb299b51f836d92c19 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:29:28 +0530 Subject: [PATCH 37/58] ssh keyscan failing in github CI - trying a fix --- .github/workflows/dbt_automation_pkg.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index d01009a..83ba16e 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -32,6 +32,12 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + python setup.py install + - name: Create known_hosts file run: | mkdir -p ~/.ssh @@ -40,17 +46,11 @@ jobs: - name: Add remote host key to known_hosts run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts - - name: Port forward to the jump server to connect to the postgres warehouse + - name: Login to the jump server and port forward to connect to the postgres warehouse run: | eval `ssh-agent -s` ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ssh -L 5432:${{ secrets.SSH_HOST }}:5432 -f -N ddp@${{ secrets.SSH_SERVERIP }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - python setup.py install - name: Run tests and collect coverage run: | From aa8b6652a0e8abe5b098c57b10d352ced2e7c684 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:35:00 +0530 Subject: [PATCH 38/58] adding server ip --- .github/workflows/dbt_automation_pkg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 83ba16e..86d958c 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -44,7 +44,7 @@ jobs: touch ~/.ssh/known_hosts - name: Add remote host key to known_hosts - run: ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts + run: ssh-keyscan ${{ secrets.SSH_SERVERIP }} >> ~/.ssh/known_hosts - name: Login to the jump server and port forward to connect to the postgres warehouse run: | From df4fc53a64ea318db24034eab752d5ad78a24c79 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:44:55 +0530 Subject: [PATCH 39/58] seed data before running the tests --- .github/workflows/dbt_automation_pkg.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index 86d958c..e848c60 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -32,12 +32,6 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - python setup.py install - - name: Create known_hosts file run: | mkdir -p ~/.ssh @@ -51,7 +45,17 @@ jobs: eval `ssh-agent -s` ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}" ssh -L 5432:${{ secrets.SSH_HOST }}:5432 -f -N ddp@${{ secrets.SSH_SERVERIP }} - + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + python setup.py install + + - name: Seed data in test warehouse + run: | + python seeds/seed.py --warehouse postgres + - name: Run tests and collect coverage run: | pytest -s --cov=. From 01cfcd35cfa42091bca3e50def07fea93c9e72f6 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 12:51:18 +0530 Subject: [PATCH 40/58] seed the test bigquery warehouse too --- .github/workflows/dbt_automation_pkg.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index e848c60..c142eb4 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -19,6 +19,10 @@ jobs: TEST_PG_DBNAME: ${{ secrets.TEST_PG_DBNAME }} TEST_PG_DBSCHEMA_SRC: ${{ secrets.TEST_PG_DBSCHEMA_SRC }} + TEST_BG_SERVICEJSON: ${{ secrets.TEST_BG_SERVICEJSON }} + TEST_BG_LOCATION: ${{ secrets.TEST_BG_LOCATION }} + TEST_BG_DATASET_SRC: ${{ secrets.TEST_BG_DATASET_SRC }} + runs-on: ubuntu-latest strategy: fail-fast: false @@ -55,6 +59,7 @@ jobs: - name: Seed data in test warehouse run: | python seeds/seed.py --warehouse postgres + python seeds/seed.py --warehouse bigquery - name: Run tests and collect coverage run: | From 6998fc0201ec56d25df1a4e99c6435f2d9c6e607 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 14:43:05 +0530 Subject: [PATCH 41/58] to read from pytest.ini --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index b377ce5..2660098 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,6 +23,7 @@ pyasn1==0.5.0 pyasn1-modules==0.3.0 pytest==7.4.3 pytest-cov==4.1.0 +pytest-env==1.1.1 python-dateutil==2.8.2 python-dotenv==1.0.0 PyYAML==6.0.1 From 421a7c0e4640b42cae38856bed46fb726ec709d2 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 17:19:56 +0530 Subject: [PATCH 42/58] coalesce column test case --- dbt_automation/operations/coalescecolumns.py | 2 +- tests/warehouse/postgres/test_operations.py | 43 +++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/dbt_automation/operations/coalescecolumns.py b/dbt_automation/operations/coalescecolumns.py index a41a11e..128dcc6 100644 --- a/dbt_automation/operations/coalescecolumns.py +++ b/dbt_automation/operations/coalescecolumns.py @@ -19,7 +19,7 @@ def coalesce_columns(config: dict, warehouse, project_dir: str): dbtproject = dbtProject(project_dir) dbtproject.ensure_models_dir(dest_schema) - union_code = "{{ config(materialized='table',) }}\n" + union_code = f"{{{{ config(materialized='table', schema='{dest_schema}') }}}}\n" columns = config["columns"] columnnames = [c["columnname"] for c in columns] diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index 3dad969..b9f8ce8 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -8,7 +8,8 @@ from dbt_automation.operations.scaffold import scaffold from dbt_automation.operations.syncsources import sync_sources from dbt_automation.operations.flattenairbyte import flatten_operation - +from dbt_automation.operations.coalescecolumns import coalesce_columns +from dbt_automation.utils.columnutils import quote_columnname basicConfig(level=INFO) logger = getLogger() @@ -152,3 +153,43 @@ def test_drop_columns(self): cols = wc_client.get_table_columns("pytest_intermediate", output_name) assert "MONTH" not in cols + + def test_coalescecolumns(self): + """test coalescecolumns""" + wc_client = TestPostgresOperations.wc_client + output_name = "coalesce" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "NGO", + }, + { + "columnname": "SPOC", + }, + ], + "output_column_name": "ngo_spoc", + } + + coalesce_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo_spoc" in cols + col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + col_data_original = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet1") + ) + assert ( + col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + if col_data_original[0]["NGO"] is not None + else col_data_original[0]["SPOC"] + ) From 38e1981119d19dd50a9dd3bb9ef2d45efcbb0845 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 17:25:03 +0530 Subject: [PATCH 43/58] minor fix for coalesce test case --- tests/warehouse/postgres/test_operations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index b9f8ce8..a86afa3 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -186,7 +186,7 @@ def test_coalescecolumns(self): assert "ngo_spoc" in cols col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) col_data_original = wc_client.get_table_data( - "pytest_intermediate", quote_columnname("Sheet1") + "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 ) assert ( col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] From 6746964a03f5ad7f764c47f7c71f2dc578dd6e66 Mon Sep 17 00:00:00 2001 From: Ishan Date: Sun, 5 Nov 2023 18:36:37 +0530 Subject: [PATCH 44/58] test concat columns operations --- tests/warehouse/postgres/test_operations.py | 43 +++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index a86afa3..dfb20b8 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -9,6 +9,7 @@ from dbt_automation.operations.syncsources import sync_sources from dbt_automation.operations.flattenairbyte import flatten_operation from dbt_automation.operations.coalescecolumns import coalesce_columns +from dbt_automation.operations.concatcolumns import concat_columns from dbt_automation.utils.columnutils import quote_columnname basicConfig(level=INFO) @@ -193,3 +194,45 @@ def test_coalescecolumns(self): if col_data_original[0]["NGO"] is not None else col_data_original[0]["SPOC"] ) + + def test_concatcolumns(self): + """test concatcolumns""" + wc_client = TestPostgresOperations.wc_client + output_name = "concat" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "name": "NGO", + "is_col": "yes", + }, + { + "name": "SPOC", + "is_col": "yes", + }, + { + "name": "test", + "is_col": "no", + }, + ], + "output_column_name": "concat_col", + } + + concat_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "concat_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["concat_col"] + == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + ) From ae3b5b83fb651e034049b398515c4c5aa33714bd Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 11:35:38 +0530 Subject: [PATCH 45/58] test case for arithemtic add operation and cast datatype operation --- dbt_automation/operations/arithmetic.py | 2 + dbt_automation/operations/castdatatypes.py | 2 +- seeds/sample_sheet1.json | 10 +-- tests/warehouse/postgres/test_operations.py | 70 +++++++++++++++++++++ 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/dbt_automation/operations/arithmetic.py b/dbt_automation/operations/arithmetic.py index af3185d..4526a77 100644 --- a/dbt_automation/operations/arithmetic.py +++ b/dbt_automation/operations/arithmetic.py @@ -39,6 +39,7 @@ def arithmetic(config: dict, warehouse, project_dir: str): dbt_code += "{{dbt_utils.safe_add([" for operand in operands: dbt_code += f"'{str(operand)}'," + dbt_code = dbt_code[:-1] dbt_code += "])}}" dbt_code += f" AS {output_col_name} " @@ -54,6 +55,7 @@ def arithmetic(config: dict, warehouse, project_dir: str): dbt_code += "{{dbt_utils.safe_subtract([" for operand in operands: dbt_code += f"'{str(operand)}'," + dbt_code = dbt_code[:-1] dbt_code += "])}}" dbt_code += f" AS {output_col_name} " diff --git a/dbt_automation/operations/castdatatypes.py b/dbt_automation/operations/castdatatypes.py index 876084d..a6f4c4b 100644 --- a/dbt_automation/operations/castdatatypes.py +++ b/dbt_automation/operations/castdatatypes.py @@ -24,7 +24,7 @@ def cast_datatypes(config: dict, warehouse, project_dir: str): dbtproject = dbtProject(project_dir) dbtproject.ensure_models_dir(dest_schema) - union_code = "{{ config(materialized='table',) }}\n" + union_code = f"{{{{ config(materialized='table',schema='{dest_schema}') }}}}\n" columns = config["columns"] columnnames = [c["columnname"] for c in columns] diff --git a/seeds/sample_sheet1.json b/seeds/sample_sheet1.json index b33e863..d969cde 100644 --- a/seeds/sample_sheet1.json +++ b/seeds/sample_sheet1.json @@ -1,27 +1,27 @@ [ { "_airbyte_ab_id": "006b18b2-cccd-47f1-a9dc-5638d2d1abc7", - "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"Measure\": \"183\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"measure1\": \"183\", \"measure2\": \"183\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", "_airbyte_emitted_at": "2023-09-28 08:50:17+00" }, { "_airbyte_ab_id": "009a7823-c119-4837-89a2-2c5808428d84", - "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"Measure\": \"937\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"measure1\": \"937\", \"measure2\": \"41\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", "_airbyte_emitted_at": "2023-09-28 08:50:17+00" }, { "_airbyte_ab_id": "0213d8fd-ea0b-447e-8d59-7ecbd7396b7c", - "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"Measure\": \"41.19%\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"measure1\": \"41\", \"measure2\": \"0\", \"Indicator\": \"% of service contacts who qualify as poor\"}", "_airbyte_emitted_at": "2023-09-28 08:50:16+00" }, { "_airbyte_ab_id": "033b0d74-cb2c-4edf-b586-90afe497cad9", - "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"Measure\": \"0\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"measure1\": \"0\", \"measure2\": \"2308\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", "_airbyte_emitted_at": "2023-09-28 08:50:16+00" }, { "_airbyte_ab_id": "039b3d53-dadd-4a56-aed1-93ff8c39f259", - "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"Measure\": \"2,308\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"measure1\": \"2308\", \"measure2\": \"500\", \"Indicator\": \"ANC First visit\"}", "_airbyte_emitted_at": "2023-09-28 08:50:17+00" } ] \ No newline at end of file diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/postgres/test_operations.py index dfb20b8..d024b2c 100644 --- a/tests/warehouse/postgres/test_operations.py +++ b/tests/warehouse/postgres/test_operations.py @@ -10,8 +10,11 @@ from dbt_automation.operations.flattenairbyte import flatten_operation from dbt_automation.operations.coalescecolumns import coalesce_columns from dbt_automation.operations.concatcolumns import concat_columns +from dbt_automation.operations.arithmetic import arithmetic +from dbt_automation.operations.castdatatypes import cast_datatypes from dbt_automation.utils.columnutils import quote_columnname + basicConfig(level=INFO) logger = getLogger() @@ -236,3 +239,70 @@ def test_concatcolumns(self): table_data[0]["concat_col"] == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" ) + + def test_castdatatypes(self): + """test castdatatypes""" + wc_client = TestPostgresOperations.wc_client + output_name = "cast" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "measure1", + "columntype": "int", + }, + { + "columnname": "measure2", + "columntype": "int", + }, + ], + } + + cast_datatypes( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "measure1" in cols + assert "measure2" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert + assert type(table_data[0]["measure1"]) == int + assert type(table_data[0]["measure2"]) == int + + def test_arithmetic_add(self): + """test arithmetic""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_add" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "add", + "operands": ["Measure1", "Measure2"], + "output_column_name": "add_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "add_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["add_col"] + == table_data[0]["measure1"] + table_data[0]["measure2"] + ) From fef537e8e4b71bda137319272f6a8464cdd416b2 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 12:04:35 +0530 Subject: [PATCH 46/58] bigquery test cases --- dbt_automation/utils/warehouseclient.py | 5 +- pytest.ini.template | 2 +- tests/warehouse/test_bigquery_ops.py | 305 ++++++++++++++++++ ...est_operations.py => test_postgres_ops.py} | 0 4 files changed, 309 insertions(+), 3 deletions(-) create mode 100644 tests/warehouse/test_bigquery_ops.py rename tests/warehouse/{postgres/test_operations.py => test_postgres_ops.py} (100%) diff --git a/dbt_automation/utils/warehouseclient.py b/dbt_automation/utils/warehouseclient.py index 4c3b74c..54d4783 100644 --- a/dbt_automation/utils/warehouseclient.py +++ b/dbt_automation/utils/warehouseclient.py @@ -3,12 +3,13 @@ from dbt_automation.utils.postgres import PostgresClient from dbt_automation.utils.bigquery import BigQueryClient -def get_client(warehouse: str, conn_info: dict = None): + +def get_client(warehouse: str, conn_info: dict = None, location: str = None): """constructs and returns an instance of the client for the right warehouse""" if warehouse == "postgres": client = PostgresClient(conn_info) elif warehouse == "bigquery": - client = BigQueryClient(conn_info) + client = BigQueryClient(conn_info, location) else: raise ValueError("unknown warehouse") return client diff --git a/pytest.ini.template b/pytest.ini.template index 6aee205..64f3bd2 100644 --- a/pytest.ini.template +++ b/pytest.ini.template @@ -7,6 +7,6 @@ env = TEST_PG_DBNAME= TEST_PG_DBSCHEMA_SRC= - R:TEST_BG_SERVICEJSON='' + R:TEST_BG_SERVICEJSON= TEST_BG_LOCATION= TEST_BG_DATASET_SRC= \ No newline at end of file diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py new file mode 100644 index 0000000..c18a6eb --- /dev/null +++ b/tests/warehouse/test_bigquery_ops.py @@ -0,0 +1,305 @@ +import pytest +import os +from pathlib import Path +import json +import subprocess, sys +from logging import basicConfig, getLogger, INFO +from dbt_automation.operations.droprenamecolumns import rename_columns, drop_columns +from dbt_automation.utils.warehouseclient import get_client +from dbt_automation.operations.scaffold import scaffold +from dbt_automation.operations.syncsources import sync_sources +from dbt_automation.operations.flattenairbyte import flatten_operation +from dbt_automation.operations.coalescecolumns import coalesce_columns +from dbt_automation.operations.concatcolumns import concat_columns +from dbt_automation.operations.arithmetic import arithmetic +from dbt_automation.operations.castdatatypes import cast_datatypes +from dbt_automation.utils.columnutils import quote_columnname + + +basicConfig(level=INFO) +logger = getLogger() + + +class TestBigqueryOperations: + """test operations in bigquery warehouse""" + + warehouse = "bigquery" + test_project_dir = None + + wc_client = get_client( + "bigquery", + json.loads(os.getenv("TEST_BG_SERVICEJSON")), + os.environ.get("TEST_BG_LOCATION"), + ) + schema = os.environ.get( + "TEST_BG_DATASET_SRC" + ) # source schema where the raw data lies + + @staticmethod + def execute_dbt(cmd: str, select_model: str = None): + select_cli = ["--select", select_model] if select_model is not None else [] + subprocess.call( + [ + Path(TestBigqueryOperations.test_project_dir) / "venv" / "bin" / "dbt", + cmd, + ] + + select_cli + + [ + "--project-dir", + TestBigqueryOperations.test_project_dir, + "--profiles-dir", + TestBigqueryOperations.test_project_dir, + ], + ) + + def test_scaffold(self, tmpdir): + """This will setup the dbt repo to run dbt commands after running a test operation""" + logger.info("starting scaffolding") + project_name = "pytest_dbt" + config = { + "project_name": project_name, + "default_schema": TestBigqueryOperations.schema, + } + scaffold(config, TestBigqueryOperations.wc_client, tmpdir) + TestBigqueryOperations.test_project_dir = Path(tmpdir) / project_name + TestBigqueryOperations.execute_dbt("deps") + logger.info("finished scaffolding") + + def test_syncsources(self): + """test the sync sources operation against the warehouse""" + logger.info("syncing sources") + config = { + "source_name": "sample", + "source_schema": TestBigqueryOperations.schema, + } + sync_sources( + config, + TestBigqueryOperations.wc_client, + TestBigqueryOperations.test_project_dir, + ) + sources_yml = ( + Path(TestBigqueryOperations.test_project_dir) + / "models" + / TestBigqueryOperations.schema + / "sources.yml" + ) + assert os.path.exists(sources_yml) is True + logger.info("finished syncing sources") + + def test_flatten(self): + """test the flatten operation against the warehouse""" + wc_client = TestBigqueryOperations.wc_client + config = { + "source_schema": TestBigqueryOperations.schema, + "dest_schema": "pytest_intermediate", + } + flatten_operation( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + TestBigqueryOperations.execute_dbt("run", "Sheet1") + logger.info("inside test flatten") + logger.info( + f"inside project directory : {TestBigqueryOperations.test_project_dir}" + ) + assert "Sheet1" in TestBigqueryOperations.wc_client.get_tables( + "pytest_intermediate" + ) + + def test_rename_columns(self): + """test rename_columns for sample seed data""" + wc_client = TestBigqueryOperations.wc_client + output_name = "rename" + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "ngo", "Month": "month"}, + } + + rename_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo" in cols + assert "month" in cols + assert "NGO" not in cols + assert "MONTH" not in cols + + def test_drop_columns(self): + """test drop_columns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "drop" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": ["MONTH"], + } + + drop_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "MONTH" not in cols + + def test_coalescecolumns(self): + """test coalescecolumns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "coalesce" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "NGO", + }, + { + "columnname": "SPOC", + }, + ], + "output_column_name": "ngo_spoc", + } + + coalesce_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo_spoc" in cols + col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + col_data_original = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 + ) + assert ( + col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + if col_data_original[0]["NGO"] is not None + else col_data_original[0]["SPOC"] + ) + + def test_concatcolumns(self): + """test concatcolumns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "concat" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "name": "NGO", + "is_col": "yes", + }, + { + "name": "SPOC", + "is_col": "yes", + }, + { + "name": "test", + "is_col": "no", + }, + ], + "output_column_name": "concat_col", + } + + concat_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "concat_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["concat_col"] + == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + ) + + def test_castdatatypes(self): + """test castdatatypes""" + wc_client = TestBigqueryOperations.wc_client + output_name = "cast" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "measure1", + "columntype": "int", + }, + { + "columnname": "measure2", + "columntype": "int", + }, + ], + } + + cast_datatypes( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "measure1" in cols + assert "measure2" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert + assert type(table_data[0]["measure1"]) == int + assert type(table_data[0]["measure2"]) == int + + def test_arithmetic_add(self): + """test arithmetic""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_add" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "add", + "operands": ["Measure1", "Measure2"], + "output_column_name": "add_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "add_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["add_col"] + == table_data[0]["measure1"] + table_data[0]["measure2"] + ) diff --git a/tests/warehouse/postgres/test_operations.py b/tests/warehouse/test_postgres_ops.py similarity index 100% rename from tests/warehouse/postgres/test_operations.py rename to tests/warehouse/test_postgres_ops.py From 95a24ec6d2f4d0a9230b143169c872a90d159f23 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 12:15:01 +0530 Subject: [PATCH 47/58] minor change --- tests/warehouse/test_bigquery_ops.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index c18a6eb..9c68d34 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -187,7 +187,7 @@ def test_coalescecolumns(self): assert "ngo_spoc" in cols col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) col_data_original = wc_client.get_table_data( - "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 + "pytest_intermediate", quote_columnname("Sheet1", "bigquery"), 1 ) assert ( col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] From f670d76ae088a66ea6214dc452aa56a0556498f7 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 12:31:32 +0530 Subject: [PATCH 48/58] fixing CI error --- tests/warehouse/test_bigquery_ops.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index 9c68d34..782313c 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -13,7 +13,6 @@ from dbt_automation.operations.concatcolumns import concat_columns from dbt_automation.operations.arithmetic import arithmetic from dbt_automation.operations.castdatatypes import cast_datatypes -from dbt_automation.utils.columnutils import quote_columnname basicConfig(level=INFO) @@ -185,10 +184,11 @@ def test_coalescecolumns(self): cols = wc_client.get_table_columns("pytest_intermediate", output_name) assert "ngo_spoc" in cols - col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - col_data_original = wc_client.get_table_data( - "pytest_intermediate", quote_columnname("Sheet1", "bigquery"), 1 - ) + col_data = wc_client.get_table_data("pytest_intermediate", output_name, 5) + col_data_original = wc_client.get_table_data("pytest_intermediate", "Sheet1", 5) + col_data_original.sort(key=lambda x: x["_airbyte_ab_id"]) + col_data.sort(key=lambda x: x["_airbyte_ab_id"]) + # TODO: can do a stronger check here; by checking on rows in a loop assert ( col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] if col_data_original[0]["NGO"] is not None From 4359d582cab6aaa6036638ac819ed06cbb9ce8de Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 12:50:32 +0530 Subject: [PATCH 49/58] coveragerc file to omit things from being included in coverage --- .coveragerc | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..6558b5a --- /dev/null +++ b/.coveragerc @@ -0,0 +1,6 @@ +[run] +omit=tests/* + */__init__.py + setup.py + seeds/* + scripts/* \ No newline at end of file From f8a04885ae2821616bb66827891b353d085293fb Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 15:57:26 +0530 Subject: [PATCH 50/58] subtraction,multiplication and division test cases --- tests/warehouse/test_bigquery_ops.py | 94 +++++++++++++++++++++++++++- tests/warehouse/test_postgres_ops.py | 94 +++++++++++++++++++++++++++- 2 files changed, 184 insertions(+), 4 deletions(-) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index 782313c..25cd12d 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -1,6 +1,7 @@ import pytest import os from pathlib import Path +import math import json import subprocess, sys from logging import basicConfig, getLogger, INFO @@ -275,7 +276,7 @@ def test_castdatatypes(self): assert type(table_data[0]["measure2"]) == int def test_arithmetic_add(self): - """test arithmetic""" + """test arithmetic addition""" wc_client = TestBigqueryOperations.wc_client output_name = "arithmetic_add" @@ -284,7 +285,7 @@ def test_arithmetic_add(self): "dest_schema": "pytest_intermediate", "output_name": output_name, "operator": "add", - "operands": ["Measure1", "Measure2"], + "operands": ["measure1", "measure2"], "output_column_name": "add_col", } @@ -303,3 +304,92 @@ def test_arithmetic_add(self): table_data[0]["add_col"] == table_data[0]["measure1"] + table_data[0]["measure2"] ) + + def test_arithmetic_sub(self): + """test arithmetic subtraction""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_sub" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "sub", + "operands": ["measure1", "measure2"], + "output_column_name": "sub_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "sub_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["sub_col"] + == table_data[0]["measure1"] - table_data[0]["measure2"] + ) + + def test_arithmetic_mul(self): + """test arithmetic multiplication""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_mul" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "mul", + "operands": ["measure1", "measure2"], + "output_column_name": "mul_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "mul_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["mul_col"] + == table_data[0]["measure1"] * table_data[0]["measure2"] + ) + + def test_arithmetic_div(self): + """test arithmetic division""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_div" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "div", + "operands": ["measure1", "measure2"], + "output_column_name": "div_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "div_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert math.ceil(table_data[0]["div_col"]) == math.ceil( + table_data[0]["measure1"] / table_data[0]["measure2"] + ) diff --git a/tests/warehouse/test_postgres_ops.py b/tests/warehouse/test_postgres_ops.py index d024b2c..fa219bd 100644 --- a/tests/warehouse/test_postgres_ops.py +++ b/tests/warehouse/test_postgres_ops.py @@ -1,6 +1,7 @@ import pytest import os from pathlib import Path +import math import subprocess, sys from logging import basicConfig, getLogger, INFO from dbt_automation.operations.droprenamecolumns import rename_columns, drop_columns @@ -278,7 +279,7 @@ def test_castdatatypes(self): assert type(table_data[0]["measure2"]) == int def test_arithmetic_add(self): - """test arithmetic""" + """test arithmetic addition""" wc_client = TestPostgresOperations.wc_client output_name = "arithmetic_add" @@ -287,7 +288,7 @@ def test_arithmetic_add(self): "dest_schema": "pytest_intermediate", "output_name": output_name, "operator": "add", - "operands": ["Measure1", "Measure2"], + "operands": ["measure1", "measure2"], "output_column_name": "add_col", } @@ -306,3 +307,92 @@ def test_arithmetic_add(self): table_data[0]["add_col"] == table_data[0]["measure1"] + table_data[0]["measure2"] ) + + def test_arithmetic_sub(self): + """test arithmetic subtraction""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_sub" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "sub", + "operands": ["measure1", "measure2"], + "output_column_name": "sub_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "sub_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["sub_col"] + == table_data[0]["measure1"] - table_data[0]["measure2"] + ) + + def test_arithmetic_mul(self): + """test arithmetic multiplication""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_mul" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "mul", + "operands": ["measure1", "measure2"], + "output_column_name": "mul_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "mul_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["mul_col"] + == table_data[0]["measure1"] * table_data[0]["measure2"] + ) + + def test_arithmetic_div(self): + """test arithmetic division""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_div" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "div", + "operands": ["measure1", "measure2"], + "output_column_name": "div_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "div_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert math.ceil(table_data[0]["div_col"]) == math.ceil( + table_data[0]["measure1"] / table_data[0]["measure2"] + ) From 16944ff59c402ee381230d87ba5a6671a0679a67 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 16:14:39 +0530 Subject: [PATCH 51/58] catch the subprocess execute error --- tests/warehouse/test_bigquery_ops.py | 480 ++++++++++++++------------- tests/warehouse/test_postgres_ops.py | 42 ++- 2 files changed, 271 insertions(+), 251 deletions(-) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index 25cd12d..b22d0cf 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -37,20 +37,27 @@ class TestBigqueryOperations: @staticmethod def execute_dbt(cmd: str, select_model: str = None): - select_cli = ["--select", select_model] if select_model is not None else [] - subprocess.call( - [ - Path(TestBigqueryOperations.test_project_dir) / "venv" / "bin" / "dbt", - cmd, - ] - + select_cli - + [ - "--project-dir", - TestBigqueryOperations.test_project_dir, - "--profiles-dir", - TestBigqueryOperations.test_project_dir, - ], - ) + try: + select_cli = ["--select", select_model] if select_model is not None else [] + subprocess.check_call( + [ + Path(TestBigqueryOperations.test_project_dir) + / "venv" + / "bin" + / "dbt", + cmd, + ] + + select_cli + + [ + "--project-dir", + TestBigqueryOperations.test_project_dir, + "--profiles-dir", + TestBigqueryOperations.test_project_dir, + ], + ) + except subprocess.CalledProcessError as e: + logger.error(f"dbt {cmd} failed with {e.returncode}") + raise Exception(f"Something went wrong while running dbt {cmd}") def test_scaffold(self, tmpdir): """This will setup the dbt repo to run dbt commands after running a test operation""" @@ -107,136 +114,136 @@ def test_flatten(self): "pytest_intermediate" ) - def test_rename_columns(self): - """test rename_columns for sample seed data""" - wc_client = TestBigqueryOperations.wc_client - output_name = "rename" - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": {"NGO": "ngo", "Month": "month"}, - } - - rename_columns( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "ngo" in cols - assert "month" in cols - assert "NGO" not in cols - assert "MONTH" not in cols - - def test_drop_columns(self): - """test drop_columns""" - wc_client = TestBigqueryOperations.wc_client - output_name = "drop" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": ["MONTH"], - } - - drop_columns( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "MONTH" not in cols - - def test_coalescecolumns(self): - """test coalescecolumns""" - wc_client = TestBigqueryOperations.wc_client - output_name = "coalesce" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": [ - { - "columnname": "NGO", - }, - { - "columnname": "SPOC", - }, - ], - "output_column_name": "ngo_spoc", - } - - coalesce_columns( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "ngo_spoc" in cols - col_data = wc_client.get_table_data("pytest_intermediate", output_name, 5) - col_data_original = wc_client.get_table_data("pytest_intermediate", "Sheet1", 5) - col_data_original.sort(key=lambda x: x["_airbyte_ab_id"]) - col_data.sort(key=lambda x: x["_airbyte_ab_id"]) - # TODO: can do a stronger check here; by checking on rows in a loop - assert ( - col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] - if col_data_original[0]["NGO"] is not None - else col_data_original[0]["SPOC"] - ) - - def test_concatcolumns(self): - """test concatcolumns""" - wc_client = TestBigqueryOperations.wc_client - output_name = "concat" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": [ - { - "name": "NGO", - "is_col": "yes", - }, - { - "name": "SPOC", - "is_col": "yes", - }, - { - "name": "test", - "is_col": "no", - }, - ], - "output_column_name": "concat_col", - } - - concat_columns( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "concat_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["concat_col"] - == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" - ) + # def test_rename_columns(self): + # """test rename_columns for sample seed data""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "rename" + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": {"NGO": "ngo", "Month": "month"}, + # } + + # rename_columns( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "ngo" in cols + # assert "month" in cols + # assert "NGO" not in cols + # assert "MONTH" not in cols + + # def test_drop_columns(self): + # """test drop_columns""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "drop" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": ["MONTH"], + # } + + # drop_columns( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "MONTH" not in cols + + # def test_coalescecolumns(self): + # """test coalescecolumns""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "coalesce" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": [ + # { + # "columnname": "NGO", + # }, + # { + # "columnname": "SPOC", + # }, + # ], + # "output_column_name": "ngo_spoc", + # } + + # coalesce_columns( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "ngo_spoc" in cols + # col_data = wc_client.get_table_data("pytest_intermediate", output_name, 5) + # col_data_original = wc_client.get_table_data("pytest_intermediate", "Sheet1", 5) + # col_data_original.sort(key=lambda x: x["_airbyte_ab_id"]) + # col_data.sort(key=lambda x: x["_airbyte_ab_id"]) + # # TODO: can do a stronger check here; by checking on rows in a loop + # assert ( + # col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + # if col_data_original[0]["NGO"] is not None + # else col_data_original[0]["SPOC"] + # ) + + # def test_concatcolumns(self): + # """test concatcolumns""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "concat" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": [ + # { + # "name": "NGO", + # "is_col": "yes", + # }, + # { + # "name": "SPOC", + # "is_col": "yes", + # }, + # { + # "name": "test", + # "is_col": "no", + # }, + # ], + # "output_column_name": "concat_col", + # } + + # concat_columns( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "concat_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["concat_col"] + # == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + # ) def test_castdatatypes(self): """test castdatatypes""" @@ -275,95 +282,95 @@ def test_castdatatypes(self): assert type(table_data[0]["measure1"]) == int assert type(table_data[0]["measure2"]) == int - def test_arithmetic_add(self): - """test arithmetic addition""" - wc_client = TestBigqueryOperations.wc_client - output_name = "arithmetic_add" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "add", - "operands": ["measure1", "measure2"], - "output_column_name": "add_col", - } - - arithmetic( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "add_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["add_col"] - == table_data[0]["measure1"] + table_data[0]["measure2"] - ) - - def test_arithmetic_sub(self): - """test arithmetic subtraction""" - wc_client = TestBigqueryOperations.wc_client - output_name = "arithmetic_sub" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "sub", - "operands": ["measure1", "measure2"], - "output_column_name": "sub_col", - } - - arithmetic( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "sub_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["sub_col"] - == table_data[0]["measure1"] - table_data[0]["measure2"] - ) - - def test_arithmetic_mul(self): - """test arithmetic multiplication""" - wc_client = TestBigqueryOperations.wc_client - output_name = "arithmetic_mul" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "mul", - "operands": ["measure1", "measure2"], - "output_column_name": "mul_col", - } - - arithmetic( - config, - wc_client, - TestBigqueryOperations.test_project_dir, - ) - - TestBigqueryOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "mul_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["mul_col"] - == table_data[0]["measure1"] * table_data[0]["measure2"] - ) + # def test_arithmetic_add(self): + # """test arithmetic addition""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "arithmetic_add" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "add", + # "operands": ["measure1", "measure2"], + # "output_column_name": "add_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "add_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["add_col"] + # == table_data[0]["measure1"] + table_data[0]["measure2"] + # ) + + # def test_arithmetic_sub(self): + # """test arithmetic subtraction""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "arithmetic_sub" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "sub", + # "operands": ["measure1", "measure2"], + # "output_column_name": "sub_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "sub_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["sub_col"] + # == table_data[0]["measure1"] - table_data[0]["measure2"] + # ) + + # def test_arithmetic_mul(self): + # """test arithmetic multiplication""" + # wc_client = TestBigqueryOperations.wc_client + # output_name = "arithmetic_mul" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "mul", + # "operands": ["measure1", "measure2"], + # "output_column_name": "mul_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestBigqueryOperations.test_project_dir, + # ) + + # TestBigqueryOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "mul_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["mul_col"] + # == table_data[0]["measure1"] * table_data[0]["measure2"] + # ) def test_arithmetic_div(self): """test arithmetic division""" @@ -390,6 +397,9 @@ def test_arithmetic_div(self): cols = wc_client.get_table_columns("pytest_intermediate", output_name) assert "div_col" in cols table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert math.ceil(table_data[0]["div_col"]) == math.ceil( - table_data[0]["measure1"] / table_data[0]["measure2"] + assert ( + math.ceil(table_data[0]["div_col"]) + == math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + if table_data[0]["measure2"] != 0 + else None ) diff --git a/tests/warehouse/test_postgres_ops.py b/tests/warehouse/test_postgres_ops.py index fa219bd..7d897bb 100644 --- a/tests/warehouse/test_postgres_ops.py +++ b/tests/warehouse/test_postgres_ops.py @@ -41,20 +41,27 @@ class TestPostgresOperations: @staticmethod def execute_dbt(cmd: str, select_model: str = None): - select_cli = ["--select", select_model] if select_model is not None else [] - subprocess.call( - [ - Path(TestPostgresOperations.test_project_dir) / "venv" / "bin" / "dbt", - cmd, - ] - + select_cli - + [ - "--project-dir", - TestPostgresOperations.test_project_dir, - "--profiles-dir", - TestPostgresOperations.test_project_dir, - ], - ) + try: + select_cli = ["--select", select_model] if select_model is not None else [] + subprocess.check_call( + [ + Path(TestPostgresOperations.test_project_dir) + / "venv" + / "bin" + / "dbt", + cmd, + ] + + select_cli + + [ + "--project-dir", + TestPostgresOperations.test_project_dir, + "--profiles-dir", + TestPostgresOperations.test_project_dir, + ], + ) + except subprocess.CalledProcessError as e: + logger.error(f"dbt {cmd} failed with {e.returncode}") + raise Exception(f"Something went wrong while running dbt {cmd}") def test_scaffold(self, tmpdir): """This will setup the dbt repo to run dbt commands after running a test operation""" @@ -393,6 +400,9 @@ def test_arithmetic_div(self): cols = wc_client.get_table_columns("pytest_intermediate", output_name) assert "div_col" in cols table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert math.ceil(table_data[0]["div_col"]) == math.ceil( - table_data[0]["measure1"] / table_data[0]["measure2"] + assert ( + math.ceil(table_data[0]["div_col"]) + == math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + if table_data[0]["measure2"] != 0 + else None ) From 57a7a13a6914dd5790531b2995d52de50d5c3887 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 19:25:06 +0530 Subject: [PATCH 52/58] regex extract operation test cases --- dbt_automation/operations/regexextraction.py | 4 +- tests/warehouse/test_bigquery_ops.py | 482 ++++++++++--------- tests/warehouse/test_postgres_ops.py | 46 +- 3 files changed, 308 insertions(+), 224 deletions(-) diff --git a/dbt_automation/operations/regexextraction.py b/dbt_automation/operations/regexextraction.py index 1e8d581..b552914 100644 --- a/dbt_automation/operations/regexextraction.py +++ b/dbt_automation/operations/regexextraction.py @@ -13,7 +13,9 @@ def regex_extraction(config: dict, warehouse, project_dir: str): dbtproject = dbtProject(project_dir) dbtproject.ensure_models_dir(dest_schema) - model_code = '{{ config(materialized="table") }}\n\nSELECT ' + model_code = ( + f"{{{{ config(materialized='table', schema='{dest_schema}') }}}}\n\nSELECT " + ) for col_name, regex in columns.items(): if warehouse.name == "postgres": diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index b22d0cf..4b7dec5 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -14,6 +14,7 @@ from dbt_automation.operations.concatcolumns import concat_columns from dbt_automation.operations.arithmetic import arithmetic from dbt_automation.operations.castdatatypes import cast_datatypes +from dbt_automation.operations.regexextraction import regex_extraction basicConfig(level=INFO) @@ -114,136 +115,136 @@ def test_flatten(self): "pytest_intermediate" ) - # def test_rename_columns(self): - # """test rename_columns for sample seed data""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "rename" - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": {"NGO": "ngo", "Month": "month"}, - # } - - # rename_columns( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "ngo" in cols - # assert "month" in cols - # assert "NGO" not in cols - # assert "MONTH" not in cols - - # def test_drop_columns(self): - # """test drop_columns""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "drop" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": ["MONTH"], - # } - - # drop_columns( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "MONTH" not in cols - - # def test_coalescecolumns(self): - # """test coalescecolumns""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "coalesce" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": [ - # { - # "columnname": "NGO", - # }, - # { - # "columnname": "SPOC", - # }, - # ], - # "output_column_name": "ngo_spoc", - # } - - # coalesce_columns( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "ngo_spoc" in cols - # col_data = wc_client.get_table_data("pytest_intermediate", output_name, 5) - # col_data_original = wc_client.get_table_data("pytest_intermediate", "Sheet1", 5) - # col_data_original.sort(key=lambda x: x["_airbyte_ab_id"]) - # col_data.sort(key=lambda x: x["_airbyte_ab_id"]) - # # TODO: can do a stronger check here; by checking on rows in a loop - # assert ( - # col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] - # if col_data_original[0]["NGO"] is not None - # else col_data_original[0]["SPOC"] - # ) - - # def test_concatcolumns(self): - # """test concatcolumns""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "concat" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": [ - # { - # "name": "NGO", - # "is_col": "yes", - # }, - # { - # "name": "SPOC", - # "is_col": "yes", - # }, - # { - # "name": "test", - # "is_col": "no", - # }, - # ], - # "output_column_name": "concat_col", - # } - - # concat_columns( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "concat_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["concat_col"] - # == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" - # ) + def test_rename_columns(self): + """test rename_columns for sample seed data""" + wc_client = TestBigqueryOperations.wc_client + output_name = "rename" + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "ngo", "Month": "month"}, + } + + rename_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo" in cols + assert "month" in cols + assert "NGO" not in cols + assert "MONTH" not in cols + + def test_drop_columns(self): + """test drop_columns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "drop" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": ["MONTH"], + } + + drop_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "MONTH" not in cols + + def test_coalescecolumns(self): + """test coalescecolumns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "coalesce" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "NGO", + }, + { + "columnname": "SPOC", + }, + ], + "output_column_name": "ngo_spoc", + } + + coalesce_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo_spoc" in cols + col_data = wc_client.get_table_data("pytest_intermediate", output_name, 5) + col_data_original = wc_client.get_table_data("pytest_intermediate", "Sheet1", 5) + col_data_original.sort(key=lambda x: x["_airbyte_ab_id"]) + col_data.sort(key=lambda x: x["_airbyte_ab_id"]) + # TODO: can do a stronger check here; by checking on rows in a loop + assert ( + col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + if col_data_original[0]["NGO"] is not None + else col_data_original[0]["SPOC"] + ) + + def test_concatcolumns(self): + """test concatcolumns""" + wc_client = TestBigqueryOperations.wc_client + output_name = "concat" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "name": "NGO", + "is_col": "yes", + }, + { + "name": "SPOC", + "is_col": "yes", + }, + { + "name": "test", + "is_col": "no", + }, + ], + "output_column_name": "concat_col", + } + + concat_columns( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "concat_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["concat_col"] + == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + ) def test_castdatatypes(self): """test castdatatypes""" @@ -282,95 +283,95 @@ def test_castdatatypes(self): assert type(table_data[0]["measure1"]) == int assert type(table_data[0]["measure2"]) == int - # def test_arithmetic_add(self): - # """test arithmetic addition""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "arithmetic_add" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "add", - # "operands": ["measure1", "measure2"], - # "output_column_name": "add_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "add_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["add_col"] - # == table_data[0]["measure1"] + table_data[0]["measure2"] - # ) - - # def test_arithmetic_sub(self): - # """test arithmetic subtraction""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "arithmetic_sub" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "sub", - # "operands": ["measure1", "measure2"], - # "output_column_name": "sub_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "sub_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["sub_col"] - # == table_data[0]["measure1"] - table_data[0]["measure2"] - # ) - - # def test_arithmetic_mul(self): - # """test arithmetic multiplication""" - # wc_client = TestBigqueryOperations.wc_client - # output_name = "arithmetic_mul" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "mul", - # "operands": ["measure1", "measure2"], - # "output_column_name": "mul_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestBigqueryOperations.test_project_dir, - # ) - - # TestBigqueryOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "mul_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["mul_col"] - # == table_data[0]["measure1"] * table_data[0]["measure2"] - # ) + def test_arithmetic_add(self): + """test arithmetic addition""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_add" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "add", + "operands": ["measure1", "measure2"], + "output_column_name": "add_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "add_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["add_col"] + == table_data[0]["measure1"] + table_data[0]["measure2"] + ) + + def test_arithmetic_sub(self): + """test arithmetic subtraction""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_sub" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "sub", + "operands": ["measure1", "measure2"], + "output_column_name": "sub_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "sub_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["sub_col"] + == table_data[0]["measure1"] - table_data[0]["measure2"] + ) + + def test_arithmetic_mul(self): + """test arithmetic multiplication""" + wc_client = TestBigqueryOperations.wc_client + output_name = "arithmetic_mul" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "mul", + "operands": ["measure1", "measure2"], + "output_column_name": "mul_col", + } + + arithmetic( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "mul_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["mul_col"] + == table_data[0]["measure1"] * table_data[0]["measure2"] + ) def test_arithmetic_div(self): """test arithmetic division""" @@ -398,8 +399,47 @@ def test_arithmetic_div(self): assert "div_col" in cols table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) assert ( - math.ceil(table_data[0]["div_col"]) - == math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) if table_data[0]["measure2"] != 0 else None + == ( + math.ceil(table_data[0]["div_col"]) + if table_data[0]["div_col"] is not None + else None + ) ) + + def test_regexextract(self): + """test regex extraction""" + wc_client = TestBigqueryOperations.wc_client + output_name = "regex_ext" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "^[C].*"}, + } + + regex_extraction( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "NGO" in cols + table_data_org = wc_client.get_table_data("pytest_intermediate", "Sheet1", 10) + table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) + table_data_regex = wc_client.get_table_data( + "pytest_intermediate", output_name, 10 + ) + table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) + for regex, org in zip(table_data_regex, table_data_org): + assert ( + regex["NGO"] == org["NGO"] + if org["NGO"].startswith("C") + else (regex["NGO"] is None) + ) diff --git a/tests/warehouse/test_postgres_ops.py b/tests/warehouse/test_postgres_ops.py index 7d897bb..6ad9aef 100644 --- a/tests/warehouse/test_postgres_ops.py +++ b/tests/warehouse/test_postgres_ops.py @@ -14,6 +14,7 @@ from dbt_automation.operations.arithmetic import arithmetic from dbt_automation.operations.castdatatypes import cast_datatypes from dbt_automation.utils.columnutils import quote_columnname +from dbt_automation.operations.regexextraction import regex_extraction basicConfig(level=INFO) @@ -401,8 +402,49 @@ def test_arithmetic_div(self): assert "div_col" in cols table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) assert ( - math.ceil(table_data[0]["div_col"]) - == math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) if table_data[0]["measure2"] != 0 else None + == ( + math.ceil(table_data[0]["div_col"]) + if table_data[0]["div_col"] is not None + else None + ) ) + + def test_regexextract(self): + """test regex extraction""" + wc_client = TestPostgresOperations.wc_client + output_name = "regex_ext" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "^[C].*"}, + } + + regex_extraction( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "NGO" in cols + table_data_org = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 10 + ) + table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) + table_data_regex = wc_client.get_table_data( + "pytest_intermediate", output_name, 10 + ) + table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) + for regex, org in zip(table_data_regex, table_data_org): + assert ( + regex["NGO"] == org["NGO"] + if org["NGO"].startswith("C") + else (regex["NGO"] is None) + ) From e053c5da362c3ce1a66b97c22578c14d3e2fd488 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 19:35:45 +0530 Subject: [PATCH 53/58] seeding two tables --- .gitignore | 1 + seeds/sample_sheet2.json | 27 +++++ seeds/seed.py | 214 ++++++++++++++++++++------------------- 3 files changed, 137 insertions(+), 105 deletions(-) create mode 100644 seeds/sample_sheet2.json diff --git a/.gitignore b/.gitignore index fb151ac..04b7133 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ share/python-wheels/ MANIFEST *.json !sample_sheet1.json +!sample_sheet2.json # Unit test / coverage reports htmlcov/ diff --git a/seeds/sample_sheet2.json b/seeds/sample_sheet2.json new file mode 100644 index 0000000..d969cde --- /dev/null +++ b/seeds/sample_sheet2.json @@ -0,0 +1,27 @@ +[ + { + "_airbyte_ab_id": "006b18b2-cccd-47f1-a9dc-5638d2d1abc7", + "_airbyte_data": "{\"NGO\": \"IMAGE\", \"SPOC\": \"SPOC C\", \"Month\": \"12/31/2022\", \"measure1\": \"183\", \"measure2\": \"183\", \"Indicator\": \"# of deliveries with an SBA in targeted communities\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "009a7823-c119-4837-89a2-2c5808428d84", + "_airbyte_data": "{\"NGO\": \"FDSR\", \"SPOC\": \"SPOC B\", \"Month\": \"12/31/2022\", \"measure1\": \"937\", \"measure2\": \"41\", \"Indicator\": \"# of newborns born in supported clinics and catchment area receiving immediate newborn care (within 72 hours)\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + }, + { + "_airbyte_ab_id": "0213d8fd-ea0b-447e-8d59-7ecbd7396b7c", + "_airbyte_data": "{\"NGO\": \"CRC\", \"SPOC\": \"SPOC A\", \"Month\": \"11/30/2022\", \"measure1\": \"41\", \"measure2\": \"0\", \"Indicator\": \"% of service contacts who qualify as poor\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "033b0d74-cb2c-4edf-b586-90afe497cad9", + "_airbyte_data": "{\"NGO\": \"BAMANEH\", \"SPOC\": \"SPOC A\", \"Month\": \"12/31/2022\", \"measure1\": \"0\", \"measure2\": \"2308\", \"Indicator\": \"# of Pregnant & Lactating Women prescribed with 30IFA\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:16+00" + }, + { + "_airbyte_ab_id": "039b3d53-dadd-4a56-aed1-93ff8c39f259", + "_airbyte_data": "{\"NGO\": \"JTS\", \"SPOC\": \"SPOC C\", \"Month\": \"10/31/2022\", \"measure1\": \"2308\", \"measure2\": \"500\", \"Indicator\": \"ANC First visit\"}", + "_airbyte_emitted_at": "2023-09-28 08:50:17+00" + } +] \ No newline at end of file diff --git a/seeds/seed.py b/seeds/seed.py index 62f8d00..0559e3c 100644 --- a/seeds/seed.py +++ b/seeds/seed.py @@ -24,113 +24,117 @@ tablename = "_airbyte_raw_Sheet1" json_file = "seeds/sample_sheet1.json" -data = [] -with open(json_file, "r") as file: - data = json.load(file) - -columns = ["_airbyte_ab_id", "_airbyte_data", "_airbyte_emitted_at"] - -# schema check; expecting only airbyte raw data -for row in data: - schema_check = [True if key in columns else False for key in row.keys()] - if all(schema_check) is False: - raise Exception("Schema mismatch") - - -if args.warehouse == "postgres": - logger.info("Found postgres warehouse") - conn_info = { - "host": os.getenv("TEST_PG_DBHOST"), - "port": os.getenv("TEST_PG_DBPORT"), - "username": os.getenv("TEST_PG_DBUSER"), - "database": os.getenv("TEST_PG_DBNAME"), - "password": os.getenv("TEST_PG_DBPASSWORD"), - } - schema = os.getenv("TEST_PG_DBSCHEMA_SRC") - - wc_client = get_client(args.warehouse, conn_info) - - create_schema_query = f""" - CREATE SCHEMA IF NOT EXISTS {schema}; - """ - create_table_query = f""" - CREATE TABLE IF NOT EXISTS {schema}."{tablename}" - ( - _airbyte_ab_id character varying, - _airbyte_data jsonb, - _airbyte_emitted_at timestamp with time zone - ); - """ - truncate_table_query = f""" - TRUNCATE TABLE {schema}."{tablename}"; - """ - - wc_client.runcmd(create_schema_query) - wc_client.runcmd(create_table_query) - wc_client.runcmd(truncate_table_query) - - """ - INSERT INTO your_table_name (column1, column2, column3, ...) - VALUES ({}, {}, {}, ...); - """ - # seed sample json data into the newly table created - logger.info("seeding sample json data") +for json_file, tablename in zip( + ["seeds/sample_sheet1.json", "seeds/sample_sheet2.json"], + ["_airbyte_raw_Sheet1", "_airbyte_raw_Sheet2"], +): + logger.info("seeding %s into %s", json_file, tablename) + + data = [] + with open(json_file, "r") as file: + data = json.load(file) + + columns = ["_airbyte_ab_id", "_airbyte_data", "_airbyte_emitted_at"] + + # schema check; expecting only airbyte raw data for row in data: - # Execute the insert query with the data from the CSV - insert_query = f"""INSERT INTO {schema}."{tablename}" ({', '.join(columns)}) VALUES ('{row['_airbyte_ab_id']}', JSON '{row['_airbyte_data']}', '{row['_airbyte_emitted_at']}')""" - wc_client.runcmd(insert_query) - - -if args.warehouse == "bigquery": - logger.info("Found bigquery warehouse") - conn_info = json.loads(os.getenv("TEST_BG_SERVICEJSON")) - location = os.getenv("TEST_BG_LOCATION") - test_dataset = os.getenv("TEST_BG_DATASET_SRC") - - wc_client = get_client(args.warehouse, conn_info) - - # create the dataset if it does not exist - dataset = bigquery.Dataset(f"{conn_info['project_id']}.{test_dataset}") - dataset.location = location - - logger.info("creating the dataset") - dataset = wc_client.bqclient.create_dataset(dataset, timeout=30, exists_ok=True) - logger.info("created dataset : {}".format(dataset.dataset_id)) - - # create the staging table if its does not exist - table_schema = [ - bigquery.SchemaField("_airbyte_ab_id", "STRING", mode="REQUIRED"), - bigquery.SchemaField("_airbyte_data", "STRING", mode="REQUIRED"), - bigquery.SchemaField("_airbyte_emitted_at", "TIMESTAMP", mode="REQUIRED"), - ] - table = bigquery.Table( - f"{conn_info['project_id']}.{dataset.dataset_id}.{tablename}", - schema=table_schema, - ) - wc_client.bqclient.create_table(table, exists_ok=True) - - # truncate data to (re-)seed fresh data - truncate_table_query = f""" - DELETE FROM `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` - WHERE true; - """ - - wc_client.execute(truncate_table_query) - - # seed data - insert_query = f""" - INSERT INTO `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` (_airbyte_ab_id, _airbyte_data, _airbyte_emitted_at) - VALUES - """ - insert_query_values = ",".join( - [ - f"""('{row["_airbyte_ab_id"]}', '{row["_airbyte_data"]}', '{row["_airbyte_emitted_at"]}')""" - for row in data + schema_check = [True if key in columns else False for key in row.keys()] + if all(schema_check) is False: + raise Exception("Schema mismatch") + + if args.warehouse == "postgres": + logger.info("Found postgres warehouse") + conn_info = { + "host": os.getenv("TEST_PG_DBHOST"), + "port": os.getenv("TEST_PG_DBPORT"), + "username": os.getenv("TEST_PG_DBUSER"), + "database": os.getenv("TEST_PG_DBNAME"), + "password": os.getenv("TEST_PG_DBPASSWORD"), + } + schema = os.getenv("TEST_PG_DBSCHEMA_SRC") + + wc_client = get_client(args.warehouse, conn_info) + + create_schema_query = f""" + CREATE SCHEMA IF NOT EXISTS {schema}; + """ + create_table_query = f""" + CREATE TABLE IF NOT EXISTS {schema}."{tablename}" + ( + _airbyte_ab_id character varying, + _airbyte_data jsonb, + _airbyte_emitted_at timestamp with time zone + ); + """ + truncate_table_query = f""" + TRUNCATE TABLE {schema}."{tablename}"; + """ + + wc_client.runcmd(create_schema_query) + wc_client.runcmd(create_table_query) + wc_client.runcmd(truncate_table_query) + + """ + INSERT INTO your_table_name (column1, column2, column3, ...) + VALUES ({}, {}, {}, ...); + """ + # seed sample json data into the newly table created + logger.info("seeding sample json data") + for row in data: + # Execute the insert query with the data from the CSV + insert_query = f"""INSERT INTO {schema}."{tablename}" ({', '.join(columns)}) VALUES ('{row['_airbyte_ab_id']}', JSON '{row['_airbyte_data']}', '{row['_airbyte_emitted_at']}')""" + wc_client.runcmd(insert_query) + + if args.warehouse == "bigquery": + logger.info("Found bigquery warehouse") + conn_info = json.loads(os.getenv("TEST_BG_SERVICEJSON")) + location = os.getenv("TEST_BG_LOCATION") + test_dataset = os.getenv("TEST_BG_DATASET_SRC") + + wc_client = get_client(args.warehouse, conn_info) + + # create the dataset if it does not exist + dataset = bigquery.Dataset(f"{conn_info['project_id']}.{test_dataset}") + dataset.location = location + + logger.info("creating the dataset") + dataset = wc_client.bqclient.create_dataset(dataset, timeout=30, exists_ok=True) + logger.info("created dataset : {}".format(dataset.dataset_id)) + + # create the staging table if its does not exist + table_schema = [ + bigquery.SchemaField("_airbyte_ab_id", "STRING", mode="REQUIRED"), + bigquery.SchemaField("_airbyte_data", "STRING", mode="REQUIRED"), + bigquery.SchemaField("_airbyte_emitted_at", "TIMESTAMP", mode="REQUIRED"), ] - ) - insert_query += insert_query_values - - wc_client.execute(insert_query) + table = bigquery.Table( + f"{conn_info['project_id']}.{dataset.dataset_id}.{tablename}", + schema=table_schema, + ) + wc_client.bqclient.create_table(table, exists_ok=True) + + # truncate data to (re-)seed fresh data + truncate_table_query = f""" + DELETE FROM `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` + WHERE true; + """ + + wc_client.execute(truncate_table_query) + + # seed data + insert_query = f""" + INSERT INTO `{conn_info['project_id']}.{dataset.dataset_id}.{tablename}` (_airbyte_ab_id, _airbyte_data, _airbyte_emitted_at) + VALUES + """ + insert_query_values = ",".join( + [ + f"""('{row["_airbyte_ab_id"]}', '{row["_airbyte_data"]}', '{row["_airbyte_emitted_at"]}')""" + for row in data + ] + ) + insert_query += insert_query_values + + wc_client.execute(insert_query) wc_client.close() From 471447de9d5e09b933209db7a2df98fc98be5860 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 19:49:48 +0530 Subject: [PATCH 54/58] union tables test cases --- dbt_automation/operations/mergetables.py | 2 +- tests/warehouse/test_bigquery_ops.py | 28 + tests/warehouse/test_postgres_ops.py | 656 ++++++++++++----------- 3 files changed, 375 insertions(+), 311 deletions(-) diff --git a/dbt_automation/operations/mergetables.py b/dbt_automation/operations/mergetables.py index 6d2aa81..04f3471 100644 --- a/dbt_automation/operations/mergetables.py +++ b/dbt_automation/operations/mergetables.py @@ -42,7 +42,7 @@ def union_tables(config, warehouse, project_dir): relations += f"ref('{tablename}')," relations = relations[:-1] relations += "]" - union_code = "{{ config(materialized='table',) }}\n" + union_code = f"{{{{ config(materialized='table',schema='{dest_schema}') }}}}\n" # pylint:disable=consider-using-f-string union_code += "{{ dbt_utils.union_relations(" union_code += f"relations={relations}" diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index 4b7dec5..0b74280 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -15,6 +15,7 @@ from dbt_automation.operations.arithmetic import arithmetic from dbt_automation.operations.castdatatypes import cast_datatypes from dbt_automation.operations.regexextraction import regex_extraction +from dbt_automation.operations.mergetables import union_tables basicConfig(level=INFO) @@ -443,3 +444,30 @@ def test_regexextract(self): if org["NGO"].startswith("C") else (regex["NGO"] is None) ) + + def test_mergetables(self): + """test merge tables""" + wc_client = TestBigqueryOperations.wc_client + output_name = "union" + + config = { + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "tablenames": ["Sheet1", "Sheet2"], + } + + union_tables( + config, + wc_client, + TestBigqueryOperations.test_project_dir, + ) + + TestBigqueryOperations.execute_dbt("run", output_name) + + table_data1 = wc_client.get_table_data("pytest_intermediate", "Sheet1", 10) + table_data2 = wc_client.get_table_data("pytest_intermediate", "Sheet2", 10) + table_data_union = wc_client.get_table_data( + "pytest_intermediate", output_name, 10 + ) + + assert len(table_data1) + len(table_data2) == len(table_data_union) diff --git a/tests/warehouse/test_postgres_ops.py b/tests/warehouse/test_postgres_ops.py index 6ad9aef..47ed81c 100644 --- a/tests/warehouse/test_postgres_ops.py +++ b/tests/warehouse/test_postgres_ops.py @@ -15,6 +15,7 @@ from dbt_automation.operations.castdatatypes import cast_datatypes from dbt_automation.utils.columnutils import quote_columnname from dbt_automation.operations.regexextraction import regex_extraction +from dbt_automation.operations.mergetables import union_tables basicConfig(level=INFO) @@ -111,6 +112,7 @@ def test_flatten(self): TestPostgresOperations.test_project_dir, ) TestPostgresOperations.execute_dbt("run", "Sheet1") + TestPostgresOperations.execute_dbt("run", "Sheet2") logger.info("inside test flatten") logger.info( f"inside project directory : {TestPostgresOperations.test_project_dir}" @@ -118,313 +120,352 @@ def test_flatten(self): assert "Sheet1" in TestPostgresOperations.wc_client.get_tables( "pytest_intermediate" ) - - def test_rename_columns(self): - """test rename_columns for sample seed data""" - wc_client = TestPostgresOperations.wc_client - output_name = "rename" - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": {"NGO": "ngo", "Month": "month"}, - } - - rename_columns( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "ngo" in cols - assert "month" in cols - assert "NGO" not in cols - assert "MONTH" not in cols - - def test_drop_columns(self): - """test drop_columns""" - wc_client = TestPostgresOperations.wc_client - output_name = "drop" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": ["MONTH"], - } - - drop_columns( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "MONTH" not in cols - - def test_coalescecolumns(self): - """test coalescecolumns""" - wc_client = TestPostgresOperations.wc_client - output_name = "coalesce" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": [ - { - "columnname": "NGO", - }, - { - "columnname": "SPOC", - }, - ], - "output_column_name": "ngo_spoc", - } - - coalesce_columns( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "ngo_spoc" in cols - col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - col_data_original = wc_client.get_table_data( - "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 - ) - assert ( - col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] - if col_data_original[0]["NGO"] is not None - else col_data_original[0]["SPOC"] - ) - - def test_concatcolumns(self): - """test concatcolumns""" - wc_client = TestPostgresOperations.wc_client - output_name = "concat" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": [ - { - "name": "NGO", - "is_col": "yes", - }, - { - "name": "SPOC", - "is_col": "yes", - }, - { - "name": "test", - "is_col": "no", - }, - ], - "output_column_name": "concat_col", - } - - concat_columns( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "concat_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["concat_col"] - == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" - ) - - def test_castdatatypes(self): - """test castdatatypes""" - wc_client = TestPostgresOperations.wc_client - output_name = "cast" - - config = { - "input_name": "Sheet1", - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "columns": [ - { - "columnname": "measure1", - "columntype": "int", - }, - { - "columnname": "measure2", - "columntype": "int", - }, - ], - } - - cast_datatypes( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "measure1" in cols - assert "measure2" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert - assert type(table_data[0]["measure1"]) == int - assert type(table_data[0]["measure2"]) == int - - def test_arithmetic_add(self): - """test arithmetic addition""" - wc_client = TestPostgresOperations.wc_client - output_name = "arithmetic_add" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "add", - "operands": ["measure1", "measure2"], - "output_column_name": "add_col", - } - - arithmetic( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "add_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["add_col"] - == table_data[0]["measure1"] + table_data[0]["measure2"] - ) - - def test_arithmetic_sub(self): - """test arithmetic subtraction""" - wc_client = TestPostgresOperations.wc_client - output_name = "arithmetic_sub" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "sub", - "operands": ["measure1", "measure2"], - "output_column_name": "sub_col", - } - - arithmetic( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "sub_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["sub_col"] - == table_data[0]["measure1"] - table_data[0]["measure2"] - ) - - def test_arithmetic_mul(self): - """test arithmetic multiplication""" - wc_client = TestPostgresOperations.wc_client - output_name = "arithmetic_mul" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "mul", - "operands": ["measure1", "measure2"], - "output_column_name": "mul_col", - } - - arithmetic( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "mul_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - table_data[0]["mul_col"] - == table_data[0]["measure1"] * table_data[0]["measure2"] - ) - - def test_arithmetic_div(self): - """test arithmetic division""" - wc_client = TestPostgresOperations.wc_client - output_name = "arithmetic_div" - - config = { - "input_name": "cast", # from previous operation - "dest_schema": "pytest_intermediate", - "output_name": output_name, - "operator": "div", - "operands": ["measure1", "measure2"], - "output_column_name": "div_col", - } - - arithmetic( - config, - wc_client, - TestPostgresOperations.test_project_dir, - ) - - TestPostgresOperations.execute_dbt("run", output_name) - - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "div_col" in cols - table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - assert ( - math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) - if table_data[0]["measure2"] != 0 - else None - == ( - math.ceil(table_data[0]["div_col"]) - if table_data[0]["div_col"] is not None - else None - ) + assert "Sheet2" in TestPostgresOperations.wc_client.get_tables( + "pytest_intermediate" ) - def test_regexextract(self): - """test regex extraction""" + # def test_rename_columns(self): + # """test rename_columns for sample seed data""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "rename" + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": {"NGO": "ngo", "Month": "month"}, + # } + + # rename_columns( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "ngo" in cols + # assert "month" in cols + # assert "NGO" not in cols + # assert "MONTH" not in cols + + # def test_drop_columns(self): + # """test drop_columns""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "drop" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": ["MONTH"], + # } + + # drop_columns( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "MONTH" not in cols + + # def test_coalescecolumns(self): + # """test coalescecolumns""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "coalesce" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": [ + # { + # "columnname": "NGO", + # }, + # { + # "columnname": "SPOC", + # }, + # ], + # "output_column_name": "ngo_spoc", + # } + + # coalesce_columns( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "ngo_spoc" in cols + # col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # col_data_original = wc_client.get_table_data( + # "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 + # ) + # assert ( + # col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + # if col_data_original[0]["NGO"] is not None + # else col_data_original[0]["SPOC"] + # ) + + # def test_concatcolumns(self): + # """test concatcolumns""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "concat" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": [ + # { + # "name": "NGO", + # "is_col": "yes", + # }, + # { + # "name": "SPOC", + # "is_col": "yes", + # }, + # { + # "name": "test", + # "is_col": "no", + # }, + # ], + # "output_column_name": "concat_col", + # } + + # concat_columns( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "concat_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["concat_col"] + # == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + # ) + + # def test_castdatatypes(self): + # """test castdatatypes""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "cast" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": [ + # { + # "columnname": "measure1", + # "columntype": "int", + # }, + # { + # "columnname": "measure2", + # "columntype": "int", + # }, + # ], + # } + + # cast_datatypes( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "measure1" in cols + # assert "measure2" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert + # assert type(table_data[0]["measure1"]) == int + # assert type(table_data[0]["measure2"]) == int + + # def test_arithmetic_add(self): + # """test arithmetic addition""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "arithmetic_add" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "add", + # "operands": ["measure1", "measure2"], + # "output_column_name": "add_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "add_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["add_col"] + # == table_data[0]["measure1"] + table_data[0]["measure2"] + # ) + + # def test_arithmetic_sub(self): + # """test arithmetic subtraction""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "arithmetic_sub" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "sub", + # "operands": ["measure1", "measure2"], + # "output_column_name": "sub_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "sub_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["sub_col"] + # == table_data[0]["measure1"] - table_data[0]["measure2"] + # ) + + # def test_arithmetic_mul(self): + # """test arithmetic multiplication""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "arithmetic_mul" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "mul", + # "operands": ["measure1", "measure2"], + # "output_column_name": "mul_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "mul_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # table_data[0]["mul_col"] + # == table_data[0]["measure1"] * table_data[0]["measure2"] + # ) + + # def test_arithmetic_div(self): + # """test arithmetic division""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "arithmetic_div" + + # config = { + # "input_name": "cast", # from previous operation + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "operator": "div", + # "operands": ["measure1", "measure2"], + # "output_column_name": "div_col", + # } + + # arithmetic( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "div_col" in cols + # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # assert ( + # math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + # if table_data[0]["measure2"] != 0 + # else None + # == ( + # math.ceil(table_data[0]["div_col"]) + # if table_data[0]["div_col"] is not None + # else None + # ) + # ) + + # def test_regexextract(self): + # """test regex extraction""" + # wc_client = TestPostgresOperations.wc_client + # output_name = "regex_ext" + + # config = { + # "input_name": "Sheet1", + # "dest_schema": "pytest_intermediate", + # "output_name": output_name, + # "columns": {"NGO": "^[C].*"}, + # } + + # regex_extraction( + # config, + # wc_client, + # TestPostgresOperations.test_project_dir, + # ) + + # TestPostgresOperations.execute_dbt("run", output_name) + + # cols = wc_client.get_table_columns("pytest_intermediate", output_name) + # assert "NGO" in cols + # table_data_org = wc_client.get_table_data( + # "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 10 + # ) + # table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) + # table_data_regex = wc_client.get_table_data( + # "pytest_intermediate", output_name, 10 + # ) + # table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) + # for regex, org in zip(table_data_regex, table_data_org): + # assert ( + # regex["NGO"] == org["NGO"] + # if org["NGO"].startswith("C") + # else (regex["NGO"] is None) + # ) + + def test_mergetables(self): + """test merge tables""" wc_client = TestPostgresOperations.wc_client - output_name = "regex_ext" + output_name = "union" config = { - "input_name": "Sheet1", "dest_schema": "pytest_intermediate", "output_name": output_name, - "columns": {"NGO": "^[C].*"}, + "tablenames": ["Sheet1", "Sheet2"], } - regex_extraction( + union_tables( config, wc_client, TestPostgresOperations.test_project_dir, @@ -432,19 +473,14 @@ def test_regexextract(self): TestPostgresOperations.execute_dbt("run", output_name) - cols = wc_client.get_table_columns("pytest_intermediate", output_name) - assert "NGO" in cols - table_data_org = wc_client.get_table_data( + table_data1 = wc_client.get_table_data( "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 10 ) - table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) - table_data_regex = wc_client.get_table_data( + table_data2 = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet2", "postgres"), 10 + ) + table_data_union = wc_client.get_table_data( "pytest_intermediate", output_name, 10 ) - table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) - for regex, org in zip(table_data_regex, table_data_org): - assert ( - regex["NGO"] == org["NGO"] - if org["NGO"].startswith("C") - else (regex["NGO"] is None) - ) + + assert len(table_data1) + len(table_data2) == len(table_data_union) From 3c00e667a6ff37bdf76a5b1129225ba4cd8d7e7c Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 19:50:38 +0530 Subject: [PATCH 55/58] uncomment --- tests/warehouse/test_postgres_ops.py | 658 +++++++++++++-------------- 1 file changed, 329 insertions(+), 329 deletions(-) diff --git a/tests/warehouse/test_postgres_ops.py b/tests/warehouse/test_postgres_ops.py index 47ed81c..687ac7b 100644 --- a/tests/warehouse/test_postgres_ops.py +++ b/tests/warehouse/test_postgres_ops.py @@ -124,335 +124,335 @@ def test_flatten(self): "pytest_intermediate" ) - # def test_rename_columns(self): - # """test rename_columns for sample seed data""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "rename" - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": {"NGO": "ngo", "Month": "month"}, - # } - - # rename_columns( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "ngo" in cols - # assert "month" in cols - # assert "NGO" not in cols - # assert "MONTH" not in cols - - # def test_drop_columns(self): - # """test drop_columns""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "drop" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": ["MONTH"], - # } - - # drop_columns( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "MONTH" not in cols - - # def test_coalescecolumns(self): - # """test coalescecolumns""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "coalesce" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": [ - # { - # "columnname": "NGO", - # }, - # { - # "columnname": "SPOC", - # }, - # ], - # "output_column_name": "ngo_spoc", - # } - - # coalesce_columns( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "ngo_spoc" in cols - # col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # col_data_original = wc_client.get_table_data( - # "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 - # ) - # assert ( - # col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] - # if col_data_original[0]["NGO"] is not None - # else col_data_original[0]["SPOC"] - # ) - - # def test_concatcolumns(self): - # """test concatcolumns""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "concat" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": [ - # { - # "name": "NGO", - # "is_col": "yes", - # }, - # { - # "name": "SPOC", - # "is_col": "yes", - # }, - # { - # "name": "test", - # "is_col": "no", - # }, - # ], - # "output_column_name": "concat_col", - # } - - # concat_columns( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "concat_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["concat_col"] - # == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" - # ) - - # def test_castdatatypes(self): - # """test castdatatypes""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "cast" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": [ - # { - # "columnname": "measure1", - # "columntype": "int", - # }, - # { - # "columnname": "measure2", - # "columntype": "int", - # }, - # ], - # } - - # cast_datatypes( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "measure1" in cols - # assert "measure2" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert - # assert type(table_data[0]["measure1"]) == int - # assert type(table_data[0]["measure2"]) == int - - # def test_arithmetic_add(self): - # """test arithmetic addition""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "arithmetic_add" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "add", - # "operands": ["measure1", "measure2"], - # "output_column_name": "add_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "add_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["add_col"] - # == table_data[0]["measure1"] + table_data[0]["measure2"] - # ) - - # def test_arithmetic_sub(self): - # """test arithmetic subtraction""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "arithmetic_sub" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "sub", - # "operands": ["measure1", "measure2"], - # "output_column_name": "sub_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "sub_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["sub_col"] - # == table_data[0]["measure1"] - table_data[0]["measure2"] - # ) - - # def test_arithmetic_mul(self): - # """test arithmetic multiplication""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "arithmetic_mul" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "mul", - # "operands": ["measure1", "measure2"], - # "output_column_name": "mul_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "mul_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # table_data[0]["mul_col"] - # == table_data[0]["measure1"] * table_data[0]["measure2"] - # ) - - # def test_arithmetic_div(self): - # """test arithmetic division""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "arithmetic_div" - - # config = { - # "input_name": "cast", # from previous operation - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "operator": "div", - # "operands": ["measure1", "measure2"], - # "output_column_name": "div_col", - # } - - # arithmetic( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "div_col" in cols - # table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) - # assert ( - # math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) - # if table_data[0]["measure2"] != 0 - # else None - # == ( - # math.ceil(table_data[0]["div_col"]) - # if table_data[0]["div_col"] is not None - # else None - # ) - # ) - - # def test_regexextract(self): - # """test regex extraction""" - # wc_client = TestPostgresOperations.wc_client - # output_name = "regex_ext" - - # config = { - # "input_name": "Sheet1", - # "dest_schema": "pytest_intermediate", - # "output_name": output_name, - # "columns": {"NGO": "^[C].*"}, - # } - - # regex_extraction( - # config, - # wc_client, - # TestPostgresOperations.test_project_dir, - # ) - - # TestPostgresOperations.execute_dbt("run", output_name) - - # cols = wc_client.get_table_columns("pytest_intermediate", output_name) - # assert "NGO" in cols - # table_data_org = wc_client.get_table_data( - # "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 10 - # ) - # table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) - # table_data_regex = wc_client.get_table_data( - # "pytest_intermediate", output_name, 10 - # ) - # table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) - # for regex, org in zip(table_data_regex, table_data_org): - # assert ( - # regex["NGO"] == org["NGO"] - # if org["NGO"].startswith("C") - # else (regex["NGO"] is None) - # ) + def test_rename_columns(self): + """test rename_columns for sample seed data""" + wc_client = TestPostgresOperations.wc_client + output_name = "rename" + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "ngo", "Month": "month"}, + } + + rename_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo" in cols + assert "month" in cols + assert "NGO" not in cols + assert "MONTH" not in cols + + def test_drop_columns(self): + """test drop_columns""" + wc_client = TestPostgresOperations.wc_client + output_name = "drop" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": ["MONTH"], + } + + drop_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "MONTH" not in cols + + def test_coalescecolumns(self): + """test coalescecolumns""" + wc_client = TestPostgresOperations.wc_client + output_name = "coalesce" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "NGO", + }, + { + "columnname": "SPOC", + }, + ], + "output_column_name": "ngo_spoc", + } + + coalesce_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "ngo_spoc" in cols + col_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + col_data_original = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 1 + ) + assert ( + col_data[0]["ngo_spoc"] == col_data_original[0]["NGO"] + if col_data_original[0]["NGO"] is not None + else col_data_original[0]["SPOC"] + ) + + def test_concatcolumns(self): + """test concatcolumns""" + wc_client = TestPostgresOperations.wc_client + output_name = "concat" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "name": "NGO", + "is_col": "yes", + }, + { + "name": "SPOC", + "is_col": "yes", + }, + { + "name": "test", + "is_col": "no", + }, + ], + "output_column_name": "concat_col", + } + + concat_columns( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "concat_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["concat_col"] + == table_data[0]["NGO"] + table_data[0]["SPOC"] + "test" + ) + + def test_castdatatypes(self): + """test castdatatypes""" + wc_client = TestPostgresOperations.wc_client + output_name = "cast" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": [ + { + "columnname": "measure1", + "columntype": "int", + }, + { + "columnname": "measure2", + "columntype": "int", + }, + ], + } + + cast_datatypes( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "measure1" in cols + assert "measure2" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + # TODO: do stronger check here; fetch datatype from warehouse and then compare/assert + assert type(table_data[0]["measure1"]) == int + assert type(table_data[0]["measure2"]) == int + + def test_arithmetic_add(self): + """test arithmetic addition""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_add" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "add", + "operands": ["measure1", "measure2"], + "output_column_name": "add_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "add_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["add_col"] + == table_data[0]["measure1"] + table_data[0]["measure2"] + ) + + def test_arithmetic_sub(self): + """test arithmetic subtraction""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_sub" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "sub", + "operands": ["measure1", "measure2"], + "output_column_name": "sub_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "sub_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["sub_col"] + == table_data[0]["measure1"] - table_data[0]["measure2"] + ) + + def test_arithmetic_mul(self): + """test arithmetic multiplication""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_mul" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "mul", + "operands": ["measure1", "measure2"], + "output_column_name": "mul_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "mul_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + table_data[0]["mul_col"] + == table_data[0]["measure1"] * table_data[0]["measure2"] + ) + + def test_arithmetic_div(self): + """test arithmetic division""" + wc_client = TestPostgresOperations.wc_client + output_name = "arithmetic_div" + + config = { + "input_name": "cast", # from previous operation + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "operator": "div", + "operands": ["measure1", "measure2"], + "output_column_name": "div_col", + } + + arithmetic( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "div_col" in cols + table_data = wc_client.get_table_data("pytest_intermediate", output_name, 1) + assert ( + math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) + if table_data[0]["measure2"] != 0 + else None + == ( + math.ceil(table_data[0]["div_col"]) + if table_data[0]["div_col"] is not None + else None + ) + ) + + def test_regexextract(self): + """test regex extraction""" + wc_client = TestPostgresOperations.wc_client + output_name = "regex_ext" + + config = { + "input_name": "Sheet1", + "dest_schema": "pytest_intermediate", + "output_name": output_name, + "columns": {"NGO": "^[C].*"}, + } + + regex_extraction( + config, + wc_client, + TestPostgresOperations.test_project_dir, + ) + + TestPostgresOperations.execute_dbt("run", output_name) + + cols = wc_client.get_table_columns("pytest_intermediate", output_name) + assert "NGO" in cols + table_data_org = wc_client.get_table_data( + "pytest_intermediate", quote_columnname("Sheet1", "postgres"), 10 + ) + table_data_org.sort(key=lambda x: x["_airbyte_ab_id"]) + table_data_regex = wc_client.get_table_data( + "pytest_intermediate", output_name, 10 + ) + table_data_regex.sort(key=lambda x: x["_airbyte_ab_id"]) + for regex, org in zip(table_data_regex, table_data_org): + assert ( + regex["NGO"] == org["NGO"] + if org["NGO"].startswith("C") + else (regex["NGO"] is None) + ) def test_mergetables(self): """test merge tables""" From b40b6fee1ed65cec9bd6b77bc7b38c3cc2a66a9b Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 19:52:57 +0530 Subject: [PATCH 56/58] minor change --- tests/warehouse/test_bigquery_ops.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index 0b74280..f5653d5 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -108,6 +108,7 @@ def test_flatten(self): TestBigqueryOperations.test_project_dir, ) TestBigqueryOperations.execute_dbt("run", "Sheet1") + TestBigqueryOperations.execute_dbt("run", "Sheet2") logger.info("inside test flatten") logger.info( f"inside project directory : {TestBigqueryOperations.test_project_dir}" @@ -115,6 +116,9 @@ def test_flatten(self): assert "Sheet1" in TestBigqueryOperations.wc_client.get_tables( "pytest_intermediate" ) + assert "Sheet2" in TestBigqueryOperations.wc_client.get_tables( + "pytest_intermediate" + ) def test_rename_columns(self): """test rename_columns for sample seed data""" From ae1c14e45666a9f59eb1c12911da7fb78f145b3e Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 20:11:15 +0530 Subject: [PATCH 57/58] updates README with instructions to setup the test environment & removing this branch from the github workflow (all testcases have passed) --- .github/workflows/dbt_automation_pkg.yml | 2 +- README.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dbt_automation_pkg.yml b/.github/workflows/dbt_automation_pkg.yml index c142eb4..baf7eaf 100644 --- a/.github/workflows/dbt_automation_pkg.yml +++ b/.github/workflows/dbt_automation_pkg.yml @@ -7,7 +7,7 @@ on: push: branches: [ "main" ] pull_request: - branches: [ "main", "39-test-cases-for-dbt-automation" ] # TODO: remove once the PR is approved + branches: [ "main" ] jobs: tests: diff --git a/README.md b/README.md index df0cd4e..b4b0f6f 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,9 @@ Example usage: python flattenairbyte.py --project-dir workspace/lahi +# Setting up the test environment + +- Create a `pytest.ini` file and the test warehouse credentials. +- Create a `dbconnection.env` and add the test warehouse credentials. The test warehouse credentials will be used to seed data +- Seed the sample data by running ```python seeds/seed.py --warehouse ``` +- Run pytest ```pytest tests/ -c pytest.ini -s``` in your local virtual environment From 9b7aeb88b4dd25c4ec120cef4eece0015e060ed9 Mon Sep 17 00:00:00 2001 From: Ishan Date: Mon, 6 Nov 2023 20:24:33 +0530 Subject: [PATCH 58/58] seems to be working now --- tests/warehouse/test_bigquery_ops.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/warehouse/test_bigquery_ops.py b/tests/warehouse/test_bigquery_ops.py index f5653d5..b7e7f87 100644 --- a/tests/warehouse/test_bigquery_ops.py +++ b/tests/warehouse/test_bigquery_ops.py @@ -407,11 +407,10 @@ def test_arithmetic_div(self): math.ceil(table_data[0]["measure1"] / table_data[0]["measure2"]) if table_data[0]["measure2"] != 0 else None - == ( - math.ceil(table_data[0]["div_col"]) - if table_data[0]["div_col"] is not None - else None - ) + ) == ( + math.ceil(table_data[0]["div_col"]) + if table_data[0]["div_col"] is not None + else None ) def test_regexextract(self):