14.4 Data Processing Automation
Data processing is the foundation of business intelligence and decision-making. This section shows you complete, production-ready automation examples for extracting, transforming, and synchronizing data across systems.
Overview: What Taibles Can Do for Data Processing
Three Main Use Cases
ETL (Extract, Transform, Load)
- Pull data from multiple sources (Shopify, HubSpot, databases)
- Clean and normalize data automatically
- Enrich with calculated metrics
- Load into data warehouses
- Monitor data quality continuously
Web Scraping
- Competitor price monitoring
- Content aggregation
- Market research data collection
- Change detection and alerts
- Historical data archiving
Data Synchronization
- Keep systems in sync automatically
- Handle bidirectional updates
- Resolve conflicts intelligently
- Prevent duplicates
- Validate data continuously
Example 1: ETL Pipeline (Extract, Transform, Load)
The Problem
Your Situation: You need to consolidate customer data from multiple sources into a data warehouse for analytics and reporting.
Manual Process (error-prone, always outdated):
- Export CSV from Shopify
- Export CSV from HubSpot
- Export CSV from support system
- Manually combine in a spreadsheet
- Clean data (fix emails, remove duplicates)
- Calculate customer metrics
- Upload to data warehouse
- Update BI dashboard
Result: Takes 4-6 hours, only done weekly, data is always outdated by several days.
Automated Process (accurate, real-time):
- Daily trigger automatically starts process at 2 AM
- Pull from all sources automatically
- Clean and normalize data
- Calculate enriched metrics
- Load to data warehouse
- Monitor data quality
Result: 15 minutes daily, fresh data every morning! ☀️
Visual Overview
ETL Pipeline: Extract → Transform → Load
10-15 minutes totalExtract
Pull data from multiple sources
- • Shopify customers
- • HubSpot contacts
- • Support tickets
Transform
Clean and enrich your data
- • Merge data sources
- • Clean names/emails
- • Remove duplicates
- • Calculate metrics
Validate
Check data quality
- • Validate formats
- • Check completeness
- • Generate quality report
Load
Send to data warehouse
- • Upload to warehouse
- • Update dashboards
- • Track results
From 4-6 Hours Weekly to 15 Minutes Daily
Automate your entire data pipeline: extract from multiple sources, clean and enrich automatically, validate quality, and load to your data warehouse—all while you sleep!
Complete Implementation
Let's build this step-by-step!
Step 1: Create Your Taible
- Name: "Customer Data ETL Pipeline"
- Purpose: Consolidate customer data from multiple sources for analytics
Step 2: Add a Trigger (Auto-Start Daily)
Set up CRON trigger:
- Click "Add Trigger" button
- Type: Scheduled (CRON)
- Name: Daily ETL Run
- Schedule: Every day at 2 AM
- Column to store data: Create column called "Extract Date"
- Action: Create new row each run
This means your taible will automatically create a new row at 2 AM every day and start processing!
Step 3: Extract Data from Source Systems
Now we'll pull data from three sources. Each source becomes one column in your taible:
Column 1: Extract Date
- Type: Template
- Label: "Extract Date"
- Content: The system automatically inserts: Current date and time
- Dependencies: None (trigger creates this)
- Run Mode: Run once when dependencies are ready
💡 What This Does
Column 2: Shopify Customers
- Type: Shopify (connector)
- Label: "Shopify Customers"
- Configuration:
- Account: [Select your Shopify account]
- Method: "List Customers"
- Fields to get: email, first_name, last_name, orders_count, total_spent, created_at
- Limit: 250 customers
- Dependencies: Extract Date
- Run Mode: Run once when dependencies are ready
This pulls all your Shopify customer data automatically!
Column 3: HubSpot Contacts
- Type: HubSpot (connector)
- Label: "HubSpot Contacts"
- Configuration:
- Account: [Select your HubSpot account]
- Method: "List Contacts"
- Properties: email, firstname, lastname, lifecyclestage, lead_status, company
- Limit: 100 contacts
- Dependencies: Extract Date
- Run Mode: Run once when dependencies are ready
Column 4: Support Tickets Data
- Type: Pull Data (from another taible)
- Label: "Support Tickets Data"
- Configuration:
- Source Taible: "Support Tickets" (your existing support taible)
- Source Columns: All relevant fields
- Filter: None (get all tickets)
- Dependencies: Extract Date
- Run Mode: Run once when dependencies are ready
💡 Pro Tip
Step 4: Transform - Merge Data Sources
Now comes the magic! We'll merge all three data sources into one unified customer view.
Column 5: Merged Data
- Type: Custom Code
- Label: "Merged Data"
- Output Type: Array (list of customers)
- Dependencies: Shopify Customers, HubSpot Contacts, Support Tickets Data
- Run Mode: Run once when dependencies are ready
What this does: Takes all three data sources and intelligently combines them by matching email addresses. For example:
- John from Shopify + John from HubSpot + John's support tickets = One complete John record
How Data Merging Works
Three Separate Data Sources
Shopify
john@example.com
Orders: 5
Spent: $500
jane@example.com
Orders: 2
Spent: $150
HubSpot
john@example.com
Stage: Customer
Company: Acme Inc
bob@example.com
Stage: Lead
Company: Tech Co
Support
john@example.com
Tickets: 3
Last: 2024-01-15
jane@example.com
Tickets: 1
Last: 2024-02-20
Merge by Email + Clean + Deduplicate + Enrich
Single Unified Customer View
John Doe
VIPjohn@example.com
Orders
5
Spent
$500
Stage
Customer
Company
Acme Inc
Tickets
3
Last Contact
2024-01-15
Score
85
Jane Smith
Activejane@example.com
Orders
2
Spent
$150
Stage
Unknown
Company
N/A
Tickets
1
Last Contact
2024-02-20
Score
45
Bob Johnson
Prospectbob@example.com
Orders
0
Spent
$0
Stage
Lead
Company
Tech Co
Tickets
0
Last Contact
Never
Score
25
Complete Customer 360° View
All customer data from every system merged into one unified record—automatically matched by email, deduplicated, cleaned, and enriched with calculated scores and segments.
Step 5: Transform - Clean Data
Column 6: Cleaned Data
- Type: Custom Code
- Label: "Cleaned Data"
- Output Type: Array
- Dependencies: Merged Data
- Run Mode: Run once when dependencies are ready
What this does:
- Fixes email formats (all lowercase, trimmed)
- Cleans names (proper capitalization, removes invalid characters)
- Validates numeric fields (no negative values)
- Ensures data consistency
Example transformations:
JOHN SMITH→John Smithjane@EXAMPLE.com→jane@example.com- Orders:
-5→0(no negative orders!)
Step 6: Transform - Remove Duplicates
Column 7: Deduplicated Data
- Type: Custom Code
- Label: "Deduplicated Data"
- Output Type: Array
- Dependencies: Cleaned Data
- Run Mode: Run once when dependencies are ready
What this does:
- Groups records by email address
- If multiple records exist for same email, merges them intelligently:
- Takes longest/best name
- Prefers Shopify data for orders/revenue
- Prefers HubSpot data for lifecycle stage
- Sums support ticket counts
- Takes most recent contact date
Example:
Before:
- john@example.com from Shopify (orders: 5)
- john@example.com from HubSpot (stage: Customer)
After:
- john@example.com with BOTH orders:5 AND stage:CustomerStep 7: Transform - Enrich with Calculated Metrics
Column 8: Enriched Data
- Type: Custom Code
- Label: "Enriched Data"
- Output Type: Array
- Dependencies: Deduplicated Data
- Run Mode: Run once when dependencies are ready
What this does: Calculates valuable metrics for each customer!
Calculated fields:
- Customer Value Score (0-100): Based on orders, revenue, lifecycle stage
- Customer Segment: VIP / Active / Low Value / Prospect / Subscriber
- Average Order Value: Total spent ÷ number of orders
- Lifetime Days: Days since first purchase
- Days Since Last Contact: For support engagement tracking
- Is Active: Boolean flag for active customers
Example scoring logic:
- Points for orders (more orders = higher score)
- Points for revenue (more spending = higher score)
- Points for lifecycle stage (customer > lead > subscriber)
- Deduct points for high support volume (potential issues)
Example output:
John Doe (john@example.com)
- Orders: 5
- Total Spent: $500
- Value Score: 85/100
- Segment: VIP
- Average Order: $100
- Lifetime: 180 days
- Active: YesStep 8: Validate Data Quality
Column 9: Validation Report
- Type: Custom Code
- Label: "Validation Report"
- Output Type: Map (object with validation results)
- Dependencies: Enriched Data
- Run Mode: Run once when dependencies are ready
What this does: Checks your data quality and generates a report!
Validation checks:
- ✓ Email format is valid
- ✓ Required fields are present
- ✓ Numeric values are reasonable (no negatives)
- ✓ Customer segments are assigned
- ✓ No critical data missing
Output includes:
- Total records processed
- Valid records count
- Invalid records count
- List of errors found
- List of warnings
- Data Quality Percentage (e.g., 98%)
- Overall Status: EXCELLENT / GOOD / ACCEPTABLE / POOR
Example report:
Total Records: 1,000
Valid: 980
Invalid: 20
Quality: 98%
Status: EXCELLENT
Errors:
- Invalid email format: bob@invalid
- Missing name for jane@example.com
Warnings:
- 5 records missing company nameStep 9: Load to Data Warehouse
Column 10: Warehouse Loaded
- Type: Custom Code (or API connector)
- Label: "Warehouse Loaded"
- Output Type: Map (load results)
- Dependencies: Enriched Data, Validation Report
- Run Mode: Run once when dependencies are ready
- Condition: Only run if Data Quality >= 70%
💡 Quality Gate
What this does:
- Connects to your data warehouse (Snowflake, BigQuery, Redshift, PostgreSQL, etc.)
- Uploads the enriched customer data
- Tracks the load results (success/failure, record count, timestamp)
Output includes:
- Status: SUCCESS / FAILED / SKIPPED
- Records loaded: (e.g., 980)
- Target table name
- Loaded timestamp
- Warehouse name
- Load type (full refresh or incremental)
- Execution time
Step 10: Summary Metrics
Create a few simple columns to display key metrics:
Column 11: Total Records
- Type: Template
- Label: "Total Records"
- Content: The system shows: Number of records in Enriched Data
- Dependencies: Enriched Data
- Run Mode: Run once when dependencies are ready
Column 12: Error Count
- Type: Template
- Label: "Error Count"
- Content: The system shows: Number of invalid records from Validation Report
- Dependencies: Validation Report
- Run Mode: Run once when dependencies are ready
Column 13: Status
- Type: Dropdown (manual selection)
- Label: "Status"
- Options: Running / Success / Failed
- Purpose: Manual status tracking for monitoring
How to Use Your ETL Pipeline
Daily Automated Run
What happens every day at 2 AM:
Extract Phase (5-10 minutes):
- Trigger creates new row
- Pull data from Shopify
- Pull data from HubSpot
- Pull data from Support Taible
Transform Phase (2-3 minutes):
- Merge all three data sources by email
- Clean names, emails, numbers
- Remove duplicates
- Calculate customer scores and segments
Validate Phase (1 minute):
- Run data quality checks
- Generate validation report
- Calculate quality percentage
Load Phase (2-3 minutes):
- Only runs if quality >= 70%
- Upload to data warehouse
- Track load results
Done!
- Fresh data ready in warehouse
- BI dashboards automatically update
- Total time: 10-15 minutes ✨
Monitoring Your Pipeline
Check your taible each morning:
- Look at today's row
- Check these columns:
- Total Records: How many customers processed?
- Validation Report → Quality %: Is it above 95%?
- Validation Report → Status: EXCELLENT / GOOD?
- Warehouse Loaded → Status: SUCCESS?
- Error Count: Low number?
If something looks wrong:
- Click on any cell to see detailed data
- Review Validation Report for specific errors
- Check Warehouse Loaded for failure messages
- Fix issues and re-run that row manually
Set Up Alerts
💡 Stay Informed
Alert 1: Data Quality Issues
- Condition: If Quality Percentage < 85%
- Action: Email data team
- Message: "Data quality dropped below 85% - please review"
Alert 2: Load Failed
- Condition: If Warehouse Loaded Status = "FAILED"
- Action: Email immediately
- Message: "ETL pipeline failed to load data - urgent review needed"
Alert 3: High Error Count
- Condition: If Error Count > 50
- Action: Email for review
- Message: "ETL pipeline found 50+ errors - please investigate"
Example 2: Web Scraping with Change Detection
The Problem
Your Situation: You need to monitor competitor pricing daily to stay competitive in your market.
Manual Process (slow, inconsistent):
- Visit 5 competitor websites every morning
- Find their product pages
- Copy prices to a spreadsheet
- Compare to yesterday's prices manually
- Alert team if changes detected
- Repeat tomorrow...
Result: Takes 30-45 minutes daily, prone to missing changes, boring repetitive work.
Automated Process (fast, reliable):
- Daily trigger automatically starts at 6 AM
- Scrape all competitor sites automatically
- Extract prices automatically
- Compare to previous day
- Alert team if changes detected
- Store historical data
Result: 5 minutes daily (fully automated), never miss a price change! 🎯
Visual Overview
Daily Competitor Price Monitoring
🤖 Automated Daily at 6 AMScraping Results for 2024-01-19
Competitor A
Current Price
$94.99
Change
$-5.00
-5.0%Competitor B
Current Price
$89.99
Competitor C
Current Price
$104.99
Change
$-5.00
-4.5%Alert Email Sent to Pricing Team
Subject: 🚨 Competitor Price Changes Detected - 2024-01-19
Price changes detected:
- • Competitor A: $-5.00 (-5.0%)
- • Competitor C: $-5.00 (-4.5%)
Action Required: Review competitor pricing strategy and consider adjusting our prices.
⚙️ How the Automation Works:
- 1.Taible wakes up at 6 AM every day (CRON trigger)
- 2.Scrapes all competitor websites automatically
- 3.Extracts prices using text pattern matching
- 4.Compares to yesterday's prices
- 5.If changes detected → sends alert email to team
- 6.Stores price history for trend analysis
From 45 Minutes Daily to 5 Minutes Automated
Never miss a competitor price change again! Automated daily scraping, change detection, and instant alerts—giving you competitive intelligence 24/7.
Complete Implementation
Step 1: Create Your Taible
- Name: "Competitor Price Monitoring"
- Purpose: Daily scrape competitor pricing and detect changes
Step 2: Add a Trigger
Set up CRON trigger:
- Click "Add Trigger" button
- Type: Scheduled (CRON)
- Name: Daily Price Scrape
- Schedule: Every day at 6 AM
- Column to store data: Create column called "Scrape Date"
- Action: Create new row each run
Step 3: Scrape Competitor Websites
Now we'll create columns to scrape each competitor's website:
Column 1: Scrape Date
- Type: Template
- Label: "Scrape Date"
- Content: The system automatically inserts: Today's date
- Dependencies: None (trigger creates)
- Run Mode: Run once when dependencies are ready
Column 2: Competitor A Page
- Type: Web Content (web scraper)
- Label: "Competitor A Page"
- Configuration:
- URL:
https://competitor-a.com/product/widget-pro - Method: GET (fetch webpage)
- URL:
- Dependencies: Scrape Date
- Run Mode: Run once when dependencies are ready
- Rate Limit: 10 requests per minute (be respectful!)
💡 Respectful Scraping
Column 3: Competitor A Price
- Type: Custom Code
- Label: "Competitor A Price"
- Output Type: Number
- Dependencies: Competitor A Page
- Run Mode: Run once when dependencies are ready
What this does: Extracts the price from the webpage HTML using text pattern matching.
Example logic:
- Looks for patterns like
$99.99orPrice: $99.99 - Extracts just the number:
99.99 - Returns it as a number for comparison
Repeat for other competitors:
Column 4: Competitor B Page (Web Content) Column 5: Competitor B Price (Custom Code)
Column 6: Competitor C Page (Web Content) Column 7: Competitor C Price (Custom Code)
(Same configuration as Competitor A, just different URLs)
Step 4: Get Previous Prices
Column 8: Previous Prices
- Type: Pull Data (from this same taible!)
- Label: "Previous Prices"
- Configuration:
- Source Taible: This taible (Competitor Price Monitoring)
- Source Columns: All competitor prices + Scrape Date
- Filter: Get yesterday's row
- Sort: Scrape Date (newest first)
- Limit: 1 row
- Dependencies: Competitor C Price (wait for all scraping to finish)
- Run Mode: Run once when dependencies are ready
What this does: Gets yesterday's prices so we can compare!
💡 Self-Referencing
Step 5: Detect Changes
Column 9: Price Changes
- Type: Custom Code
- Label: "Price Changes"
- Output Type: Array (list of changes)
- Dependencies: All competitor prices + Previous Prices
- Run Mode: Run once when dependencies are ready
What this does: Compares today's prices to yesterday's prices and identifies what changed!
Change detection logic:
For each competitor:
- Get today's price
- Get yesterday's price
- Calculate difference:
today - yesterday - Calculate percent change:
(difference / yesterday) × 100 - Classify the change:
- INCREASE: Price went up
- DECREASE: Price went down
- NO_CHANGE: Price stayed same
- Flag significant changes (>5% change)
Example output:
[
{
competitor: "Competitor A",
previous: 99.99,
current: 94.99,
change_amount: -5.00,
change_percent: -5.0,
change_type: "DECREASE",
significant: true // 5%+ change!
},
{
competitor: "Competitor B",
previous: 89.99,
current: 89.99,
change_amount: 0,
change_type: "NO_CHANGE"
},
...
]Column 10: Change Detected
- Type: Template
- Label: "Change Detected"
- Content: The system checks: If any price change exists (true/false)
- Output Type: Boolean (true/false)
- Dependencies: Price Changes
- Run Mode: Run once when dependencies are ready
What this does: Simple true/false flag indicating if ANY changes were detected. Used to trigger alerts.
Step 6: Alert on Changes
Column 11: Alert Sent
- Type: SMTP Email (send email)
- Label: "Alert Sent"
- Configuration:
- Account: [Select your SMTP email account]
- To:
pricing-team@company.com - From:
price-monitor@company.com - Subject:
🚨 Competitor Price Changes Detected - [Scrape Date] - Body: (see below)
- Dependencies: Price Changes, Change Detected
- Run Mode: Run once when dependencies are ready
- Condition: Only run if Change Detected = true
💡 Conditional Alert
Email body template:
Competitor Price Changes Detected
Date: [Scrape Date]
Changes Found:
- Competitor A: $94.99 (was $99.99) - DOWN $5.00 (-5.0%) 🚨
- Competitor C: $104.99 (was $109.99) - DOWN $5.00 (-4.5%)
Significant Changes (>5%):
- Competitor A: -5.0% 🚨
Action Required:
- Review competitor pricing strategy
- Consider adjusting our prices
- Update marketing messaging if needed
View full report: [Link to your Taible]
---
Automated Price Monitoring AlertHow to Use Your Price Monitor
Daily Automated Run
What happens every day at 6 AM:
Scraping Phase:
- Trigger creates new row
- Visit all competitor websites
- Extract price from each site
- Store prices in columns
Comparison Phase:
- Get yesterday's prices
- Calculate changes for each competitor
- Identify significant changes (>5%)
- Set change detected flag
Alerting Phase:
- If changes detected:
- Send email to pricing team
- Include all change details
- Highlight significant changes
- If no changes:
- No email sent (no spam!)
- If changes detected:
Historical Tracking:
- Each row is a daily snapshot
- Build price history over time
- Can chart trends over weeks/months
Analyzing Price Trends
View your taible:
- Each row = one day's price data
- Scroll through history to see price trends
- Look for patterns:
- Do competitors coordinate price changes?
- What days do they typically change prices?
- Are prices trending up or down overall?
Create charts:
- Export price data to spreadsheet
- Create line chart showing price history
- Compare your prices to competitors
- Identify pricing gaps or opportunities
Advanced: Track More Data
You can expand this to track additional information:
Add columns for:
- Product availability (in stock / out of stock)
- Shipping costs
- Promotion banners or sale notices
- Product descriptions
- Customer review counts
- Star ratings
Change detection for:
- New products added
- Products discontinued
- Feature changes
- Specification updates
Example 3: Data Synchronization (Bidirectional)
Overview
Purpose: Keep two systems synchronized automatically with bidirectional updates.
Pattern:
System A ←→ Taibles ←→ System B
Changes in A → Update B
Changes in B → Update A
Conflict resolution
DeduplicationCommon Sync Scenarios:
- CRM ←→ Marketing automation platform
- E-commerce ←→ Accounting system
- Support system ←→ CRM
- Internal database ←→ External API
💡 Detailed Guide Available
Jump to that section for complete step-by-step implementation with webhook triggers, conflict resolution, loop prevention, and duplicate detection!
Key components for sync:
- Webhook triggers: Detect changes in each system
- RPC nodes: Send updates to other system
- Loop prevention: Use timestamps to avoid infinite loops
- Conflict resolution: Rules for when both systems change same record
- Duplicate detection: Match records by email or unique ID
Summary: Data Processing Automation
You now have three complete automation examples!
✅ ETL Pipeline
What you learned:
- Extract from multiple sources (Shopify, HubSpot, internal taibles)
- Transform with merging, cleaning, deduplication, enrichment
- Calculate custom metrics (customer value score, segments)
- Validate data quality before loading
- Load to data warehouse automatically
- Daily CRON automation
- Complete 13-column implementation
- 10-15 minute total runtime
Real impact:
- From 4-6 hours weekly → 15 minutes daily
- From outdated data → fresh data every morning
- From manual errors → automated validation
- From 70% quality → 98% quality
- Saved 20 hours per week!
✅ Web Scraping & Monitoring
What you learned:
- Web Content column for automatic scraping
- Text extraction using pattern matching
- Change detection algorithms
- Historical comparison
- Alert on significant changes (>5%)
- Daily automated monitoring
- Complete 11-column implementation
Real impact:
- From 45 minutes daily → 5 minutes automated
- From missed changes → never miss a change
- From delayed responses → 24-hour response time
- From manual tracking → automatic history
- Competitive advantage through speed!
✅ Data Synchronization
What you learned:
- Bidirectional sync patterns
- Webhook + API integration
- Loop prevention strategies
- Conflict resolution rules
- Covered in detail in Section 10.5
Real impact:
- From manual updates → automatic sync
- From duplicate records → zero duplicates
- From data conflicts → intelligent resolution
- From 15 hours weekly → automated
- Sales and marketing aligned on data!
Key Patterns Used
Throughout these examples, you used these powerful patterns:
Triggers:
- ⏰ CRON triggers for scheduled runs (daily ETL, daily scraping)
- 🔔 Webhook triggers for real-time sync (covered in Section 10.5)
Column Types:
- 📥 Pull Data for querying internal taibles
- 🌐 Web Content for scraping websites
- 🔌 API connectors (Shopify, HubSpot, etc.)
- ⚙️ Custom Code for complex transformations
- 📝 Template for displaying calculated values
- 📧 SMTP for sending alert emails
Advanced Techniques:
- 🔄 Self-referencing (Pull Data from same taible)
- 🎯 Conditional execution (quality gates)
- 📊 Data validation and quality checks
- 🔗 Merging multiple data sources
- 🧹 Deduplication and cleaning
- 📈 Calculated enrichment metrics
Real-World Results
E-Commerce Company A (ETL Pipeline)
Before automation:
- Manual CSV exports from 4 systems
- 6 hours every Friday to combine data
- Data warehouse updated weekly
- Many data quality issues (typos, duplicates)
- BI dashboards always outdated
After automation:
- Consolidated 4 data sources → single source of truth
- Data warehouse updated daily at 2 AM
- 98% data quality score
- Saved 20 hours per week of manual work
- BI dashboards now show real-time data
- Better business decisions with fresh data
SaaS Company B (Price Monitoring)
Before automation:
- Manual competitor checks
- Often missed price changes for weeks
- Slow to adjust pricing strategy
- Lost deals to lower-priced competitors
After automation:
- Monitors 12 competitors daily automatically
- Catches pricing changes within 24 hours
- Adjusted pricing 3x faster than before
- Increased competitive win rate by 15%
- Team has more time for strategy vs. data collection
Services Company C (Data Sync)
Before automation:
- Duplicate data entry in HubSpot and custom CRM
- Frequent sync errors and duplicates
- Sales and marketing teams had conflicting data
- 15 hours per week fixing sync issues
After automation:
- HubSpot ←→ Custom CRM auto-sync
- Zero duplicate records
- 99.5% sync success rate
- Sales and marketing aligned on data
- Eliminated 15 hours per week of manual updates
- Teams trust the data now
Next Steps
💡 You've Completed Section 14.4!
What's next?
Section 14.5: AI and Content Automation → Learn to build complete AI-powered workflows for:
- Automated content generation
- Document processing and extraction
- Translation workflows
- Sentiment analysis
- Content moderation
Let's automate content with AI! ✍️🤖
Quick Reference: Common Questions
Q: How often should I run my ETL pipeline?
A: It depends on your needs:
- Daily: Most common, good balance of freshness and cost
- Hourly: For time-sensitive data (stock levels, pricing)
- Weekly: For less critical reporting data
- Real-time: Use webhook triggers for instant updates
Q: What if my web scraping breaks when a website changes?
A: Websites do change! Here's how to handle it:
- Monitor for errors (cells will show Error status with red badge)
- Update your price extraction pattern
- Test on a single row first
- Re-run failed rows after fix
- Consider scraping multiple indicators (price + product name to verify)
Q: How do I avoid getting blocked when scraping?
A: Follow these best practices:
- Respect robots.txt: Check the website's rules
- Rate limiting: Set 10-30 second delays between requests
- Reasonable timing: Scrape during off-peak hours (early morning)
- User agent: Use a proper user agent string
- Be ethical: Only scrape public data, respect terms of service
Q: Can I load data to any data warehouse?
A: Yes! Common integrations:
- Built-in connectors: Check if Taibles has a connector for your warehouse
- Custom code: Use API calls to any warehouse (Snowflake, BigQuery, Redshift, PostgreSQL, etc.)
- CSV export: Export and upload manually if needed
- API webhooks: Send data to other tools via webhooks
Q: What happens if duplicate records get through?
A: Add a deduplication column:
- Before warehouse load: Best practice
- After load: Run periodic cleanup jobs
- Use unique keys: Match on email, customer ID, or other unique fields
- Merge strategy: Define rules (newest wins, prefer Shopify over HubSpot, etc.)
Q: How do I handle API rate limits?
A: Built-in features help:
- Rate limiting: Set per-column rate limits
- Automatic queuing: Cells wait in queue if limit reached
- Smart scheduling: Spread requests over time
- Condition skipping: Skip unnecessary API calls
- Batch operations: Process multiple items in one call when possible
See Section 8.3: Rate Limiting for complete details.
Q: Can I test before running on all my data?
A: Absolutely! Testing is crucial:
- Start small: Create test row with just 1-2 records
- Check each step: Review output of each column
- Verify transformations: Ensure cleaning/merging works correctly
- Test conditions: Confirm quality gates trigger properly
- Monitor first few runs: Watch for issues
- Scale up gradually: Add more records once confident
Q: What if my data quality is below 70%?
A: Your warehouse load is skipped! Here's what to do:
- Check validation report: Click cell to see specific errors
- Common issues:
- Invalid email formats
- Missing required fields
- Duplicate records not merged
- Incorrect data types
- Fix at source: Update cleaning logic in earlier columns
- Re-run: Test on that row again
- Adjust threshold: Maybe 70% is too strict for your use case
Q: How do I schedule runs at different times?
A: CRON schedule syntax:
Format: minute hour day month weekday
Examples:
0 2 * * * = Every day at 2:00 AM
0 9 * * 1 = Every Monday at 9:00 AM
0 */6 * * * = Every 6 hours
0 0 1 * * = First day of every month at midnight
0 8 * * 1-5 = Weekdays at 8:00 AMUse an online CRON expression generator if needed!
Q: Can I get notified when something fails?
A: Yes! Set up email alerts:
Method 1: Conditional SMTP column
- Add SMTP column at end of pipeline
- Condition: Run if error count > 0 OR status = FAILED
- Sends email only when issues detected
Method 2: Monitor column status
- Use error tracking columns
- Set thresholds for acceptable error rates
- Alert when thresholds exceeded
Method 3: External monitoring
- Export data to monitoring tool
- Set up alerts in that tool
- Examples: Slack, PagerDuty, Datadog