OpenSky API to Snowflake Using Python | Data Pipeline



ஒரு Analytics Engineering Project-ல் Data Source-ஐ புரிந்துகொள்வதும், Snowflake Connection உருவாக்குவதும் மட்டும் போதாது.

அடுத்த முக்கியமான Step என்ன?

Actual Data-வை Source-லிருந்து Data Warehouse-க்கு கொண்டு வர வேண்டும்.

இந்த Project-ல் நம்முடைய Data Source OpenSky API.

அதிலிருந்து கிடைக்கும் Live Flight Data-வை Python பயன்படுத்தி Retrieve செய்து, Snowflake-ல் Raw Data-ஆக Store செய்யப் போகிறோம்.

இதுதான் நம்முடைய Project-ன் முதல் உண்மையான Data Pipeline.

முக்கியமாக, Data-வை Manual-ஆக Download செய்து Upload செய்யப் போவதில்லை.

Instead:

OpenSky API
      ↓
Python
      ↓
API Response
      ↓
Snowflake RAW
      ↓
Data Validation

இந்த Flow தான் இந்த Analytics Engineering Project-ன் அடுத்த முக்கியமான Building Block.

What You Will Learn

இந்த Article-ல் நீங்கள் கற்றுக்கொள்ளப் போவது:

  • OpenSky API-யிலிருந்து Data எப்படி Retrieve செய்வது?
  • Python மூலம் API Request எப்படி அனுப்புவது?
  • API Response-ஐ எப்படி Handle செய்வது?
  • JSON Data-வை Snowflake-ல் Raw Format-ல் ஏன் Store செய்ய வேண்டும்?
  • Snowflake VARIANT Data Type ஏன் பயன்படுத்தப்படுகிறது?
  • INGESTED_AT Timestamp ஏன் முக்கியம்?
  • Raw Table எப்படி Create செய்வது?
  • Python மூலம் Data Insert செய்வது எப்படி?
  • Data Load Successful-ஆக நடந்ததா என்பதை எப்படி Validate செய்வது?
  • API Response-ல் எத்தனை Aircraft இருக்கிறது என்பதை எப்படி Check செய்வது?
  • Raw Data-விலிருந்து அடுத்ததாக dbt Staging Layer ஏன் தேவை?

Why This Is the First Real Data Pipeline

முந்தைய Steps-ல் நம்முடைய Development Environment மற்றும் Snowflake Connection-ஐ Setup செய்தோம்.

இப்போது அந்த Setup-ஐ பயன்படுத்தி Actual Data-வை Move செய்யப் போகிறோம்.

ஒரு Real Analytics Pipeline-ல்:

Data Source
     ↓
Data Ingestion
     ↓
Raw Layer
     ↓
Transformation
     ↓
Business Layer
     ↓
Analytics

இந்த Episode-ல் நாம் முக்கியமாக Data Ingestion மற்றும் Raw Layer-ஐ Build செய்கிறோம்.

அதாவது, OpenSky API-ல் இருக்கும் Data-வை Python மூலம் Retrieve செய்து Snowflake-ல் Store செய்கிறோம்.

OpenSky API-யிலிருந்து Data Retrieve செய்வது

நம்முடைய Project-ல் Data Source OpenSky API.

Python மூலம் அந்த API-க்கு ஒரு GET Request அனுப்புகிறோம்.

Basic Flow:

Python Script
      ↓
GET Request
      ↓
OpenSky API
      ↓
JSON Response

API Request Successful-ஆக இருந்தால் OpenSky Server நமக்கு Flight Data-வை Response-ஆக வழங்கும்.

இந்த Response தான் அடுத்ததாக Snowflake-க்கு Load செய்யப்படும் Raw Data.

Understanding the API Request Block

Python Script-ல் முதலில் API Request-க்கான ஒரு Function அல்லது Code Block இருக்கும்.

இதில் முக்கியமாக:

  • API Endpoint
  • HTTP GET Request
  • Response Status
  • Response Data

