Skip to main content

Getting Started with Snowflake CoCo (Cortex Copilot)

Snowflake CoCo

Snowflake has been evolving quickly over the least year with it’s Cortex AI offering. Snowflake CoCo is Cortex Copilot. It’s one of the clearest examples of Snowflake embracing a modern co-pilot approach that works incredibly well. They embraced several functions that I cover in my anatomy of a modern copilot article.

Instead of exporting data into external AI tools or building complicated integrations, you can now interact with your Snowflake data using natural language. The AI assistant lives directly inside the platform and works against the data already stored in your warehouse.

Snowflake CoCo

What Cortex Copilot Actually Does

At its core, Cortex Copilot provides a natural language interface to Snowflake. The formal Snowflake CoCo documentation covers what is supported, and I admit I haven’t read it! I jump in, ask logical questions for real production problems and I get correct answers 90%+ of the time.

Off the top of my head, here are the tasks I have successfully tested CoCo that felt frictionless.

  • Validating queries multiple versions of queries
  • Setting up a new DBT project
  • Migrating views and materialized views to DBT models
  • Troubleshooting broken SQL
  • Granting permissions and RBS auditing tasks
  • Reviewing and troubleshooting YML for semantic models
  • Advanced searching based on table / view structure
  • Text to SQL
  • SQL diff comparison
  • Validating results between queries

Why This Matters for Data Teams

Most companies have invested heavily in building modern data stacks. Data warehouses, pipelines, and analytics tools are already in place. The pace of innovation from Snowflake has moved at a rate that is impossible to keep up with. Cortex provides a level playing field where new features, documentation, and best practices for using Snowflake, DBT, and other integrations has been packaged up as skills by the Snowflake team.

AI Where the Data Already Lives

One of the biggest advantages of Snowflake Cortex Copilot is aware of schema , semantic models, administrative functions and more. As modern co-pilot it enforces role based permissions and access policies. That has has been a breath of fresh air as I invite more information workers into Snowflake Workspaces. That was something that I never would have imagined starting 2026!.

How to Enable Snowflake Cortex in Snowflake

Getting started with Cortex requires only a couple of account level configuration changes.

First, enable the Cortex analyst functionality.

ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST = TRUE;

Next, allow access to the models that power the Cortex features.

ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION';

Some organizations prefer to restrict model access to a specific region. In that case the configuration can be set more narrowly.

ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US';

Once these settings are enabled, Cortex capabilities become available within the Snowflake platform.

Final Thoughts on Snowflake CoCo

Cortex Copilot represents a meaningful shift in how we can interact with Snowflake.

I have already wired up Snowflake Cortex Copilot CLI to work inside of Cursor. It’s not as fast, but the additional layer of planning, orchestration and micro-knowledge loops has transformed the way I work. I don’t use Claude Code, but I am sure it works the same there. If you want my template, feel free to contact me directly.

The barrier to entry to work with data is the lowest it has ever been with Snowflake CoCo! Happy coding.

Anatomy of a Modern AI Co-Pilot

Modern Co Pilot

What Actually Matters After Using AI for Production Productivity

Over the past year I have continued to find new peaks in productivity as a DataTools Pro. In this article, I break down some of the biggest unlocks I have experienced watching leaders build hyper growth businesses on the backs of well designed AI experiences. The common thread where I find the greatest productivity and rapid adoption is a well designed AI co-pilot… Work that requires human accountability, typically requires a human in the loop. Here are the tools I am using every day giving me move 2-5x faster than 2023.

  • Snowflake dev environments (Cortex Code) –
  • Repo-driven IDE workflows (Cursor)
  • Micro-Apps and prototyping (Lovable)
  • Product and Web Analytics (PostHog AI)
  • GPT / Claude chat interfaces
  • Video editing (Descript)

Breaking Down Features for Peak AI Co-Pilot Productivity

After dozens of experiments across tools I have attempted to apply lessons learned into our DataTools Pro, where we manage strategy, business semantics and metrics. Here is a framework that actually matters as I evaluate my own startups and what I adopt.


1. Multi-Turn Conversation

What it is

The ability to maintain context across iterative back-and-forth reasoning inside a session. It simulates short term cognitive continuity.

Without multi-turn, every request is stateless. With it, the AI remembers prior questions, assumptions, and constraints.