போன்ற Concepts இருக்கும்.

ஒரு simplified example:

response = requests.get(api_url)

response.raise_for_status()

data = response.json()

இதில்:

requests.get()

OpenSky API-க்கு GET Request அனுப்புகிறது.

raise_for_status()

Request Successful-ஆக இருந்ததா என்பதை Check செய்கிறது.

Error இருந்தால் Python அதை Identify செய்ய உதவும்.

response.json()

API Response-ஐ JSON Data-ஆக Python Object-க்கு Convert செய்கிறது.


Why Check API Response Status?

API Call செய்தவுடன் Data கிடைத்துவிட்டது என்று Assume செய்யக்கூடாது.

Network Issue, Server Error, Authentication Problem அல்லது Invalid Request போன்ற காரணங்களால் API Request Fail ஆகலாம்.

அதனால் Response Status-ஐ Check செய்வது ஒரு முக்கியமான Best Practice.

API Request
     ↓
Response Status
     ↓
Success?
 ┌───┴───┐
Yes      No
 ↓        ↓
Process   Handle Error
Data

இதனால் Pipeline Unexpected Failure-ஐ Better-ஆக Handle செய்ய முடியும்.

Reusing the Snowflake Connection

API Data Retrieve செய்த பிறகு அதை Snowflake-ல் Store செய்ய வேண்டும்.

இதற்காக Python மற்றும் Snowflake இடையே நாம் ஏற்கனவே உருவாக்கிய Connection-ஐ Reuse செய்கிறோம்.

இதில் புதிய Connection Logic உருவாக்க வேண்டிய அவசியமில்லை.

முந்தைய Setup-ல் உருவாக்கிய:

  • Snowflake Account
  • User
  • Role
  • Warehouse
  • Database
  • Schema

Configuration-ஐ பயன்படுத்தி Actual Data Load செய்யலாம்.

💡 Best Practice: ஒரே Project-ல் ஏற்கனவே Tested மற்றும் Reusable Connection Logic இருந்தால் அதை மீண்டும் பயன்படுத்துவது நல்ல Development Practice.

Why Store the API Response as Raw Data?

இங்கே ஒரு முக்கியமான Design Decision எடுக்கப்படுகிறது.

OpenSky API Response-ல் Latitude, Longitude, Altitude போன்ற Fields இருந்தாலும், இந்த Stage-ல் அவற்றை தனித்தனி Columns-ஆக Split செய்யப் போவதில்லை.

Instead, முழு JSON Response-ஐ Raw Data-ஆக Store செய்கிறோம்.

இதுதான் Raw Layer-ன் முக்கியமான நோக்கம்.

What is a Raw Layer?

Raw Layer என்பது Source-லிருந்து கிடைத்த Data-வை Transformation செய்யாமல் அல்லது குறைந்தபட்ச மாற்றங்களுடன் Store செய்யும் Layer.

Architecture:

OpenSky API
     ↓
Python
     ↓
RAW Layer
     ↓
STAGING Layer
     ↓
MART Layer
     ↓
Power BI

இந்த Layered Architecture-ல் ஒவ்வொரு Layer-க்கும் தனிப்பட்ட Responsibility உள்ளது.

Why Not Split the JSON Immediately?

API Response-ஐ Python-ல் Retrieve செய்தவுடன்:

Latitude
Longitude
Altitude
Velocity
Country
...

என்று உடனே Columns-ஆக Split செய்யலாம்.

ஆனால் Raw Layer-ல் அதைச் செய்யாமல் Original JSON-ஐ Preserve செய்வது பல நேரங்களில் நல்ல Approach.

காரணங்கள்:

  • Original Source Data Preserve ஆகும்.
  • Future Transformation-க்கு Flexibility கிடைக்கும்.
  • Source Structure-ஐ மீண்டும் பார்க்கலாம்.
  • Debugging எளிதாகும்.
  • புதிய Business Requirement வந்தாலும் Raw Data கிடைக்கும்.