Why it matters

Real engineering work is iterative. You ask a broad question, narrow scope, introduce tradeoffs, refine logic. Multi-turn prevents constant context resets.

Example in action

  • GPT / Claude: You brainstorm architecture, refine it over 10–15 exchanges.
  • Cortex Code: You explore warehouse credit usage, then drill down into specific roles without re-briefing the account context.
  • Cursor: You modify a function, then adjust related files in follow-ups.
  • Lovable: You scaffold an app, then iteratively adjust schema and UI.
  • PostHog AI: You analyze funnel drop-offs, then pivot into retention metrics.

Multi-turn is table stakes now. But it only gives session continuity. It does not create long-term intelligence.


2. Context-Aware Reasoning

What it is

The model reasons against your environment, grounded on what you are specifically working on instead of abstract patterns based solely on the interaction itself.

  • Repository / code awareness
  • Metadata awareness
  • Change and usage logs
  • Visual awareness (screen grabs and computer vision).
  • App state (what you are doing in present moment or history).

Why it matters

This is the difference between “plausible” and “correct.”

Examples

  • Cortex Code: You ask, “Which warehouses consumed the most credits?” It generates SQL grounded in your actual Snowflake metadata.
  • Cursor: It refactors across your actual repo instead of hallucinating file names.
  • Lovable: It understands the state of the generated app and adjusts components coherently.
  • PostHog AI: It queries real event data to answer product questions.
  • GPT / Claude (standalone): Context awareness is limited to what you paste in manually.

Grounded context dramatically increases reliability and reduces hallucination.


3. Self-Reflection & Iterative Reasoning

What it is

The system critiques or refines its own output instead of stopping at first completion. This is effectively a quality control layer.

Why it matters

Speed without reflection creates brittle systems. Reflection increases decision quality.

Where we’ve seen this

  • PostHog AI: Agent loops evaluate output and adjust before finalizing analysis.
  • Cursor (partial): When prompted explicitly, it can compare approaches and refactor more carefully.
  • GPT / Claude: Capable, but requires manual prompting (“critique this”).
  • Cortex Code: Typically direct generation, not built-in critique loops.
  • Lovable: Focused on generation speed over architectural reflection.

Reflection is not default behavior in most tools. It has to be engineered or prompted


5. Agent Workflows & Task Loops

What it is

The ability to break down an objective function and execute step-by-step with intermediate evaluation is how most people problem solve and execute. Agents that summarize work before execution creates a much better experiences in my opinion.

Why it matters

This shifts AI from “answering questions” to “completing tasks”; one day completing goals

Strong examples

  • Cursor: Multi-file planning and stepwise refactors.
  • Lovable: Full-stack app scaffolding from high-level instructions.
  • PostHog AI: Analytics agents running multi-step investigations.
  • Cortex Code: Less agentic, more query-focused based on questions.
  • GPT / Claude: Capable but requires manual orchestration.

This is where copilots begin to feel like collaborators instead of search engines, is when they demonstrate understanding. Breaking down problems into its smallest parts and recommending next steps is where you truly feel like you have a “co-pilot.


Exciting Innovations I’m Looking for in an AI Copilot

After running these systems in real workflows, I look for 3 capabilities will make co-pilots even more useful!

Controlled and Secured Autonomy with Safe Reversion

As AI edits files, runs queries, or executes workflows, autonomy increases. AI accesses data it shouldn’t have. How do you recover? That is the “trust layer” that needs to be engineered at every layer of your technology stack.

A mature system must provide:

  • Suggest-only mode
  • Controlled edits
  • Test execution
  • Refactor execution
  • Deterministic rollback

Trust is built through reversibility.

Cursor approaches this through diff visibility. Most others still lack robust autonomy controls.


Persistent Structured Memory

Long term cognitive continuity.. (Long-Term Cognitive Continuity). For now, I am collecting a mountain of “know how” in the form of MD files and knowledge bases across multiple domain specific tools. ChatGPT is still my favorite to recall fragments of work and reasoning.

A fun experiment is open ChatGPT and ask

What is it like to work with me? What are my top 3 strengths and what are my top 3 weaknesses.

What We’ve Learned from Lab Experiments

Embedding AI copilots into production workflows shifts the evaluation criteria. AI feels magical until you know what the output should be. That is why I look to best of breed co-pilot experiences as the guiding light for what I should working toward.

Multi-turn was the first wave. Agent workflows were the second. The next frontier is institutional intelligence where AI not only reasons in the moment, but compounds over time. That is why our investments in DataTools Pro from day 1 has been cultivating business semantics from existing systems of record (Salesforce) and systems of understanding (Snowflake, Tableau).

Worksheet User Alternatives to Snowflake Workspaces

For the last 5 years, I have enjoyed deploying Snowflake workheets to data workers who wanted quick, secure access to curated data assets. I was recently sent scrambling to find alternatives to Snowflake workspaces for data worker roles who are not engineers by trade.

Worksheets were a quick and easy way to access data, administer Snowflake, and share SQL. Recently, Snowflake rolled out its next-generation Snowsight experience. The default SQL authoring experience shifted from a minimalistic editor to a IDE (integrated development environment) user experience.

Why are our users looking for an alternative to Snowflake Workspaces?

There are 3 reasons why customers have immediately asked me for an alternative to Snowflake Workspaces.

  1. Confusing and overwhelming user experience – My users are using words like “hate” and “complex” to describe their experience. After a few weeks, some have adapted but I have seen usage plummet.
  2. Sharing – The previous snowflake worksheets function had a native sharing function, allowing users to start with templates that were run-only. Overnight, users’ worksheets are fragmented and no longer shared.
  3. Errors and settings– A lot of worksheets that ran stopped when a worksheet database and schema were either deselected.

Shifting Dataworkers to Notebooks

The easiest path for data workers is to shift to Notebooks, which provides a clean and minimalist experience, with a linear, guided path through data / analysis. I personally love working in notebooks. The added benefit of source control with GitHub makes it a viable solution to control and share, but requires access control across tools.

As of Nov 2025, similar to Workspaces, there is no Snowflake-managed “sharing” function.

Marketplace: Streamlit App

I searched the marketplace looking for a solution and came up short. As a result, we built our own solution called DataTools Pro Explorer. We went the low-code route and created a point-and-click exploration tool to quickly access and refine data to the right grain and cut, allowing users to save and then modify the SQL as needed. We kept it very simple and released early. The feedback has been amazing, and we continue to improve and refine DataTools Pro Explorer every two weeks.

View and Install DataTools Pro Explorer in Snowflake Marketplace – It’s free! | View Documentation

Moving from Cloud Themed IDE to Real IDE

We trust that Snowflake had plenty of data and interviews to support building a browser IDE UX for technical users vs the classic minimalistic SQL worksheet editor. DBT Cloud has a proven and battle-tested cloud experience. Frankly, we struggled getting it working for multiple clients. Now, we use DBT natively with Snowflake with clients.

Most of the engineers and data scientists we work with already use their preferred IDE to work with Snowflake. The DataTools Pro team officially moved from VS Code to Cursor as our standard IDE setup. That move with built-in AI co-pilot and agents has been a wonderful move.

Moving Data Work out of Snowflake: Modern Data Delivery & BI Tools

There is no shortage of BI tools purposely built for data workers to access, slice, and dice data. The reality is that Excel is the number 1, ubiquitous data tool for data workers. Modern BI platforms built for cloud lean in heavily and provide very powerful spreadsheet abilities. For data wrangling use cases, I am lucky enough to have Datameer at my disposal. lt remains our top data tool for end-to-end data delivery.

Datameer

We use traditional enterprise-grade BI Platforms like Tableau and Power BI.. There is a wide range of modern analytics platforms like Sigma, Hex, and many others that were purposely built for cloud data platforms like Snowflake.

What about AI?

If you got to the end of this article wondering, “what about an AI chatbots”? I do believe there will be a time and place but I am cautiously optimistic.

Snowflake listens and evaluates its users and has already buttoned up some loose ends, navigating between Snowflake Horizon Catalogue and workspaces. I anticipate worksheets continuously improving. If you need help getting higher adoption from Snowflake, we are happy to help! Check out DataTools Pro Explorer in Snowflake Marketplace and let us know what you think… It’s free!

Adventures with Snowflake MCP and Semantic Views

Snowflake MCP and Claude