அதனால்தான் Raw Layer-ல் Source Data-வை Preserve செய்வது முக்கியமான Architecture Practice.

Creating the Raw Snowflake Table

Data Load செய்வதற்கு முன் Snowflake-ல் Target Table இருக்க வேண்டும்.

நம்முடைய Table-ல் முக்கியமாக இரண்டு Columns இருக்கும்:

ColumnPurpose
INGESTED_ATData எப்போது Platform-க்கு வந்தது என்பதை Store செய்ய
RAW_DATAOpenSky API-யிலிருந்து கிடைத்த முழு JSON Response

இங்கே ஒரு முக்கியமான Design Choice உள்ளது.

RAW_DATA Column-க்கு VARIANT Data Type பயன்படுத்தப்படுகிறது.

Why Snowflake VARIANT?

JSON போன்ற Semi-Structured Data-வை Snowflake-ல் Store செய்ய VARIANT மிகவும் பயனுள்ளதாக இருக்கும்.

உதாரணமாக:

RAW_DATA
--------
{
  "time": ...,
  "states": [...]
}

இந்த முழு JSON Object-ஐ ஒரு VARIANT Column-ல் Store செய்ய முடியும்.

இதனால் JSON Structure-ஐ உடனடியாக Flatten செய்ய வேண்டிய அவசியம் இல்லை.

Why Snowflake VARIANT?

JSON போன்ற Semi-Structured Data-வை Snowflake-ல் Store செய்ய VARIANT மிகவும் பயனுள்ளதாக இருக்கும்.

உதாரணமாக:

RAW_DATA
--------
{
  "time": ...,
  "states": [...]
}

இந்த முழு JSON Object-ஐ ஒரு VARIANT Column-ல் Store செய்ய முடியும்.

இதனால் JSON Structure-ஐ உடனடியாக Flatten செய்ய வேண்டிய அவசியம் இல்லை.

Why Ingestion Timestamp Matters

ஒரு Data Pipeline-ல் Source Data-வின் Timestamp மற்றும் Platform-ல் Data வந்த Timestamp இரண்டும் வேறுபடலாம்.

அதனால்:

Source Time ≠ Ingestion Time

என்பதை நினைவில் வைத்துக்கொள்ள வேண்டும்.

INGESTED_AT மூலம்:

  • Data Freshness
  • Pipeline Monitoring
  • Historical Loads
  • Troubleshooting
  • Incremental Processing

போன்றவற்றை Manage செய்யலாம்.

Creating the Raw Table

Snowflake-ல் ஒரு Basic Raw Table:

CREATE TABLE IF NOT EXISTS OPEN_SKY_STATES (
    INGESTED_AT TIMESTAMP,
    RAW_DATA VARIANT
);

இங்கே:

  • INGESTED_AT → Ingestion Timestamp
  • RAW_DATA → Complete JSON Response

என்ற Architecture பயன்படுத்தப்படுகிறது.

Table Create செய்த பிறகு Snowflake-ல் Refresh செய்து Columns மற்றும் Data Types-ஐ Verify செய்யலாம்.

Why VARIANT Instead of VARCHAR?

JSON-ஐ ஒரு Simple String-ஆக Store செய்யலாம்.

ஆனால் Snowflake-ல் VARIANT பயன்படுத்துவதால் Semi-Structured Data-வை Native-ஆக Handle செய்ய முடியும்.

இதன் மூலம் பின்னர் SQL பயன்படுத்தி JSON Elements-ஐ Access செய்ய முடியும்.

உதாரணமாக, Raw JSON-ல் states போன்ற ஒரு Array இருந்தால் அதை SQL மூலம் Extract செய்து Transform செய்ய முடியும்.

அதுதான் அடுத்த Staging Layer-ல் மிகவும் முக்கியமாக பயன்படும்.

Running the Python Data Pipeline

Table Ready ஆனதும் Python Pipeline Run செய்யலாம்.

Pipeline Flow:

1. Call OpenSky API
        ↓
2. Receive JSON Response
        ↓
3. Validate API Response
        ↓
4. Connect to Snowflake
        ↓
5. Insert JSON into RAW_DATA
        ↓
6. Store INGESTED_AT
        ↓
7. Print Success Message

இந்த Pipeline தான் நம்முடைய முதல் Real Data Ingestion Workflow

How Do We Know the Load Was Successful?

Python Script Run செய்த பிறகு ஒரு Success Message Print செய்யலாம்.

உதாரணமாக:

Flight data loaded successfully

இந்த Message வந்தால் Python-side Data Loading Process Successful என்று தெரியும்.

ஆனால் இங்கே ஒரு முக்கியமான விஷயம்:

Python Success Message மட்டும் போதாது.

Snowflake-ல் சென்று Actual Data இருக்கிறதா என்பதை Validate செய்ய வேண்டும்.

Validating Data in Snowflake

Snowflake-ல் முதலில் Record Count Check செய்யலாம்.

SELECT COUNT(*)
FROM OPEN_SKY_STATES;

இந்த Query Target Table-ல் எத்தனை Records இருக்கிறது என்பதை காட்டும்.

இந்த Episode-ன் Example Run-ல் ஒரு Raw Record Load ஆகியிருக்கிறது.

ஆனால்:

1 Record = 1 Aircraft அல்ல.

இது மிகவும் முக்கியமான Concept.

One Record Does Not Mean One Aircraft

API Response-ல் பல Aircraft Information இருக்கலாம்.

ஆனால் நாம் அந்த முழு API Response-ஐ ஒரு RAW_DATA Value-ஆக Store செய்துள்ளோம்.

அதனால்:

1 Snowflake Row
       ↓
1 Complete API Response
       ↓
Many Aircraft States

என்று புரிந்துகொள்ள வேண்டும்.

இதுதான் Raw Layer மற்றும் Staging Layer இடையேயான முக்கியமான வித்தியாசங்களில் ஒன்று.

How Many Aircraft Are Inside the JSON?

இப்போது Raw JSON-க்குள் இருக்கும் states Array-ஐ பார்க்கலாம்.

இந்த Project Run-ல்:

6,833 Aircraft States

கிடைத்தன.

இதன் அர்த்தம் Snowflake-ல் 6,833 Rows இருக்கிறது என்று அல்ல.

அதற்கு பதிலாக:

1 Raw Record
      ↓
JSON Response
      ↓
states Array
      ↓
6,833 Aircraft States

என்று புரிந்துகொள்ள வேண்டும்.

Exploring the Raw JSON

Raw Table-ஐ Query செய்தால்:

SELECT *
FROM OPEN_SKY_STATES;

முழு JSON Response-ஐ ஒரு VARIANT Column-ல் பார்க்கலாம்.

இதில் OpenSky API-யின் Response Structure முழுவதும் இருக்கும்.

உதாரணமாக states Array-க்குள் பல Aircraft State Objects இருக்கலாம்.

ஒவ்வொரு State-லும்:

  • Aircraft Identifier
  • Callsign
  • Origin Country
  • Longitude
  • Latitude
  • Altitude
  • Velocity
  • Heading

போன்ற தகவல்கள் இருக்கலாம்.


Why Keep the Complete JSON?

இந்த Raw Data எதிர்கால Transformation-க்கு Source of Truth ஆக இருக்கும்.

நாம் இப்போது ஒரு குறிப்பிட்ட Field மட்டும் எடுத்தாலும், நாளை Business Requirement மாறலாம்.

உதாரணமாக:

"Aircraft Velocity Analysis வேண்டும்."

அல்லது:

"Country-wise Flight Analysis வேண்டும்."

அல்லது:

"Aircraft Altitude Trend வேண்டும்."

Raw JSON Preserve செய்யப்பட்டிருப்பதால் தேவையான Attributes-ஐ பின்னர் Extract செய்ய முடியும்.


From Raw JSON to a Proper Table