Last month, I had an opportunity to roll up my sleeves and start building analytics with Snowflake MCP and Snowflake Semantic Views. I wanted to see how far I could push real-world analyst and quality assurance scenarios with Tableau MCP and DataTools Pro MCP integration. The results gave me a glimpse of the future of AI/BI with real, production data. My objective was to deliver a correct, viable analysis that otherwise would have been delivered via Tableau.

The time spent on modeling my data, providing crystal clear semantics, and using data with 0 ambiguity helps. My results delivered great results, but I ended the lab with serious concerns over governance, trust, and quality assurance layers. This article highlights my findings and links to step-by-step tutorials.

Snowflake MCP and Claude

Connecting Claude, Snowflake MCP, and Semantic Views

The first step to connect all of the components was building my Snowflake Semantic views. Snowflake MCP gave me the framework to orchestrate queries and interactions, and using Snowflake Semantic Views gave me the lens to apply meaning. All of my work and experimentation occurred in Claude. This gave me the AI horsepower to analyze and summarize insights. To connect Snowflake to Claude, I used the official Snowflake MCP Server, which is installed on my desktop and configured in Claude.

Together, these tools created a working environment where I could ask questions, validate results, and build confidence in the answers I got back.


Creating Snowflake Semantic Views

With my Snowflake Semantic View setup, I spent some time researching and reading other folks’ experiences on semantic views. I highly recommend having a validated and tested Semantic view before embarking on AI labs. If you don’t know what metadata to enter into your Semantic View, seek additional advice from subject matter experts. AI can fill in blanks, but it shouldn’t be trusted to invent meaning without human oversight: Why AI-Generated Meta-Data in Snowflake Semantic Views Can Be Dangerous

Bottom line… Begin with a simple and concise Snowflake semantic model. Build clearly defined dimensions and measures. Use real-world aliases and refrain from using AI to fill in the blanks, unless your objective. Layer on complexity once you’re comfortable with the results.


What Worked Well

  • Control over data access
    Thankfully, the Snowflake MCP is limited to semantic views and Cortex search. The opportunity and value of Cortex search cannot be understated. I will cover that in another post. The idea of unleashing an AI agent with elevated permissions to write SQL on your entire data warehouse is a governance nightmare. Semantic Views gave me the ability to scope exactly what Claude could see and query.
  • Accuracy of results
    The top questions I get during AI labs: “Is this information correct?” I had a validated Tableau dashboard on my other monitor to validate the correctness of every answer.
  • Simple to complex questioning
    My recommendation with any LLM-powered tool is to start with high-level aggregate questions. Use these to build a shared understanding and confidence. Then, grounded on validated facts, you can drill down into more detailed questions with confidence. This approach kept me in control when the analysis moved beyond existing knowledge and available analysis.

Where I Got Stuck

Three challenges slowed me down:

  1. Metadata gaps – When the semantic layer lacked clarity, Claude produced ambiguous answers. It isn’t garbage in, garbage out problem…. It is me having a level of subject matter expertise that was not captured in my semantic layer or in a feedback loop to make the AI system smarter. LLM analysts feel less magical when you know the answers. That is where adding Tableau MCP allowed a pseudo peer review to occur.
  2. Over-scoping – When I got greedy and exposed too many columns, ambiguity crept in. AI responses became less focused and harder to trust. Narrower scope = better accuracy.
  3. Context Limits– I had Claude do a deep analysis dive. I also had it code a custom funnel dashboard that perfectly rendered a visual funnel with correct data. At some point, Claude explained that my context limit had been reached. My analysis hit a brick wall, and I had to start over. Claude is a general-purpose AI chatbot, but it was still disappointing to hit a stride and have to stop working.

Risks You Should Know

If you’re using AI to build your semantic layer, you need to be aware of the risks:

  • AI-generated semantics can distort meaning. It’s tempting to let an LLM fill in definitions, but without context, you’re embedding bad assumptions directly into your semantic layer: Why AI-Generated Meta-Data in Snowflake Semantic Views Can Be Dangerous
  • Do not give LLMs PII or Sensitive PII. As a rule of thumb, I do not add PII or sensitive PII into semantic models. I hope that at some point we can employ Snowflake aggregation rules or masking rules.
  • Governance blind spots. Connecting the Snowflake MCP requires access from your desktop. For governance, we use a personal access token for that specific Snowflake user’s account. That ensures all requests are auditable. Beyond a single user on a desktop, it’s unclear how to safely scale the MCP.
  • False confidence. Good syntax doesn’t equal good semantics. Always validate the answers against known results before you scale usage.