இப்போது ஒரு முக்கியமான Problem உள்ளது.

Power BI போன்ற Analytics Tool-க்கு:

RAW_DATA
   ↓
{
     "states": [...]
   }

என்ற Nested JSON Structure நேரடியாக Business Analytics-க்கு பயன்படுத்துவது சரியான Approach அல்ல.

Power BI-க்கு நாம் பொதுவாக Proper Tabular Structure வேண்டும்.

அதாவது:

AircraftCountryLatitudeLongitudeAltitude
Aircraft 1Country A.........
Aircraft 2Country B.........
Aircraft 3Country C.........

அதற்காகத்தான் அடுத்த Layer தேவைப்படுகிறது.


Why Do We Need a Staging Layer?

Raw Layer-ல் Data Source-ன் Original Structure Preserve செய்யப்படுகிறது.

Staging Layer-ல் அந்த Raw Data-வை Analytics-friendly Structure-ஆக மாற்றத் தொடங்குகிறோம்.

Architecture:

RAW JSON
   ↓
STAGING
   ↓
Structured Columns
   ↓
MART
   ↓
Power BI

இந்த Transformation-ஐ Python Script-ல் அதிகமாக செய்யாமல், அடுத்த Step-ல் dbt பயன்படுத்தி செய்யப் போகிறோம்.


Why Use dbt for the Staging Layer?

dbt என்பது Data Transformation மற்றும் Data Modeling-க்கு பயன்படுத்தப்படும் முக்கியமான Modern Analytics Engineering Tool.

நம்முடைய Raw JSON-ல்:

states
   ↓
Array
   ↓
Individual Aircraft Objects

இருக்கும்.

dbt + SQL பயன்படுத்தி இதை:

Aircraft
Country
Latitude
Longitude
Altitude
Velocity
...

போன்ற Structured Columns-ஆக மாற்றலாம்.

இதனால் Power BI மற்றும் பிற Analytics Tools-க்கு Data மிகவும் எளிதாக பயன்படுத்தக்கூடியதாக மாறும்.


The Complete Architecture So Far

இந்த Episode முடிவில் நம்முடைய Data Pipeline:

┌─────────────────┐
│   OpenSky API   │
└────────┬────────┘
         ↓
┌─────────────────┐
│     Python      │
│  Data Ingestion │
└────────┬────────┘
         ↓
┌─────────────────┐
│ Snowflake RAW   │
│  JSON / VARIANT │
└────────┬────────┘
         ↓
┌─────────────────┐
│  dbt STAGING    │
│ Structured Data │
└────────┬────────┘
         ↓
┌─────────────────┐
│      MART       │
└────────┬────────┘
         ↓
┌─────────────────┐
│    Power BI     │
└─────────────────┘

இந்த Architecture தான் நம்முடைய Analytics Engineering Project-ன் Foundation.


Common Mistakes to Avoid

❌ Manual Data Upload

API Data-வை Download செய்து Excel அல்லது CSV மூலம் Upload செய்வது இந்த Architecture-க்கு தேவையில்லை.

✅ Better Approach

Python மூலம் API Data Automatically Retrieve செய்து Snowflake-ல் Load செய்யுங்கள்.


❌ Raw JSON-ஐ உடனே Flatten செய்வது

Raw Layer-ல் Source Data-வை Preserve செய்யாமல் உடனே Transformation செய்வது Future Flexibility-ஐ குறைக்கலாம்.

✅ Better Approach

முதலில் Raw JSON-ஐ VARIANT-ல் Store செய்து, Transformation-ஐ Staging Layer-ல் செய்யுங்கள்.


❌ One Row = One Aircraft என்று நினைப்பது

Raw Table-ல் ஒரு Record இருப்பதால் ஒரு Aircraft மட்டுமே இருக்கிறது என்று நினைக்கக்கூடாது.

ஒரு Record-க்குள் பல Aircraft States இருக்கலாம்.


❌ Python-ல் எல்லா Transformations-ஐ செய்வது