Final Take

Snowflake MCP and Semantic Views are still very much experimental features. They provide a glimpse of what will be possible when the barrier and access to governed, semantically correct data are removed.

In my case, I employed DataTools Pro for deeper metric glossary semantics and a writeback step via Zapier to capture learnings, re-directions, and insights for auditing purposes. If you would like assistance setting up a lab for testing, feel free to contact us to set up a complimentary session

Why AI-Generated Meta-Data in Snowflake Semantic Views Can Be Dangerous

Snowflake AI Semantic Views

I will never complain about having more metadata to improve visibility and understanding. Snowflake Semantic Views is an exciting development that our team jumped on to experiment with our client AI innovation labs. The whole purpose of building and governing semantics in your data warehouse and analytics platforms is to create meaning for the consumption of data.

Every enterprise approaches business analysis and requirements gathering for data engineering differently. At DataTools Pro, our entire business model centers on metrics governance and semantics. Our deep understanding of business drivers and outcomes is why we’re excited about the new Snowflake Semantic Views.

Unfortunately, we’ve also uncovered a major issue… It accelerates creation but could undermine long-term success and adoption of semantic views in Snowflake.

The problem: Using AI to automatically prepare and fill your semantic layer is a “use at your own risk” shortcut.


Why AI-Prepared Semantics Without Context Is Dangerous

If you don’t truly understand the meaning of the data in your Snowflake view, you shouldn’t rely on AI to generate the semantic model metadata.

AI tools like Snowflake Cortex can scan your data and infer semantics. This is dangerous because it creates a risk of distortion and misunderstanding for future users. The purpose of a semantic view is to apply clear, shared meaning to data, which helps with discovery, context, search, and analysis.

For example, imagine you run into a credit risk semantic view for business loan applications. Columns are labeled as:

  • AVG Sales
  • Monthly Gross Sales
  • Avg Balance
  • Annual Gross Sales

These are all distinct measurements with specific meanings and purposes to understand the financial stability of a client and the capacity for borrowing. Credit analysts rely on those differences for accurate analysis. If you let Cortex AI infer semantics and aliases here, you risk collapsing those distinctions, introducing confusion, and ultimately devaluing future AI tools that depend on your semantic view.


Lessons Learned Building Semantics and Metrics Glossaries at DataTools Pro

When we design a semantic view in Snowflake, we already have a metrics glossary for our clients taken directly from their loan origination system and credit-risk scorecard. We use AI less to infer meaning but rather to understand and infer disparity in existing semantics. Our learnings over the years is a key to a strong semantic model is not just labels. It’s the business definitions, descriptions, logical expressions, and taxonomy details that connect the dots for both business and AI consumers, along with a detailed plain English description without technology jargon.

This is why semantics must be curated by people who understand the business context. AI can help accelerate the process, but it cannot replace human interpretation of meaning

When we load and analyze data with Snowflake Semantic views using Snowflake MCP, we also load DataTools Pro metric glossary at the same time with Zapier.


Our Recommendations: Getting Started with Snowflake Semantic Views

  1. Begin with a narrow, well-understood dataset.
    Choose data that already supports reporting and analytics so you can validate and build trust in the model.
  2. Use AI for drafts, not for decisions.
    Let AI suggest aliases or descriptions, but then sit down with subject matter experts to review and fill in metadata manually. This highlights exactly how far off AI can be.
  3. Expand where pain is high.
    Add new semantic views for topics and problems that cause outsized pain for business users. Even if they seem lower in strategic priority. These quick wins build adoption and credibility.

Bottom Line on Snowflake Semantic Views

Snowflake Semantic Views should be built with trust and meaning top of mind… not speed. Using AI alone to populate your semantic metadata is a shortcut that risks undermining the very purpose of the Snowflake Semantic view. Start small, work smart, validate with real analytics, and lean on your experts to build something amazing! If you need help, feel free to set up a free consultation.

Hubspot cohort analytics with Snowflake and Datameer

Hubspot Cohort analytics on Snowflake

Creating Hubspot cohort analytics is quite simple once you understand and prepare your funnel data properly. In this video, I decided to share in detail how I prepare data in Snowflake using Datameer. In this demo, I narrow in on the organic exploration and understanding of data that is lacking from many data and analytics solutions.

Implementing technology solutions that move and transform data is simple work

  • Moving data from Hubspot to Snowflake should require only a handful of clicks.
  • Connecting and joining Deals & Contacts to a Deals_Contacts in Snowflake should require a few lines of code.

Creating understanding and adoption of data assets intended for analytics & business outcomes is hard work

  • Creating understanding of data and desired outcomes across business and technical teams
  • Alignment of data “completeness and correctness” for data that is naturally imperfect
  • Delivery and adoption of data/analytic
  • Change management across systems, business definitions and teams.

Understanding and modeling data to fit a desired outcome is where the real work begins and why I am so bullish on Snowflake + Datameer.

In today’s video, we dive into the technical details and process how we use Datameer to explore, transform and publish HubSpot cohort analytics data directly inside of Snowflake.

Hubspot Cohort analytics in Snowflake video:

  • How to handle junction tables between contacts and deals
  • How to filter and reduce raw data into business-ready tables
  • How to visually explore and validate record matches
  • How to deploy clean, validated data sets as Snowflake views or tables
  • Change management, source control, and promotion management

Whether you’re building cohort analyses, revenue attribution, or funnel-to-ERP connections, this is how we go from messy CRM data to clean, trusted insights.

Need help building Hubspot analytics or setting up Snowflake

Setup a free consultation

Feeding Data from Facebook Ads to Snowflake

Facebook Ads to Snowflake

This week, I decided to take my exploration of Snowflake external interface to pump data from Facebook Ads to Snowflake. I took a template that I previously used for Hubspot meta data analysis and rolled those learnings into building a Facebook data tool. A little ChatGPT guidance had me up and running within 20 minutes.

Security and Permissions Guidance and Requirements

Before you jump in and start clicking through this tutorial there are some considerations you need to run this end to end.

1 Access to a real Facebook ads account– When you complete the setup, you preferably want to test and valdiate against a real Facebook ads account. The same developer account you use, will need direct access to a Facebook ads account.

2. Snowflake Enterprise – You will need a full, registered version of Snowflake enterprise to utilize external interface to run this stored procedure.

3 Access to Snowflake AccountAdmin– This process requires external interface to be enabled and a network rule grating access to Facebook graph API. To do that you need AccountAdmin access or request your Snowflake admin to enable this feature. This tutorial explains all of the components, so you may want to pass this along to your admin along with a formal request to enable this feature.

Setup your Facebook App and Acquire a Token

Login to Facebook Developer Console and view “My Apps”

Create a new App in Facebook developer console

Select “Setup” for “Marketing API” so you can access APIs that will ultimately deliver your data into Snowflake.

To pull Facebook Ads insights (like impressions, spend, clicks). In my case, I am reading and analyzing data so I just checked the “read” permissions.

  • ads_read → Required for reading ad data
  • read_insights → Required to access ad performance metrics
  • ads_management(Optional) Only needed if you’re modifying campaigns or fetching extra account metadata (not required for read-only insights)

Click “Get Token” and store it in a secure key vault or key management tool.

Setup your Snowflake for Facebook Ads data

Login to your Snowflake org

Create a table that will store your staged data. I called my table “AD_INSIGHTS” that resides within a FACEBOOKADS schema.

-- CREATE TABLE TO HOLD

  CREATE OR REPLACE TABLE <<YOURDB>>.FACEBOOKADS.AD_INSIGHTS (
  METADATA VARIANT,
  LAST_UPDATED TIMESTAMP,
  TABLENAME STRING
);

Create a secret to hold your Facebook access token securely. This is the same token you acquired in the steps outlined earlier in this tutorial.

CREATE OR REPLACE SECRET facebook_access_token
  TYPE = GENERIC_STRING
  SECRET_STRING = 'PASTE_YOUR_ACCESS_TOKEN_HERE';

Create a network rule that will allow Snowflake to connect to Facebook graph API. This requires elevated permissions in your Snowflake org.

CREATE OR REPLACE NETWORK RULE facebook_api_rule
  MODE = EGRESS
  TYPE = HOST_PORT
  VALUE_LIST = ('graph.facebook.com');