Python மூலம் Data Extraction மற்றும் Ingestion செய்யலாம்.

ஆனால் Analytics Transformation மற்றும் Data Modeling-க்கு dbt போன்ற Tool பயன்படுத்துவது இந்த Architecture-ல் மிகவும் பொருத்தமானது.


❌ Load Successful Message-ஐ மட்டும் நம்புவது

Python Script Success Message கொடுத்தால் மட்டும் Data Warehouse-ல் Data சரியாக Load ஆகியிருக்கிறது என்று Assume செய்யக்கூடாது.

✅ Better Approach

Snowflake-ல் SQL Queries மூலம் Data Validate செய்யுங்கள்.


Key Takeaways

  • ✅ OpenSky API-யிலிருந்து Python மூலம் Live Flight Data Retrieve செய்யலாம்.
  • ✅ API Request-ன் Response Status-ஐ Validate செய்வது முக்கியம்.
  • ✅ Snowflake Connection-ஐ Reuse செய்து Data Load செய்யலாம்.
  • ✅ Raw API Response-ஐ Snowflake VARIANT Column-ல் Store செய்யலாம்.
  • INGESTED_AT மூலம் Data Platform-க்கு எப்போது வந்தது என்பதை Track செய்யலாம்.
  • ✅ ஒரு Raw Record என்பது ஒரு Aircraft என்று அர்த்தமில்லை.
  • ✅ ஒரு Raw JSON Response-க்குள் ஆயிரக்கணக்கான Aircraft States இருக்கலாம்.
  • ✅ இந்த Project Run-ல் 6,833 Aircraft States கிடைத்தன.
  • ✅ Raw Layer-க்கு பிறகு Staging Layer தேவைப்படுகிறது.
  • ✅ dbt பயன்படுத்தி Raw JSON-ஐ Structured Columns-ஆக Transform செய்யலாம்.
  • ✅ Power BI-க்கு Analytics-friendly Tabular Data தேவைப்படும்.
  • ✅ Python → Snowflake RAW → dbt STAGING என்பது இந்த Project-ன் முக்கியமான Data Flow.

Frequently Asked Questions

1. Python மூலம் OpenSky API Data-வை Snowflake-ல் Load செய்ய முடியுமா?

ஆம். Python மூலம் OpenSky API-க்கு Request அனுப்பி JSON Response பெறலாம். Snowflake Connector for Python பயன்படுத்தி அந்த Response-ஐ Snowflake RAW Table-ல் Store செய்யலாம்.


2. API Response-ஐ ஏன் JSON Format-லேயே Store செய்கிறோம்?

Raw Layer-ன் முக்கிய நோக்கம் Source Data-வை Preserve செய்வது.

JSON-ஐ VARIANT Column-ல் Store செய்வதால் Source Structure-ஐ Maintain செய்து, தேவையான Attributes-ஐ பின்னர் Staging Layer-ல் Extract செய்யலாம்.


3. Snowflake-ல் VARIANT என்றால் என்ன?

VARIANT என்பது Snowflake-ல் Semi-Structured Data-வை Store செய்ய பயன்படும் Data Type.

JSON போன்ற Nested Data Structures-ஐ Store செய்வதற்கு இது மிகவும் பயனுள்ளதாக இருக்கும்.


4. ஒரு Raw Record-ல் எத்தனை Aircraft இருக்கலாம்?

ஒரு Raw Record-ல் பல Aircraft States இருக்கலாம்.

இந்த Project-ன் Example Run-ல் ஒரு API Response-ல் 6,833 Aircraft States இருந்தன.

அதனால் ஒரு Snowflake Row என்பது ஒரு Aircraft என்று பொருள் கொள்ளக்கூடாது.


5. INGESTED_AT ஏன் தேவை?

INGESTED_AT மூலம் Data எப்போது Snowflake-க்கு வந்தது என்பதை Track செய்ய முடியும்.