Create external access integration. This requires elevated permissions in your Snowflake org.

  CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION facebook_integration
  ALLOWED_NETWORK_RULES = (facebook_api_rule)
  ALLOWED_AUTHENTICATION_SECRETS = (facebook_access_token)
  ENABLED = TRUE;

Create a stored procedure to connect and return raw JSON data to Snowflake

CREATE OR REPLACE PROCEDURE <<YOURDB>>.FACEBOOKADS.FETCH_AD_INSIGHTS(ad_account_id STRING, date_preset STRING)
  RETURNS STRING
  LANGUAGE PYTHON
  RUNTIME_VERSION = 3.10
  PACKAGES = ('snowflake-snowpark-python', 'requests')
  HANDLER = 'main'
  EXTERNAL_ACCESS_INTEGRATIONS = (facebook_integration)
  SECRETS = (
    'facebook_access_token' = <<YOURDB>>.FACEBOOKADS.FACEBOOK_ACCESS_TOKEN
  )
  EXECUTE AS OWNER
AS
$$
import _snowflake
import requests
import datetime
import json
from snowflake.snowpark.types import VariantType, TimestampType, StringType, StructType, StructField

def main(session, ad_account_id, date_preset):
    token = _snowflake.get_generic_secret_string('facebook_access_token')
    
    url = (
        f"https://graph.facebook.com/v19.0/act_{ad_account_id}/insights"
        f"?fields=campaign_name,ad_name,impressions,clicks,spend"
        f"&date_preset={date_preset}&access_token={token}"
    )
    
    response = requests.get(url)
    if response.status_code != 200:
        return f"Error: {response.status_code} - {response.text}"
    
    raw_json = json.loads(response.text)
    now = datetime.datetime.utcnow()

    schema = StructType([
        StructField("METADATA", VariantType()),
        StructField("LAST_UPDATED", TimestampType()),
        StructField("TABLENAME", StringType())
    ])

    df = session.create_dataframe([[raw_json, now, ad_account_id]], schema=schema)
    df.write.mode("append").save_as_table("<<YOURDB>>.FACEBOOKADS.AD_INSIGHTS")

    return f"Success: ad insights for account '{ad_account_id}' inserted."
$$;

Obtain a campaign ID that you have access and permissions to:

Execute and request your performance data.

CALL <<YOURDB>>.FACEBOOKADS.FETCH_AD_INSIGHTS('<<YOURADACCOUNTID>>', 'last_7d');

Note: Your should NOT prefix your account ID with any values like “act_“. The stored procedure pre-filles that prefix.

Your results should load into <<YOURDB>>.FACEBOOKADS.AD_INSIGHTS as JSON.

In the next tutorial on this topic, I will share the SQL I use to parse ads data, analyze and weave in performance with my CRM data.

Replace Alteryx Self Service Chaos

Alteryx Migration

At DataTools Pro, we are longtime users of Alteryx and have termed it the ultimate data Swiss-Army knife. Having to replace Alteryx for enterprises is not an easy decision because skilled Alteryx builders are wildly productive turning data into information.

The power of Alteryx is the ability to rapidly transform and validate disparate data without writing code. This pattern remains ideal for analysts who struggle to automate complex data workflows in Excel. Data engineers who would typically write code to transform data sometimes lack business context and experience understanding acceptable validation rules. The symbiotic rise of Tableau allowed Alteryx as a high quality “ETL for Analysts” solution thrived.

Alteryx Rocketship : The State of Data in 2010-2020

  1. Data management and business intelligence were centralized but moving toward self service
  2. Analytics turn times were measured in quarters and years
  3. Data and BI teams were severely backlogged and unable to meet demand
  4. Data was spread across windows file shares and on premise databases
  5. Large enterprise data warehouses were extremely slow to develop
  6. The rise of self service visualization with Tableau created the perfect symbiotic relationship

No-Code can get in the way of efficiency

A few years ago, while using Alteryx with Snowflake, I found myself leaning on the Alteryx Python tool to handle extreme edge cases where 10-15 nodes could be expressed in a few lines of code. For example, a rolling 60 business day (minus bank holiday) window function is something we created as a UDF in Snowflake.

Shift from ETL to ELT

As a head of data and analytics and now as a consultant using Snowflake has been a game changer. As an enabling technology, it has democratized the data warehouse the same way Alteryx did for no code ETL 15+ years ago. Now, I can pump millions or hundreds of millions of rows into Snowflake with low storage costs, process, and then deliver to any analytics tool securely.

There are many new drag and drop, flow based solution that have learned and improved on the ETL tools that came before. When it comes to analytics-focused data flows for Snowflake, Datameer has long been my choice after discovering them looking for a low code solution to handle the transformation layer.

Demystifying Alteryx Flows like Messy Code

A SQL engineer can solve problems with un-optimized, difficult to follow code. Similarly an Alteryx builder can create overly complex flows, or worse stitch many flows together that can take days to decouple. In 2025, I can take tens of thousands of lines of SQL code, pump it into ChatGPT and immediately demystify, document and understand what to do next. An Alteryx installation that has grown over time naturally accumulates technical debt.

To demystify Alteryx, there are numerous tools that we use to inventory and understand Alteryx Flows.

Why Replace Alteryx with Snowflake Powered Data, Analytics and AI

Cost, complexity and operational risk are the three consistent themes we see for clients looking for alternatives to Alteryx. There are numerous tools in the market for no-code flows that have advanced beyond Alteryx. We are happy to introduce you to them.

If your enterprise’s data strategy calls for using Snowflake as the core data platform for analytics and AI, we highly recommend Datameer!

We are here to help you inventory and plan your migration


DataTools Spotlight: Datameer is our Snowflake Tool of Choice

Datameer

For this month’s DataTools spotlight, I wanted to share my long time favorite for Snowflake tool, Datameer. Years ago, I found Datameer solved my slow Snowflake adoption problem. My team was loaded with requirements but had only one data engineer on staff. Historically we used Alteryx and Tableau prep to get by. Extracting data from Snowflake to transform and insert into Snowflake was a pattern that didn’t make sense. Years ago, I shared the story how slow adoption turned around with Datameer where we delivered 20 models to production in a couple of months. That resulted in us turning off Tableau Prep and Alteryx.

As that story progressed, times got tough and we had to do more with fewer human resources. Datameer was the only way we could keep up with change management and new requests. Those are the stories you don’t lead with as case study, but I can openly share that experience now with my own clients as DataTools Pro.

Snowflake tool - Union

In 2024, I continued writing about my Snowflake experiences with Datameer. In the last year, Datameer has continued to level up its enterprise grade features while continuing to add time savings features for individual contributors.

When I use Datameer for Snowflake

There are three primary scenarios where Datameer makes sense for Snowflake customers.

  1. Accelerating Snowflake adoption and deployment of data models
  2. Empower analysts on Snowflake while keeping data in Snowflake
  3. Eliminate self-service data prep tech debt

To elaborate on this third point, I have recently run into massive, complex Tableau + Alteryx self service installations. I love Alteryx and Tableau for data exploration and dashboards as an individual contributor. However, watching enterprises lose control over the volume, velocity, and cost of self-service is painful to see.

In recent years, the pendulum has swung back, as companies have invested in modern data platforms like Databricks, Snowflake, Fabric, and Google Cloud Platform. When it comes to Snowflake, as a practitioner, I haven’t found anything that makes it easier than Datameer to wrangle and prepare data in Snowflake for business consumption. I have started chronicling how to convert Alteryx to SQL Snowflake.

Datameer flow

Enterprise Snowflake tool features that matter

From scheduled data delivery via email to publishing fact tables for business intelligence tools like Tableau and Power BI, Datameer provides speed, control, governance, lifecycle management, and cost management in one package.

  • Native Snowflake means data remains in Snowflake
  • A user experience built for speed
  • No-code where you want it, low-code where you need it!
  • Seamless SDLC, code rollback and environment promotion management
  • Generate views or materialize tables
  • Built in data validation and exploration
  • Removes proprietary tool lock-in and points of failure.
  • Predictable enterprise pricing

I was happy to be an early adopter of Datameer while working for a small enterprise. Now, I get to use Datameer once again with medium and large enterprises. If you are on Snowflake or making the move to Snowflake and need to accelerate adoption, feel free to reach out, and I’d be happy to give you a walkthrough.


Previous Spotlight