இது Data Freshness, Monitoring, Troubleshooting மற்றும் Incremental Processing போன்றவற்றுக்கு மிகவும் பயனுள்ளதாக இருக்கும்.


6. Raw Data-வை Power BI-க்கு Direct-ஆக Connect செய்யலாமா?

Technically சில Raw Data-வை Query செய்ய முடியும்.

ஆனால் Nested JSON Structure-ஐ நேரடியாக Business Analytics-க்கு பயன்படுத்துவது சிறந்த Approach அல்ல.

அதற்கு பதிலாக dbt மூலம் Staging மற்றும் Business-ready Models உருவாக்கி Power BI-க்கு வழங்குவது நல்ல Architecture.


7. dbt ஏன் அடுத்த Step-ல் பயன்படுத்தப்படுகிறது?

Raw JSON Data-வை Structured Columns-ஆக மாற்றுவதற்கும் Business Logic Apply செய்வதற்கும் dbt மிகவும் பயனுள்ளதாக இருக்கும்.

இதனால் Transformation Logic SQL-ல் Modular மற்றும் Maintainable-ஆக இருக்கும்.


8. இந்த Data Pipeline Real-Time Pipeline-ஆ?

இந்த Project-ல் OpenSky API-யிலிருந்து Data Retrieve செய்து Snowflake-ல் Load செய்கிறோம்.

இது ஒரு API-based ingestion pipeline.

Actual Real-Time Architecture என்பதை நிர்ணயிக்க Data Collection Frequency, Scheduling, API Limits மற்றும் Processing Architecture போன்றவற்றையும் Consider செய்ய வேண்டும்.


Conclusion

இந்த Episode-ல் நம்முடைய Analytics Engineering Project-ன் முதல் உண்மையான Data Pipeline உருவாகியுள்ளது.

இதுவரை:

OpenSky API → Python → Snowflake

என்ற Data Flow-ஐ உருவாக்கியுள்ளோம்.

Python மூலம் OpenSky API-யிலிருந்து Flight Data Retrieve செய்தோம். API Response-ஐ JSON Format-ல் பெற்றோம். அந்த முழு Response-ஐ Snowflake RAW Layer-ல் VARIANT Column-ஆக Store செய்தோம்.

மேலும் INGESTED_AT Timestamp மூலம் Data எப்போது Platform-க்கு வந்தது என்பதையும் Track செய்தோம்.

Data Load ஆன பிறகு Snowflake-ல் SQL Queries பயன்படுத்தி அதை Validate செய்தோம்.

முக்கியமாக, ஒரு Raw Record என்பது ஒரு Aircraft அல்ல என்பதை புரிந்துகொண்டோம். ஒரு API Response-க்குள் பல Aircraft States இருக்கலாம். இந்த Project Run-ல் 6,833 Aircraft States கிடைத்தன.

ஆனால் இப்போது நம்முடைய Data இன்னும் Raw JSON Format-ல் தான் இருக்கிறது.

Power BI-க்கு இந்த Nested JSON Structure-ஐ நேரடியாக பயன்படுத்துவது சரியான Analytics Architecture அல்ல.

அதனால் அடுத்த Step மிகவும் முக்கியமானது.

RAW JSON → Structured Staging Data

இந்த Transformation-ஐ dbt பயன்படுத்தி உருவாக்கப் போகிறோம்.

அதன் மூலம் JSON-ல் இருக்கும் Aircraft Information-ஐ Proper Columns-ஆக மாற்றி Analytics மற்றும் Power BI பயன்படுத்தக்கூடிய Data Model-ஐ உருவாக்கலாம்.

👉 இந்த concept-ஐ முழுமையாக Demo உடன் பார்க்க கீழே உள்ள video-வை கண்டிப்பாக பாருங்கள்.


Watch the Video

🎥 இந்த topic-ஐ Step-by-Step Demo-வாக பார்க்க கீழே உள்ள YouTube video-வை பாருங்கள்.




கருத்துரையிடுக

0 கருத்துகள்