<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Digital Hive blog</title><description>CRM, Data and Marketing insights</description><link>https://www.digitalhive.be/</link><item><title>Headless 360 could change how we think about CRM</title><link>https://www.digitalhive.be/post/headless-360-could-change-how-we-think-about-crm/</link><guid isPermaLink="true">https://www.digitalhive.be/post/headless-360-could-change-how-we-think-about-crm/</guid><description>Salesforce and Anthropic announced Claudeforce this week, bringing Claude much deeper into the Salesforce ecosystem. Claude will be able to work with Salesforce data and actions, while Salesforce is also making Claude available within Agentforce and other parts of its AI stack.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Salesforce and Anthropic announced Claudeforce this week, bringing Claude much deeper into the Salesforce ecosystem. Claude will be able to work with Salesforce data and actions, while Salesforce is also making Claude available within Agentforce and other parts of its AI stack.&lt;/p&gt;
&lt;p&gt;There is plenty to unpack in the partnership itself, but one part of the announcement caught my attention more than anything else: &lt;strong&gt;Headless 360&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I think this is potentially much more important than the introduction of yet another AI assistant. It points towards a fundamental change in how we interact with CRM systems, and I expect that change to become very visible over the next two years.&lt;/p&gt;
&lt;h2&gt;From working in CRM to working with CRM&lt;/h2&gt;
&lt;p&gt;CRM has traditionally been an application that users have to actively work in. A salesperson opens Salesforce, navigates to an account or opportunity, looks at activities and dashboards, interprets that information and decides what to do next. Afterwards, they update the opportunity, create a task or move to another application to send an email or discuss something with a colleague.&lt;/p&gt;
&lt;p&gt;We have spent a lot of time over the years trying to make that experience better. We simplify page layouts, remove unnecessary fields, build better dashboards and automate administrative tasks. A significant part of CRM adoption is ultimately about making it as easy as possible for people to correctly use the system.&lt;/p&gt;
&lt;p&gt;Headless 360 starts to challenge that model.&lt;/p&gt;
&lt;p&gt;Salesforce is exposing its applications and business capabilities so that authorized AI agents can discover and invoke them through technologies such as MCP and APIs. Those agents don&amp;#39;t necessarily have to live inside Salesforce. Salesforce explicitly mentions Agentforce, Claude, ChatGPT, Cursor and other AI platforms.&lt;/p&gt;
&lt;p&gt;That means the user no longer necessarily needs to go through the Salesforce interface to use Salesforce.&lt;/p&gt;
&lt;p&gt;Imagine a salesperson starting the morning in Slack and asking what deserves their attention today. An AI agent could analyze the pipeline in Salesforce, combine it with recent customer communication, documents and internal conversations, and identify a few opportunities that require action. Instead of simply presenting a dashboard, it can explain why those opportunities matter and suggest what should happen next.&lt;/p&gt;
&lt;p&gt;The user can then continue the conversation and ask the agent to execute those actions. Salesforce is updated, tasks are created and the appropriate workflows are triggered in the background.&lt;/p&gt;
&lt;p&gt;The important thing is that Salesforce hasn&amp;#39;t disappeared from this scenario. In fact, almost everything still depends on Salesforce. What has disappeared is the requirement for the user to interact directly with the Salesforce application.&lt;/p&gt;
&lt;p&gt;That is a very different definition of CRM.&lt;/p&gt;
&lt;h2&gt;Salesforce as a business platform rather than a user interface&lt;/h2&gt;
&lt;p&gt;The move towards headless architecture isn&amp;#39;t unique to CRM, but applying it at this scale to enterprise applications has interesting consequences.&lt;/p&gt;
&lt;p&gt;Salesforce can increasingly become the underlying business platform that provides customer data, permissions, metadata, workflows and business logic, while another layer determines how users interact with those capabilities.&lt;/p&gt;
&lt;p&gt;Today, we still tend to think of a Sales Cloud implementation as an application. In a more headless future, Sales Cloud could increasingly be considered a collection of trusted business capabilities that can be consumed by humans, agents and other applications.&lt;/p&gt;
&lt;p&gt;An AI agent doesn&amp;#39;t need to understand where a particular button sits on an Opportunity page. It needs to understand what an Opportunity is, what information is available, which business rules apply and which actions it is allowed to perform.&lt;/p&gt;
&lt;p&gt;That distinction matters.&lt;/p&gt;
&lt;p&gt;It also explains why I find Headless 360 strategically more interesting than Claudeforce itself. Salesforce is effectively accepting that it doesn&amp;#39;t necessarily need to own the interface through which users consume Salesforce.&lt;/p&gt;
&lt;p&gt;If Salesforce can remain the trusted layer underneath those interfaces, it can benefit regardless of which AI assistant ultimately becomes dominant.&lt;/p&gt;
&lt;h2&gt;Slack could become a much more logical place to work&lt;/h2&gt;
&lt;p&gt;This also makes Slack particularly interesting within the Salesforce ecosystem.&lt;/p&gt;
&lt;p&gt;CRM has never been the place where all work happens. Teams discuss opportunities, customers and projects elsewhere. Documents live in different systems. Decisions are made in conversations and meetings. CRM is often the place where the result of that work is eventually recorded.&lt;/p&gt;
&lt;p&gt;An AI agent changes that relationship because it can connect the conversation with the underlying business systems.&lt;/p&gt;
&lt;p&gt;A discussion about a customer in Slack could immediately include the relevant Salesforce context without someone having to open the account. The agent could identify missing information, retrieve a document, explain the status of an opportunity and eventually execute an action in Salesforce.&lt;/p&gt;
&lt;p&gt;That feels like a more natural working model to me than trying to move every activity into CRM.&lt;/p&gt;
&lt;p&gt;It also makes Salesforce&amp;#39;s ownership of Slack strategically important. Slack can become the collaboration environment where humans, documents and AI agents come together, while Salesforce provides much of the structured business context and execution behind it.&lt;/p&gt;
&lt;h2&gt;But where does this leave Agentforce?&lt;/h2&gt;
&lt;p&gt;This is the part of the announcement where I still have more questions than answers.&lt;/p&gt;
&lt;p&gt;Claude is becoming an increasingly capable general-purpose agent. It can reason across documents, conversations and multiple enterprise systems. With Headless 360, it can now also discover and invoke Salesforce capabilities.&lt;/p&gt;
&lt;p&gt;At the same time, Salesforce continues to invest heavily in Agentforce and is integrating Claude as a reasoning model within it.&lt;/p&gt;
&lt;p&gt;That creates an interesting overlap.&lt;/p&gt;
&lt;p&gt;If Agentforce is primarily positioned as an intelligent assistant that understands Salesforce and performs Salesforce actions, I think it risks being surpassed by general-purpose agents such as Claude. Those agents aren&amp;#39;t limited to the Salesforce ecosystem and can reason across a much broader working context.&lt;/p&gt;
&lt;p&gt;However, I don&amp;#39;t think that necessarily makes Agentforce obsolete.&lt;/p&gt;
&lt;p&gt;Its role may simply have to evolve.&lt;/p&gt;
&lt;p&gt;Instead of competing with Claude on intelligence, Agentforce could become the Salesforce-native orchestration and governance layer for agents. It could determine which capabilities an agent can use, which actions it can execute, when human approval is required, which model is appropriate for a particular task and how all of those actions are monitored.&lt;/p&gt;
&lt;p&gt;In that model, Claude and Agentforce aren&amp;#39;t necessarily competitors.&lt;/p&gt;
&lt;p&gt;Claude can provide much of the reasoning, while Agentforce provides the controlled environment in which that reasoning can safely interact with Salesforce.&lt;/p&gt;
&lt;p&gt;I think this distinction will become important over the coming years. Salesforce will need to make the boundaries between Claude, Agentforce and Headless 360 increasingly clear. If all three are presented as different ways of creating intelligent Salesforce assistants, the proposition becomes confusing. If they become distinct layers in an enterprise AI architecture, the combination becomes much more compelling.&lt;/p&gt;
&lt;h2&gt;Governance becomes more important as the interface disappears&lt;/h2&gt;
&lt;p&gt;There is another reason why I don&amp;#39;t think Salesforce becomes less relevant in a headless world: governance.&lt;/p&gt;
&lt;p&gt;Reading Salesforce data with an AI assistant is relatively straightforward. Allowing an agent to actually perform business actions is a completely different matter.&lt;/p&gt;
&lt;p&gt;Once an agent can update forecasts, change customer information, generate quotations, trigger approvals or communicate with customers, organizations need very clear answers to some basic questions.&lt;/p&gt;
&lt;p&gt;What is the agent allowed to see? Which user is it acting on behalf of? Which actions can it execute autonomously? When does a human need to approve something? Which existing business rules still apply? And can the organization afterwards understand what the agent did and why?&lt;/p&gt;
&lt;p&gt;This is where Salesforce has a significant advantage.&lt;/p&gt;
&lt;p&gt;Organizations have spent years building their identity models, permissions, workflows, validation rules, approval processes and business logic into Salesforce. Headless doesn&amp;#39;t mean bypassing that layer. The value is precisely that external agents can use Salesforce capabilities while those controls remain in place.&lt;/p&gt;
&lt;p&gt;In my view, this will become one of the most important architectural principles for enterprise AI.&lt;/p&gt;
&lt;p&gt;The smartest model won&amp;#39;t automatically win in an enterprise context. Organizations also need a reliable execution layer around that intelligence.&lt;/p&gt;
&lt;h2&gt;This will also change what a good CRM implementation looks like&lt;/h2&gt;
&lt;p&gt;The consequences go beyond Salesforce&amp;#39;s product strategy.&lt;/p&gt;
&lt;p&gt;If users increasingly interact with CRM through AI agents, some of the things we currently spend significant implementation effort on will become less important, while others become considerably more important.&lt;/p&gt;
&lt;p&gt;We will probably spend less time debating exactly where a field should appear on a page or how many clicks a salesperson needs to perform a certain action.&lt;/p&gt;
&lt;p&gt;Instead, the quality of the underlying CRM model becomes critical. Data needs to be structured correctly. Business processes need to be explicit. Permissions need to make sense. Automations need to be predictable. The meaning of data needs to be clear enough for an agent to correctly interpret it.&lt;/p&gt;
&lt;p&gt;Data quality becomes even more important as well. Poor data is annoying when a human is looking at a dashboard. Poor data becomes dangerous when an autonomous agent is making decisions and executing actions based on it.&lt;/p&gt;
&lt;p&gt;The same applies to badly designed processes. AI can make a good process dramatically more efficient, but it can also execute a bad process at unprecedented speed.&lt;/p&gt;
&lt;p&gt;For CRM consultants, I think this accelerates a shift that was already happening. Deep product knowledge will remain valuable, but knowing which Salesforce button to configure becomes less differentiating. Understanding the business, designing good processes, structuring data and translating business objectives into governed technology becomes much more important.&lt;/p&gt;
&lt;h2&gt;The next two years could fundamentally change CRM&lt;/h2&gt;
&lt;p&gt;I don&amp;#39;t expect traditional CRM interfaces to disappear in two years. There will still be users working directly in Salesforce, and there will still be plenty of use cases where a structured application interface is the best way to work.&lt;/p&gt;
&lt;p&gt;But I do think the balance will change quickly.&lt;/p&gt;
&lt;p&gt;The question we have asked for years has been: &lt;strong&gt;how do we get users to work better in CRM?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Headless 360 introduces a different question: &lt;strong&gt;how can CRM support users wherever they are already working?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That sounds like a subtle distinction, but architecturally it is enormous.&lt;/p&gt;
&lt;p&gt;Claudeforce is an interesting announcement and the Anthropic partnership will undoubtedly get most of the attention. I&amp;#39;m particularly curious to see how Claude and Agentforce will coexist as both products mature.&lt;/p&gt;
&lt;p&gt;But for me, Headless 360 is the part to watch.&lt;/p&gt;
&lt;p&gt;If Salesforce succeeds in turning CRM from an application people have to visit into a trusted business platform that agents can securely use from anywhere, we aren&amp;#39;t just looking at another generation of Salesforce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We&amp;#39;re looking at a different way of working with CRM altogether.&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>crm-post</category><category>blog</category></item><item><title>Explain Snowflake EXPLAIN: Catching Join Explosions Before They Cost You</title><link>https://www.digitalhive.be/post/explain-snowflake-explain-catching-join-explosions-before-they-cost-you/</link><guid isPermaLink="true">https://www.digitalhive.be/post/explain-snowflake-explain-catching-join-explosions-before-they-cost-you/</guid><description>Stop reacting to massive Snowflake bills after a query has already failed or stalled. Digital Hive shares how implementing the EXPLAIN command during code review shifts your data engineering from reactive debugging to proactive cost prevention. Reach out to Digital Hive to find out how our data team can optimize your pipelines and eliminate expensive cloud waste.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every data engineer has been there: you write a dbt model, hit dbt run, and watch in horror as the warehouse spins for forty minutes. When you check the query profile, you find a massive &lt;strong&gt;join explosion&lt;/strong&gt; that caused data to spill to remote disk storage, burning through credits.&lt;/p&gt;
&lt;p&gt;When joining massive datasets, forgetting a secondary join key or making a typo in your ON clause can cause a row-count fan-out.&lt;/p&gt;
&lt;p&gt;You do not have to run the actual query to know it is going to explode. By using Snowflake&amp;#39;s EXPLAIN command, you can predict join explosions before the actual run. EXPLAIN calculates execution plans using Snowflake&amp;#39;s global services layer. This is why it runs instantly and costs &lt;strong&gt;zero warehouse credits&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Join Fan-Out and Memory Spills&lt;/h2&gt;
&lt;p&gt;When Snowflake runs a join, it loads the data into the fast, local memory of your virtual warehouse. If your join logic is correct, the data processes smoothly.&lt;/p&gt;
&lt;p&gt;If you accidentally create a partial Cartesian product, a table with ten million rows joined to a table with fifty thousand rows can suddenly explode into five hundred million rows.&lt;/p&gt;
&lt;p&gt;When that happens, the data overflows the warehouse&amp;#39;s local memory. Snowflake is forced to write those temporary rows to slow, remote disk storage. This is called a remote disk spill, and it is the primary reason queries stall and compute bills spike.&lt;/p&gt;
&lt;h2&gt;The EXPLAIN Plan Matrix&lt;/h2&gt;
&lt;p&gt;When you prepend EXPLAIN USING JSON to your query, Snowflake maps out exactly what it intends to do. It analyses the metadata of your tables and estimates the row counts for every single step of the operation.&lt;/p&gt;
&lt;p&gt;An automated parser looking at an EXPLAIN plan can view an execution graph that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_9c8dfcd13c78405b8ed693cc87865956.png&quot; alt=&quot;Explain Snowflake EXPLAIN: Catching Join Explosions Before They Cost You&quot;&gt;&lt;/p&gt;
&lt;p&gt;Notice the Join node. The optimizer predicts that joining these two sets will produce five hundred million rows, which is exponentially larger than the cumulative inputs. That is your red flag.&lt;/p&gt;
&lt;p&gt;Catching Many-to-Many Bridge Table Explosions&lt;/p&gt;
&lt;p&gt;Another classic trap is joining two tables through an intermediate &amp;quot;bridge&amp;quot; table (like matching users to multiple assigned account teams or multi-tenant groups) where duplicate keys exist on both sides of the bridge.&lt;/p&gt;
&lt;p&gt;You want to map web_traffic_events (50,000,000 rows) to user marketing_segments (100,000 rows) using a user_mapping_bridge table. You run your pre-flight check:&lt;/p&gt;
&lt;p&gt;EXPLAIN
SELECT * FROM web_traffic_events e&lt;/p&gt;
&lt;p&gt;JOIN user_mapping_bridge b ON e.cookie_id = b.cookie_id&lt;/p&gt;
&lt;p&gt;JOIN marketing_segments s ON b.segment_id = s.segment_id;&lt;/p&gt;
&lt;h2&gt;Reading the Native UI Output&lt;/h2&gt;
&lt;p&gt;You look at the estimated row metrics for the execution nodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The first join step outputs &lt;strong&gt;250,000,000&lt;/strong&gt; rows from your initial 50 million events.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The final Join node predicts a massive output of &lt;strong&gt;1.2 Billion rows&lt;/strong&gt;!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Fix&lt;/h2&gt;
&lt;p&gt;The EXPLAIN data shows you that the bridge table contains historical, overlapping duplicate mappings for the same cookie_id.&lt;/p&gt;
&lt;p&gt;Instead of waiting an hour for a query that will fail due to remote disk spilling, you immediately rewrite the query to use a QUALIFY statement or an aggregated subquery on the bridge table to isolate the single, active mapping per cookie. Re-running EXPLAIN confirms the output rows now match your baseline 50 million events perfectly.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;As a growing data engineer, shifting from reactive debugging to proactive engineering is a massive milestone. By utilizing EXPLAIN to flag join explosions during code review, you save your team thousands of dollars in wasted compute and keep your production pipelines running fast.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>The Dashboard Migration Button Won&apos;t Save Your Snowflake  Credits</title><link>https://www.digitalhive.be/post/the-dashboard-migration-button-won-t-save-your-snowflake-credits/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-dashboard-migration-button-won-t-save-your-snowflake-credits/</guid><description>Is your Snowflake dashboard migration just moving the &quot;compute burn&quot; to a new format? Digital Hive explains why Snowflake’s native conversion button is only phase one of a sustainable migration strategy. See our guide on reducing credits with Streamlit and reach out to Digital Hive to see how we can optimize your entire data stack.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Snowflake has made it official. On &lt;strong&gt;April 20, 2026&lt;/strong&gt;, the creation of new Snowsight dashboards was permanently disabled across all accounts. On &lt;strong&gt;June 22, 2026&lt;/strong&gt;, weeks from now, Legacy Dashboards will be fully removed from Snowsight. No access. No fallback. Gone.&lt;/p&gt;
&lt;p&gt;If you are still running legacy dashboards, you are not in a grey area. You are on a hard deadline with no exceptions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_8e5c2f19d0224db29c32b4ca2cc29a7b.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The obvious escape hatch is Snowflake&amp;#39;s built-in &lt;strong&gt;&amp;quot;Generate Streamlit app&amp;quot;&lt;/strong&gt; button: open your dashboard, click once, done. But at best it produces equal compute to what you had. At worst, with multiple concurrent users, it can cost you more. The default warehouse runtime spins up a separate app instance per viewer, where a legacy dashboard would have served them from a shared result. This post looks at what that means in practice and what to write instead.&lt;/p&gt;
&lt;h2&gt;What the Button Produces&lt;/h2&gt;
&lt;p&gt;The conversion tool does a &lt;strong&gt;1-to-1 translation&lt;/strong&gt;. Every dashboard tile becomes its own session.sql().to_pandas() call. The SQL is preserved verbatim. There is no caching, no in-memory filtering. A five-tile dashboard becomes five separate warehouse queries on every single page load and on every filter change.&lt;/p&gt;
&lt;h1&gt;What the button generates&lt;/h1&gt;
&lt;p&gt;session = get_active_session()&lt;/p&gt;
&lt;p&gt;df1 = session.sql(&amp;quot;SELECT region, SUM(sales_amount) ... GROUP BY region&amp;quot;).to_pandas()&lt;/p&gt;
&lt;p&gt;st.bar_chart(df1)  # warehouse hit #1&lt;/p&gt;
&lt;p&gt;df2 = session.sql(&amp;quot;SELECT COUNT(DISTINCT customer_id) ...&amp;quot;).to_pandas()&lt;/p&gt;
&lt;p&gt;st.metric(&amp;quot;Customers&amp;quot;, df2[&amp;#39;UNIQUE_CUSTOMERS&amp;#39;][0])  # warehouse hit #2&lt;/p&gt;
&lt;p&gt;df3 = session.sql(&amp;quot;SELECT DATE_TRUNC(&amp;#39;month&amp;#39;, order_date), SUM(sales_amount) ... GROUP BY 1&amp;quot;).to_pandas()&lt;/p&gt;
&lt;p&gt;st.line_chart(df3)  # warehouse hit #3&lt;/p&gt;
&lt;p&gt;Three tiles. Three warehouse spin-ups on load. Three more on every filter interaction. You have migrated the format, not the problem.&lt;/p&gt;
&lt;h2&gt;The Right Approach: One Query, Everything in Memory&lt;/h2&gt;
&lt;p&gt;Write &lt;strong&gt;one broader query&lt;/strong&gt;, cache it with @st.cache_data, and build all your charts from that single DataFrame. Filter interactions operate on the cached data in memory with zero additional warehouse invocations.&lt;/p&gt;
&lt;h1&gt;The efficient approach&lt;/h1&gt;
&lt;p&gt;session = get_active_session()&lt;/p&gt;
&lt;p&gt;@st.cache_data(ttl=3600)  # warehouse hit once per hour&lt;/p&gt;
&lt;p&gt;def load_data():&lt;/p&gt;
&lt;p&gt;    return session.sql(&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;        SELECT order_date, region, sales_amount, customer_id&lt;/p&gt;
&lt;p&gt;        FROM production.sales.fct_orders&lt;/p&gt;
&lt;p&gt;        WHERE order_date &amp;gt;= DATEADD(year, -1, CURRENT_DATE())&lt;/p&gt;
&lt;p&gt;    &amp;quot;&amp;quot;&amp;quot;).to_pandas()&lt;/p&gt;
&lt;p&gt;df = load_data()&lt;/p&gt;
&lt;h1&gt;In-memory filter — no warehouse cost&lt;/h1&gt;
&lt;p&gt;selected_region = st.sidebar.selectbox(&amp;quot;Region&amp;quot;, [&amp;quot;All&amp;quot;] + df[&amp;#39;REGION&amp;#39;].unique().tolist())&lt;/p&gt;
&lt;p&gt;filtered = df[df[&amp;#39;REGION&amp;#39;] == selected_region] if selected_region != &amp;quot;All&amp;quot; else df&lt;/p&gt;
&lt;h1&gt;All visuals from the same cached DataFrame&lt;/h1&gt;
&lt;p&gt;col1, col2 = st.columns(2)&lt;/p&gt;
&lt;p&gt;col1.metric(&amp;quot;Total Sales&amp;quot;, f&amp;quot;${filtered[&amp;#39;SALES_AMOUNT&amp;#39;].sum():,.2f}&amp;quot;)&lt;/p&gt;
&lt;p&gt;col2.metric(&amp;quot;Active Customers&amp;quot;, f&amp;quot;{filtered[&amp;#39;CUSTOMER_ID&amp;#39;].nunique():,}&amp;quot;)&lt;/p&gt;
&lt;p&gt;trend = filtered.groupby(filtered[&amp;#39;ORDER_DATE&amp;#39;].dt.to_period(&amp;#39;M&amp;#39;))[&amp;#39;SALES_AMOUNT&amp;#39;].sum().reset_index()&lt;/p&gt;
&lt;p&gt;trend[&amp;#39;ORDER_DATE&amp;#39;] = trend[&amp;#39;ORDER_DATE&amp;#39;].dt.to_timestamp()&lt;/p&gt;
&lt;p&gt;st.line_chart(trend, x=&amp;#39;ORDER_DATE&amp;#39;, y=&amp;#39;SALES_AMOUNT&amp;#39;)&lt;/p&gt;
&lt;p&gt;Same three visuals. One warehouse query per hour. Every filter is instant and free.&lt;/p&gt;
&lt;p&gt;The ttl=3600 parameter is the key control lever. It determines how long the DataFrame lives in memory before the warehouse is queried again. Match it to your pipeline&amp;#39;s update frequency: overnight batch jobs can tolerate a longer TTL, operational dashboards may need a shorter one.&lt;/p&gt;
&lt;h2&gt;Button vs. Manual&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Generate Streamlit App&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Manual Approach&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Warehouse hits on load&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One per tile&lt;/td&gt;
&lt;td&gt;One total&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Warehouse hits on filter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One per tile, every time&lt;/td&gt;
&lt;td&gt;Zero&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Caching&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;@st.cache_data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time to migrate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minutes&lt;/td&gt;
&lt;td&gt;Hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Credit efficiency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same as legacy&lt;/td&gt;
&lt;td&gt;Significantly reduced&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Which Path Should You Take?&lt;/h2&gt;
&lt;p&gt;The two approaches are not mutually exclusive. If June 22 is bearing down on you, we suggest you approach the transition to Streamlit in to phases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phase 1: Use the button to meet the deadline.&lt;/strong&gt; Convert everything before June 22. The generated apps will work and your data stays accessible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phase 2: Refactor what matters.&lt;/strong&gt; After the deadline, audit your converted apps. Dashboards with the most tiles, the highest traffic, or the heaviest SQL are your refactoring priorities. For each one, consolidate the tile queries into a single cached base query. Not every dashboard is worth the effort. A low-traffic internal report with two simple tiles is not. A customer-facing dashboard with daily active users is.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Snowflake&amp;#39;s migration button solves one problem: keeping you off a deprecated feature before June 22. It does not fix the compute inefficiency that will make your legacy dashboards expensive.&lt;/p&gt;
&lt;p&gt;For the full technical reference, see the &lt;a href=&quot;https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit&quot;&gt;&lt;em&gt;official Snowflake Streamlit documentation&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>Managing Snowflake Infrastructure-as-Code </title><link>https://www.digitalhive.be/post/managing-snowflake-infrastructure-as-code/</link><guid isPermaLink="true">https://www.digitalhive.be/post/managing-snowflake-infrastructure-as-code/</guid><description>Discover how to eliminate environment drift by transitioning from imperative SQL to Snowflake Declarative Configuration Management (DCM). Digital Hive demonstrates how to provision a robust Medallion Architecture using native, version-controlled code. Read the guide and reach out to Digital Hive to explore our full suite of bespoke data engineering solutions.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Modern data engineering teams typically rely on tools like dbt to manage data transformations through version-controlled, CI/CD-integrated pipelines. However, the underlying Snowflake infrastructure databases, schemas, virtual warehouses, and role-based access control (RBAC) is frequently provisioned using imperative SQL scripts or manual UI configurations.&lt;/p&gt;
&lt;p&gt;While many engineering teams utilize third-party Infrastructure-as-Code (IaC) solutions like Terraform, Pulumi, ect... to manage these objects, these tools often introduce their own operational overhead, requiring external state file management, cross-platform authentication, and proficiency in domain-specific languages.&lt;/p&gt;
&lt;p&gt;Snowflake Declarative Configuration Management (DCM) addresses this gap by providing a native, integrated IaC framework. This guide details how to implement DCM to manage a Medallion Architecture and outlines the architectural boundary between DCM and dbt.&lt;/p&gt;
&lt;h2&gt;Declarative State Management vs. Imperative Scripting&lt;/h2&gt;
&lt;p&gt;The traditional approach to Snowflake management relies on imperative execution (CREATE OR REPLACE, ALTER). Imperative scripts are inherently brittle. They require the developer to explicitly define the sequence of state changes.&lt;/p&gt;
&lt;p&gt;DCM shifts this to a declarative model. You define the desired end-state of the Snowflake environment in local project files. During execution, the Snowflake CLI evaluates the delta between your local definitions and the current state of the target Snowflake account. It then dynamically generates and executes the necessary Data Definition Language (DDL) operations—CREATE, ALTER, or DROP—to achieve the target state.&lt;/p&gt;
&lt;p&gt;This ensures idempotency. Repeated deployments of the same DCM project will yield no changes if the target environment is already synchronized with the codebase.&lt;/p&gt;
&lt;h2&gt;Architectural Boundary: DCM and dbt&lt;/h2&gt;
&lt;p&gt;Effective data platform management requires a strict separation between infrastructure provisioning and data modelling:&lt;/p&gt;
&lt;p&gt;Infrastructure (DCM): DCM provisions the databases, schema structures (L0_RAW through L3_GOLD), virtual warehouses, roles and grants.&lt;/p&gt;
&lt;p&gt;Logic (dbt): Executing DML to materialize business logic into the tables and views within the DCM-established schemas.&lt;/p&gt;
&lt;p&gt;This separation ensures your transformation layer operates within a secure, audited, and version-controlled environment without infrastructure and logic competing for the same state.&lt;/p&gt;
&lt;h2&gt;Implementation Guide of a Medallion Architecture via DCM&lt;/h2&gt;
&lt;p&gt;The following steps demonstrate how to initialize a DCM project and provision a multi-environment Medallion Architecture.&lt;/p&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Python environment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snowflake CLI installed (pip install snowflake-cli-labs).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CLI connection configured in ~/.snowflake/config.toml (e.g., utilizing externalbrowser for SSO).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Step 1: Workspace Initialization&lt;/h3&gt;
&lt;p&gt;DCM enforces a standardized directory structure. The CLI specifically targets the sources/definitions/ directory for SQL definitions.&lt;/p&gt;
&lt;h1&gt;Initialize project directories&lt;/h1&gt;
&lt;p&gt;mkdir snowflake_cdm &amp;amp;&amp;amp; cd snowflake_cdm
mkdir -p dcm/sources/definitions&lt;/p&gt;
&lt;h1&gt;Initialize virtual environment and install CLI&lt;/h1&gt;
&lt;p&gt;python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install snowflake-cli-labs&lt;/p&gt;
&lt;h1&gt;Enable the DCM preview feature flag&lt;/h1&gt;
&lt;p&gt;export SNOWFLAKE_CLI_FEATURES_ENABLE_SNOWFLAKE_PROJECTS=true&lt;/p&gt;
&lt;h3&gt;Step 2: Manifest Configuration&lt;/h3&gt;
&lt;p&gt;The manifest.yml file dictates project metadata, deployment targets, and templating variables. It maps local execution contexts to persistent DCM Project objects within Snowflake.&lt;/p&gt;
&lt;p&gt;File: dcm/manifest.yml&lt;/p&gt;
&lt;p&gt;manifest_version: 2
type: DCM_PROJECT
default_target: dev&lt;/p&gt;
&lt;p&gt;targets:
dev:
project_name: DCM_ADMIN.PROJECTS.DCM_DEV
templating_config: dev_config
prod:
project_name: DCM_ADMIN.PROJECTS.DCM_PROD
templating_config: prod_config&lt;/p&gt;
&lt;p&gt;templating:
configurations:
dev_config:
db_name: ANALYTICS_DEV
prod_config:
db_name: ANALYTICS_PROD&lt;/p&gt;
&lt;p&gt;Note: when using VSCode, the integrated YAML server may incorrectly flag the manifest file against the Snowflake Native App schema. To resolve this, change the file&amp;#39;s Language Mode in the status bar from &amp;#39;Snowflake Application Package Manifest&amp;#39; to &amp;#39;YAML&amp;#39;.&lt;/p&gt;
&lt;h3&gt;Step 3: Declarative Object Definition&lt;/h3&gt;
&lt;p&gt;Infrastructure is defined using the DEFINE keyword rather than CREATE. Jinja2 templating is utilized to inject environment-specific variables defined in the manifest configuration.&lt;/p&gt;
&lt;p&gt;File: dcm/sources/definitions/medallion.sql&lt;/p&gt;
&lt;p&gt;-- Provision target database
DEFINE DATABASE {{ db_name }};&lt;/p&gt;
&lt;p&gt;-- Provision standard Medallion schemas
DEFINE SCHEMA {{ db_name }}.L0_RAW;
DEFINE SCHEMA {{ db_name }}.L1_BRONZE;
DEFINE SCHEMA {{ db_name }}.L2_SILVER;
DEFINE SCHEMA {{ db_name }}.L3_GOLD;&lt;/p&gt;
&lt;p&gt;-- Provision base ingestion table
DEFINE TABLE {{ db_name }}.L0_RAW.HEARTBEAT (
device_id VARCHAR,
payload VARIANT,
ingested_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);&lt;/p&gt;
&lt;h3&gt;Step 4: Plan and Deploy Lifecycle&lt;/h3&gt;
&lt;p&gt;The DCM deployment lifecycle consists of two distinct operations: validation and execution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;State Diff Generation (Plan)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The plan command performs a dry run, outputting the computed DDL required to align the target Snowflake environment with your local definitions.&lt;/p&gt;
&lt;p&gt;cd dcm
snow dcm plan --target dev&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Execution (Deploy)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once the deployment plan is verified, the deploy command applies the DDL transactions to the Snowflake account.&lt;/p&gt;
&lt;p&gt;snow dcm deploy --target dev&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Environment Promotion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To promote the infrastructure architecture to production, execute the deployment utilizing the prod target. The Snowflake CLI will automatically resolve the prod_config templating variables (e.g., ANALYTICS_PROD) and provision the isolated environment.&lt;/p&gt;
&lt;p&gt;snow dcm deploy --target prod&lt;/p&gt;
&lt;h2&gt;Strict State Enforcement and Idempotency&lt;/h2&gt;
&lt;p&gt;It is vital to understand the operational impact of declarative IaC. The local repository serves as the absolute source of truth.&lt;/p&gt;
&lt;p&gt;If an engineer manually executes a CREATE TABLE statement within the targeted Snowflake database (out-of-band change), that table is fundamentally orphaned from the IaC state. Upon the next execution of snow dcm deploy, the DCM engine will identify the unmanaged object and automatically issue a DROP statement to enforce the exact state defined in the codebase.&lt;/p&gt;
&lt;p&gt;This behavior eliminates environment drift but strictly mandates that all infrastructure changes proceed through the established GitOps workflow.&lt;/p&gt;
&lt;h2&gt;Future DataOps&lt;/h2&gt;
&lt;p&gt;Looking forward, DCM is the foundation for a unified Snowflake DataOps platform, potentially integrating with Native Git for automated deployments and Dynamic Tables for declarative orchestration. By adopting DCM, you future-proof your stack for a code-centric Snowflake ecosystem.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>From NiagaraFiles to Snowflake OpenFlow </title><link>https://www.digitalhive.be/post/from-niagarafiles-to-snowflake-openflow/</link><guid isPermaLink="true">https://www.digitalhive.be/post/from-niagarafiles-to-snowflake-openflow/</guid><description>Digital Hive examines the strategic integration of Apache NiFi into the Snowflake ecosystem as OpenFlow, bridging the gap between legacy reliability and modern AI-ready architecture. Read the complete technical breakdown and reach out to us today to see how our expert services and solutions can scale your data operations.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The trajectory of data engineering is shifting from batch-oriented Extract, Transform, Load (ETL) processes toward continuous data logistics. Within this evolution is &lt;strong&gt;Apache NiFi&lt;/strong&gt;, a technology originally developed within the National Security Agency (NSA) and recently integrated into the Snowflake Data Cloud as &lt;strong&gt;OpenFlow&lt;/strong&gt;. This transition represents a significant change in how enterprises handle high-velocity, multimodal data ingestion and orchestration.&lt;/p&gt;
&lt;h2&gt;NSA Origins and Apache NiFi&lt;/h2&gt;
&lt;p&gt;Apache NiFi began as a project called NiagaraFiles in the early 2000s. The technical requirements at the NSA necessitated a system capable of moving massive volumes of data across geographically distributed and often unreliable networks while maintaining a strict chain of custody.&lt;/p&gt;
&lt;p&gt;In 2014, the NSA released the source code to the Apache Software Foundation as part of its Technology Transfer Program. The software introduced a design paradigm known as Flow-Based Programming (FBP). Unlike traditional ETL tools that execute discrete jobs or scripts, NiFi treats data as a continuous stream of &amp;quot;FlowFiles.&amp;quot;&lt;/p&gt;
&lt;p&gt;In 2024, Snowflake acquired Datavolo, a company founded by the creators of Apache NiFi. Now Snowflake has integrated the core engine into its platform under the name OpenFlow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Principles of NiFi&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FlowFiles&lt;/strong&gt;: Each piece of data is encapsulated as an object containing both the content (the raw data) and attributes (metadata).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Processors&lt;/strong&gt;: These are the functional units that perform operations such as fetching, filtering, transforming, or routing data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Provenance&lt;/strong&gt;: A native repository that records every event in the life of a FlowFile, providing an audit trail for compliance and debugging.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Back Pressure&lt;/strong&gt;: A mechanism that allows the system to automatically throttle data producers when downstream consumers reach capacity, preventing buffer overflows and system crashes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Defining Snowflake OpenFlow&lt;/h2&gt;
&lt;p&gt;Snowflake OpenFlow is a managed data integration service built on Apache NiFi 2.0. It serves as a visual orchestration layer that connects external data sources to Snowflake and, to other destinations.&lt;/p&gt;
&lt;p&gt;The architecture is divided into &lt;strong&gt;two primary segments&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Control Plane&lt;/strong&gt;: Managed by Snowflake, this provides the browser-based visual canvas (accessible via Snowsight) and the APIs for managing flow definitions and monitoring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Data Plane&lt;/strong&gt;: The execution environment where the actual data processing occurs. This can be deployed in two modes:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Snowpark Container Services (SPCS): A fully managed deployment where Snowflake provisions the underlying compute resources.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bring Your Own Cloud (BYOC): A deployment where the OpenFlow runtimes run within the customer&amp;#39;s own Virtual Private Cloud (VPC), typically on AWS or Azure, while still being managed by the Snowflake control plane.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_9edf9d350157473bb0fe51aac7f4b6ed.png&quot; alt=&quot;The image illustrates the functional architecture of Snowflake OpenFlow, depicting how it streamlines the movement of diverse data. &quot;&gt;&lt;/p&gt;
&lt;p&gt;The image illustrates the functional architecture of Snowflake OpenFlow, depicting how it streamlines the movement of diverse data.&lt;/p&gt;
&lt;h2&gt;Benefits of OpenFlow&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multimodal Data Support&lt;/strong&gt;: Unlike many ingestion tools that focus on tabular data, OpenFlow inherits NiFi&amp;#39;s ability to handle unstructured data such as images, audio, and PDFs. It integrates natively with Snowflake Cortex AI processors to perform operations like OCR or text summarization during the ingestion flow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced Operational Friction&lt;/strong&gt;: In SPCS deployments, the infrastructure is managed by Snowflake, eliminating the need for data engineers to maintain separate virtual machines, manage Java Virtual Machine (JVM) tuning, or configure complex SSL/TLS certificates for the NiFi cluster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-time Observability&lt;/strong&gt;: The visual nature of OpenFlow allows engineers to inspect live data as it moves through the pipeline. Data provenance provides a granular view of every transformation, which is often difficult to achieve in code-based solutions like Airflow or custom scripts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Trade-offs of OpenFlow&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning Curve&lt;/strong&gt;: Flow-Based Programming is a distinct discipline from traditional SQL or Python-based engineering. Teams without NiFi experience may find the &amp;quot;box-and-line&amp;quot; configuration more complex than writing standard scripts for edge cases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ecosystem Lock-in&lt;/strong&gt;: While NiFi is open source, OpenFlow is deeply integrated into the Snowflake ecosystem. Utilizing specific Snowflake processors (e.g., Snowpipe Streaming) makes it difficult to migrate those pipelines to other data warehouses or lakes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connector Maturity&lt;/strong&gt;: Compared to Fivetran’s 700+ pre-built connectors, OpenFlow’s library of &amp;quot;Turnkey Connectors&amp;quot; is still evolving. While the 300+ generic NiFi processors provide extensive connectivity, they often require more manual configuration for specific SaaS APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Consumption&lt;/strong&gt;: NiFi is a resource-intensive application. In a BYOC model, the cost and maintenance of the underlying Kubernetes (EKS) or EC2 instances remain the responsibility of the customer’s DevOps team.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Integration of AI and Governance&lt;/h2&gt;
&lt;p&gt;The main distinguishment for OpenFlow in is its role in AI Data Logistics. Because it can process data before it is loaded in the table, it functions as a preprocessing engine for Retrieval-Augmented Generation (RAG) workflows. For example, a flow can ingest raw documents from SharePoint, use a Cortex processor to generate vector embeddings, and write those embeddings directly into a Snowflake vector data type.&lt;/p&gt;
&lt;p&gt;Furthermore, because OpenFlow uses Snowflake Role-Based Access Control (RBAC) and managed tokens, it inherits the security posture of the warehouse. This solves a common security gap where third-party ingestion tools require high-level administrative credentials to be stored outside the primary data environment.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The integration of Apache NiFi into Snowflake as OpenFlow marks a maturation of the data engineering stack. It acknowledges that ingestion is no longer just about moving rows from a database to a warehouse, but about managing complex, real-time data flows that involve AI processing. While tools like Fivetran will continue to dominate for standard SaaS-to-Warehouse replication due to their ease of use, OpenFlow provides the extensibility required for complex, low-latency, and high-governance environments.&lt;/p&gt;
&lt;p&gt;Data engineers must evaluate whether the flexibility and native Snowflake integration outweigh the specialized skills required to master the NiFi engine.&lt;/p&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://federallabs.org/flc-highlights/awards/niagarafiles-apache-nifi-47c538ba3cfd14a3fc949fc749121534&quot;&gt;&lt;em&gt;https://federallabs.org/flc-highlights/awards/niagarafiles-apache-nifi-47c538ba3cfd14a3fc949fc749121534&lt;/em&gt;&lt;/a&gt; **&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.snowflake.com/en/news/press-releases/snowflake-agrees-to-acquire-open-data-integration-platform-datavolo/&quot;&gt;&lt;em&gt;https://www.snowflake.com/en/news/press-releases/snowflake-agrees-to-acquire-open-data-integration-platform-datavolo/&lt;/em&gt;&lt;/a&gt; **&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://docs.snowflake.com/en/user-guide/data-integration/openflow/about&quot;&gt;&lt;em&gt;https://docs.snowflake.com/en/user-guide/data-integration/openflow/about&lt;/em&gt;&lt;/a&gt; **&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.snowflake.com/en/blog/announcements-snowflake-summit-2025/&quot;&gt;&lt;em&gt;https://www.snowflake.com/en/blog/announcements-snowflake-summit-2025/&lt;/em&gt;&lt;/a&gt; **&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.dfmanager.com/blog/apache-nifi-vs-fivetran-comparing-data-integration-tools&quot;&gt;&lt;em&gt;https://www.dfmanager.com/blog/apache-nifi-vs-fivetran-comparing-data-integration-tools&lt;/em&gt;&lt;/a&gt; **&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.snowflake.com/en/developers/guides/getting-started-with-openflow-for-cdc-on-sql-server/&quot;&gt;&lt;em&gt;https://www.snowflake.com/en/developers/guides/getting-started-with-openflow-for-cdc-on-sql-server/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>How I Fast-Tracked My Snowflake SnowPro Certification using Generative AI </title><link>https://www.digitalhive.be/post/how-i-fast-tracked-my-snowflake-snowpro-certification-using-generative-ai/</link><guid isPermaLink="true">https://www.digitalhive.be/post/how-i-fast-tracked-my-snowflake-snowpro-certification-using-generative-ai/</guid><description>Here is how I combined structured learning with a personalized AI tutor to bridge the gap and pass the Snowflake SnowPro Core certification exam on my first try.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Introduction: The &amp;quot;Simple&amp;quot; Task&lt;/h2&gt;
&lt;p&gt;When I joined Digital Hive as their newest Data Engineer in November 2025, I was ready to hit the ground running. I brought with me a background in data engineering, specifically experience working with Google BigQuery and Databricks. I felt confident in my SQL skills, understood cloud data warehousing, and was eager to grow my knowledge.&lt;/p&gt;
&lt;p&gt;Then came my first assignment.&lt;/p&gt;
&lt;p&gt;My manager welcomed me to the team and presented me with a &amp;quot;simple&amp;quot; task to wrap up my onboarding: &lt;strong&gt;Get the Snowflake SnowPro Core certification before the end of the year.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I looked at the calendar. It was November. I had roughly six weeks.&lt;/p&gt;
&lt;p&gt;In the past, a task like that in less than two months would have been a panic-inducing sprint. But let’s be honest; this is 2025. So, of course, I accelerated my learning using AI, like we all are doing.&lt;/p&gt;
&lt;p&gt;I didn&amp;#39;t just want to pass; I needed to actually understand the tools I&amp;#39;d be using daily. Here is how I combined structured learning with a personalized AI tutor to bridge the gap and pass the exam on my first try.&lt;/p&gt;
&lt;h2&gt;The Challenge: Translating Concepts&lt;/h2&gt;
&lt;p&gt;The biggest hurdle wasn’t learning how to write SQL: SELECT * FROM is fairly universal. The challenge was understanding the architecture and concepts under the hood.&lt;/p&gt;
&lt;p&gt;Coming from BigQuery, I was used to a serverless world where compute management is largely abstracted away. Like Databricks, Snowflake requires a different way of thinking regarding Virtual Warehouses, credit usage, and specific caching layers. My previous experience with Databricks was always in a pre-configured environment, so I never needed to worry about the underlying resource management. Now, I had to master it.&lt;/p&gt;
&lt;h3&gt;Step 1: The Foundation (Udemy)&lt;/h3&gt;
&lt;p&gt;I knew that jumping into random documentation pages wouldn&amp;#39;t be efficient. I needed a structured path to ensure I covered every domain of the exam. Since I learn better from video than text, I looked for a course that fit my style.&lt;/p&gt;
&lt;p&gt;I enrolled in the &lt;strong&gt;Ultimate Snowflake SnowPro Core Certification Course &amp;amp; Exam&lt;/strong&gt; on Udemy using their free trial. This gave me the necessary syllabus and video lectures to understand the breadth of the platform. It was excellent for getting the vocabulary right and understanding the basics of the ecosystem, from Snowpipe to Data Sharing.&lt;/p&gt;
&lt;p&gt;However, watching videos is passive. To pass a certification like SnowPro Core, you need to understand the nuance. I found some practice exams online, and after failing one of them, I found myself with questions that the pre-recorded videos just couldn&amp;#39;t answer.&lt;/p&gt;
&lt;h3&gt;Step 2: The Accelerator (Google Gemini)&lt;/h3&gt;
&lt;p&gt;This is where my study strategy shifted gears. I realized that memorizing answers from static practice exams wasn&amp;#39;t enough; I needed to understand the logic behind them.&lt;/p&gt;
&lt;p&gt;Instead of endlessly Googling confusing concepts or wading through technical forums, I started using Google Gemini as my personalized &amp;quot;Data Engineering Tutor.&amp;quot;&lt;/p&gt;
&lt;p&gt;My workflow was simple: I would take a practice exam, and whenever I hit a question I was unsure about (or got wrong), I wouldn&amp;#39;t just look up the answer. I would paste the question into Gemini with the guided learning mode.&lt;/p&gt;
&lt;p&gt;The difference was night and day. Instead of acting like a search engine, Gemini acted like a senior engineer sitting next to me. It didn&amp;#39;t just give me the answer; it used the Socratic method to test my reasoning.&lt;/p&gt;
&lt;p&gt;Here is a real example from one of my study sessions where I was confused about Snowflake workloads:&lt;/p&gt;
&lt;p&gt;*Me: [Pastes question about whether Snowflake is OLAP or OLTP] &amp;quot;I think Snowflake is more suited for OLTP.&amp;quot; *&lt;/p&gt;
&lt;p&gt;*Gemini: &amp;quot;Actually, it is the other way around! Let&amp;#39;s break this down. Think back to the Micro-partitions (our &amp;#39;Books&amp;#39;). These files are immutable. If Snowflake has to rewrite an entire 50MB &amp;#39;Book&amp;#39; every time you want to update one single row (like in a bank transaction), would that be efficient?&amp;quot; *&lt;/p&gt;
&lt;p&gt;*Me: &amp;quot;No, you are right. The micro-partitions make it more suited for large datasets... so Analytics (OLAP).&amp;quot; *&lt;/p&gt;
&lt;p&gt;*Gemini: &amp;quot;That is exactly right! 🏆 You reasoned it out perfectly. Because micro-partitions are immutable and optimized for reading huge chunks of data, Snowflake shines at Analytics.&amp;quot; *&lt;/p&gt;
&lt;p&gt;This guided learning mode was a game-changer. It helped me visualize abstract concepts like comparing Multi-Cluster Warehouses to opening more lanes on a highway during a traffic jam, or viewing Resource Monitors as &amp;quot;circuit breakers&amp;quot; for cost control.&lt;/p&gt;
&lt;p&gt;By the time I finished my prep, I wasn&amp;#39;t just memorizing &amp;quot;A, B, or C.&amp;quot; I was confident I could explain why an answer was correct.&lt;/p&gt;
&lt;h3&gt;Step 3: The Deep Dive&lt;/h3&gt;
&lt;p&gt;Once I grasped the comparisons, I used Gemini to drill down into my weak spots. If I got a practice question wrong regarding Snowflake’s governance features or zero-copy cloning, I engaged in a dialogue with the AI.&lt;/p&gt;
&lt;p&gt;I asked it to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate scenario-based quiz questions regarding Time Travel and Fail-safe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Summarize the differences between Standard, Enterprise, and Business Critical editions (a popular exam topic!).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This transformed my learning from passive reading to active interrogation. It allowed me to simulate months of &amp;quot;experience&amp;quot; by asking about edge cases I hadn&amp;#39;t seen yet in real life.&lt;/p&gt;
&lt;h2&gt;The Result&lt;/h2&gt;
&lt;p&gt;On December 26th at midday, I sat down for the exam. I won&amp;#39;t lie I was nervous. The SnowPro Core is known for asking tricky questions that test if you truly understand the architecture, not just the syntax.&lt;/p&gt;
&lt;p&gt;The pressure was on: if I failed, I would be in a terrible mood, not exactly ideal for sitting down to Christmas dinner with my in-laws later that evening!&lt;/p&gt;
&lt;p&gt;During the exam, I felt uncertain. The questions were designed to be tricky, with answer choices that often looked painfully similar. I finished the exam unsure if my strategy had actually worked.&lt;/p&gt;
&lt;p&gt;To my surprise, I passed! I secured my certification just before the New Year&amp;#39;s Eve deadline (and saved the Christmas dinner).&lt;/p&gt;
&lt;h2&gt;Takeaways: Why AI was the Key&lt;/h2&gt;
&lt;p&gt;If you are looking to get certified, especially on a tight timeline, traditional studying might not be enough. Here is my advice on how to use AI to fast-track your success:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Turn AI into a Study Partner: Tools like Gemini are incredible for filling in knowledge gaps. Don&amp;#39;t just ask for the answer; ask it to explain the concept using comparisons to tools you already know (like BigQuery).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pro Tip for Long Sessions: If you have a very long conversation, the Gemini thread can eventually become slow. If that happens, give it the instruction to &amp;quot;Summarize this conversation so far for the next tutor,&amp;quot; then copy that summary into a fresh chat window to keep the momentum going.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don&amp;#39;t rely solely on Practice Exams: You can find several example exams online, and they serve as a good knowledge check. But in my experience, if you only memorize those without using AI to understand the &amp;quot;Why,&amp;quot; you will struggle on the real exam.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am thrilled to start 2026 fully certified and ready to contribute to the data team here at Digital Hive. Now, it’s time to put this certification to work!&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>Pipeline visibility from Airflow to dbt</title><link>https://www.digitalhive.be/post/pipeline-visibility-from-airflow-to-dbt/</link><guid isPermaLink="true">https://www.digitalhive.be/post/pipeline-visibility-from-airflow-to-dbt/</guid><description>Pipeline visibility from Airflow to dbt: Tired of using current_timestamp() capturing the wrong time for data lineage? Learn the exact Airflow-dbt method to stamp every data row with the correct logical DAG run timestamp, ensuring traceability.</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When using Airflow to run your dbt models, some use cases may require having the exact DAG run timestamp stamped directly into your data. This allows you to trace the specific orchestration run that generated a row or table. This becomes a necessity when you have multiple DAGs with processes that generate data. Or if the DAGs overlap in the models they trigger or if you are running backfills and need to distinguish between data related time and processing related time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_d99d7d123310405bae8836010dcdc672.png&quot; alt=&quot;DataBricks Certified Data Engineer Associate Exam&quot;&gt;&lt;/p&gt;
&lt;p&gt;Pipeline visibility from Airflow to dbt&lt;/p&gt;
&lt;h2&gt;Why not just  current_timestamp( )?&lt;/h2&gt;
&lt;p&gt;The first instinct for many engineers is to simply include a current_timestamp() column in their SQL to capture when the model ran. While useful for simple auditing, this approach has a critical flaw: it captures Wall Clock Time, not Logical Time.&lt;/p&gt;
&lt;h2&gt;Airflow template references&lt;/h2&gt;
&lt;p&gt;To solve this, we need to leverage Airflow’s internal Jinja templating engine. Airflow exposes several variables that contain run metadata. Here is the cheat sheet for the most relevant ones:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_e60eaf6498924f33b8590020c1fecabc.png&quot; alt=&quot;Airflows&amp;#39;s internal Jinja templating engine: cheat sheet with the most relevant variables that contain run metadata.&quot;&gt;&lt;/p&gt;
&lt;p&gt;Here, we will use &lt;strong&gt;{{ ts }}&lt;/strong&gt; because it provides the full timestamp in a standard format that is easy to cast in SQL. However there move variables available than the ones mentioned in the table above on the following web page &lt;a href=&quot;https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html&quot;&gt;&lt;em&gt;https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Passing variables via CLI&lt;/h2&gt;
&lt;p&gt;The easiest way to bridge the gap between Airflow and dbt is to pass the variable directly into the dbt run command using the --vars flag. This ensures that the context is bound to the specific task execution.&lt;/p&gt;
&lt;h3&gt;Step 1: configure the Airflow DAG&lt;/h3&gt;
&lt;p&gt;In your Airflow DAG, you likely use the BashOperator to execute dbt. You need to construct your bash command to accept a JSON string of variables.&lt;/p&gt;
&lt;p&gt;***Quoting ***&lt;/p&gt;
&lt;p&gt;dbt expects the --vars argument to be a valid JSON dictionary. This means the keys and values inside the JSON must use double quotes (&amp;quot;). To prevent the bash shell from interpreting these quotes, we must wrap the entire JSON string in single quotes (&amp;#39;).&lt;/p&gt;
&lt;p&gt;Here is how to set it up in your Python DAG file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;from airflow import DAG  2. from airflow.operators.bash import BashOperator  3. from datetime import datetime  4.    5. with DAG(&amp;quot;dbt_metadata_dag&amp;quot;, start_date=datetime(2023, 1, 1), schedule=&amp;quot;@daily&amp;quot;) as dag:  6.    7.     run_models = BashOperator(  8.         task_id=&amp;quot;dbt_run&amp;quot;,  9.         # We pass the Airflow {{ ts }} macro into the dbt command 10.         bash_command=&amp;quot;dbt run --select my_model --vars &amp;#39;{&amp;quot;dag_run_ts&amp;quot;: &amp;quot;{{ ts }}&amp;quot;}&amp;#39;&amp;quot; 11.     ) 12.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Step 2: Update the dbt model&lt;/h3&gt;
&lt;p&gt;Now that the variable is in the context, you can access it in your SQL model using the var() function. But this will cause issues if you run this model locally on your laptop, Airflow isn&amp;#39;t there to provide the dag_run_ts variable, and your run will fail. To prevent this, provide a default value  (like run_started_at, which is a built-in dbt variable).&lt;/p&gt;
&lt;p&gt;Here is the SQL for an example model:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;{{ config(materialized=&amp;#39;table&amp;#39;) }}  2.    3. SELECT  4.     id,  5.     order_amount,  6.     status,  7.     -- Get the variable  8.     -- Use a default if missing (for local runs)  9.     -- Cast the string to a timestamp 10.     &amp;#39;{{ var(&amp;quot;dag_run_ts&amp;quot;, run_started_at) }}&amp;#39;::timestamp as dag_run_id 11. FROM {{ ref(&amp;#39;stg_orders&amp;#39;) }} 12.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, every time this model runs via Airflow, the dag_run_id column will contain the exact logical timestamp of the DAG.&lt;/p&gt;
&lt;h2&gt;Observability with Elementary&lt;/h2&gt;
&lt;p&gt;While passing the DAG timestamp helps with &lt;em&gt;data lineage&lt;/em&gt; (tracing rows), it doesn&amp;#39;t solve &lt;em&gt;operational lineage&lt;/em&gt; (monitoring the health and stats of your runs).&lt;/p&gt;
&lt;p&gt;For this, many teams turn to &lt;strong&gt;Elementary&lt;/strong&gt;. Elementary is an open source dbt package that automatically collects run results and uploads them to a schema in your data warehouse.&lt;/p&gt;
&lt;h2&gt;What data does Elementary capture?&lt;/h2&gt;
&lt;p&gt;When you install the Elementary dbt package, it adds an on-run-end hook to your dbt project. This hook scans the artifacts dbt produces (run_results.json and manifest.json) and uploads them to your warehouse.&lt;/p&gt;
&lt;p&gt;Without any custom Airflow configuration, Elementary captures the following data about your &amp;quot;Airflow-triggered&amp;quot; dbt runs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Run&lt;/em&gt; status and timing:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Success/Failure status of every model.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execution time (duration) per model.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exact start and end time of the job (dbt command/invocation).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data quality and volume:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rows Affected:&lt;/strong&gt; How many rows were inserted or updated in that specific run.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Freshness:&lt;/strong&gt; When the source data was last loaded (if you use dbt source freshness).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Results:&lt;/strong&gt; Pass/Fail status of all data tests associated with the run.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Job identity:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The specific dbt_cloud_run_id (dbt Cloud).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The invocation_id (a unique GUID generated by dbt for every command).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bridging Elementary and Airflow&lt;/h2&gt;
&lt;p&gt;By default, Elementary knows everything about &lt;em&gt;dbt&lt;/em&gt;, but nothing about &lt;em&gt;Airflow&lt;/em&gt;. It sees a run, but it doesn&amp;#39;t know &amp;quot;DAG A&amp;quot; caused it.&lt;/p&gt;
&lt;p&gt;However, since Elementary simply reads the dbt artifacts, you can use the same logic we used above to enrich Elementary&amp;#39;s data. By passing Airflow metadata like {{ dag.dag_id }} and {{ ts }} into dbt environment variables.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;dbt_run = BashOperator(  2.     task_id=&amp;quot;dbt_run&amp;quot;,  3.     bash_command=&amp;quot;dbt run&amp;quot;,  4.     # Pass Airflow macros as OS Environment Variables  5.     env={  6.         &amp;quot;DBT_ORCHESTRATOR&amp;quot;: &amp;quot;Airflow&amp;quot;,  7.         &amp;quot;DBT_AIRFLOW_DAG_ID&amp;quot;: &amp;quot;{{ dag.dag_id }}&amp;quot;,  8.         &amp;quot;DBT_AIRFLOW_RUN_TS&amp;quot;: &amp;quot;{{ ts }}&amp;quot;,  9.         # Required for dbt to find your project/profiles 10.         &amp;quot;DBT_PROFILES_DIR&amp;quot;: &amp;quot;/path/to/profiles&amp;quot;, 11.         **os.environ # Pass existing env vars if needed 12.     } 13. )&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Elementary can pick up custom_env_variables that are defined under the elementary variable block in the dbt_project.yml file.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;vars: 2.   elementary: 3.     # Tell Elementary to look for these specific env vars 4.     # and save them in the &amp;#39;dbt_invocations&amp;#39; table 5.     custom_env_vars: 6.       - DBT_ORCHESTRATOR 7.       - DBT_AIRFLOW_DAG_ID 8.       - DBT_AIRFLOW_RUN_TS 9.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This creates a complete observability loop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Airflow&lt;/strong&gt; triggers the job and passes the ID.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;dbt&lt;/strong&gt; runs the logic and stamps the data with the ID and ts (using the approach described above).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elementary&lt;/strong&gt; observes the run and logs the metadata and row counts for alerts and dashboards.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Achieving total pipeline visibility&lt;/p&gt;
&lt;p&gt;By using dbt run --vars, every data row gets the exact Airflow logical timestamp ({{ ts }}) for perfect lineage. Integrating Elementary closes, the loop by monitoring run health and collecting metadata (like DAG ID) through environment variables. This ensures data is traceable, and your entire pipeline is observable. This solves both data quality and operational challenges.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html&quot;&gt;https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hub.getdbt.com/elementary-data/elementary/latest/&quot;&gt;https://hub.getdbt.com/elementary-data/elementary/latest/&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>SnowPro Associate: Platform Certification </title><link>https://www.digitalhive.be/post/snowpro-associate-platform-certification/</link><guid isPermaLink="true">https://www.digitalhive.be/post/snowpro-associate-platform-certification/</guid><description>Recently I passed the Snowflake Platform certification exam. Here I want to quickly go over my Snowflake journey, what led me to take the exam and some tips regarding preparation for the exam.</description><pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I passed the Snowflake Platform certification exam. Here I want to quickly go over my Snowflake journey, what led me to take the exam and some tips regarding preparation for the exam.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_82d189b7a1ea49ce83a4bdeba01116cb.png&quot; alt=&quot;DataBricks Certified Data Engineer Associate Exam&quot;&gt;&lt;/p&gt;
&lt;p&gt;SnowPro Associate: Platform Certification&lt;/p&gt;
&lt;h2&gt;My journey&lt;/h2&gt;
&lt;p&gt;I first started using the Snowflake platform about three years ago when I began working as a data engineer for Digital Hive. As part of my learning path, I got to know the main platforms and tools used within the company and at major clients. Besides the default Snowflake hands-on essentials track¹ I had the opportunity to explore more novel features such as Cortex² via Digital Hive’s partner account. After using snowflake in production for 6 months, i decided to try and get the SnowPro core certificate. At the time this was the only certification snowflake provided.&lt;/p&gt;
&lt;p&gt;Shortly after obtaining the certification, I was fortunate enough to start working on a project where Snowflake was the main tool. I became more familiar with the practicalities of data ingestion and transformation in Snowflake. After more than a year and a half of using Snowflake daily, several more certificates became available. I found that the Associate: Platform Certification was closest in content to what I have been using on a day-to-day basis with respect to Snowflake features.&lt;/p&gt;
&lt;h2&gt;About the certification&lt;/h2&gt;
&lt;p&gt;The SnowPro Associate: Platform Certification guide¹ states that a minimum of three months of Snowflake usage is recommended before attempting the exam. I agree with this, as it is roughly half of what is required for the SnowPro Core certification. Unlike the Core exam, the Associate: Platform Certification focuses more on modern Cortex functionalities and general platform operations rather than broad architectural theory.&lt;/p&gt;
&lt;p&gt;Here are the main topic domains and their weightings:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Domain&lt;/td&gt;
&lt;td&gt;Weighting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interacting with Snowflake and the Architecture&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity and Data Access Management&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Loading and Virtual Warehouses&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Protection and Data Sharing&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The certification has no prerequisites, which might make it attractive for new starters as an introductory exam. However, in my opinion, the SnowPro Core Certification should be everyone’s first introduction to Snowflake exams, since it has a broad coverage of all the Snowflake features, both on a theoretical and implementational level. So: no Core = no Platform!&lt;/p&gt;
&lt;p&gt;Some additional details from the official documentation that are worth knowing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Associate: Platform Certification was announced as of February 3, 2025.⁵&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The exam cost for the Associate level is USD 100.²&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The exam is unproctored, meaning you take it online in your own environment and have 24 hours after scheduling to launch it. ⁵&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once you have the credential, it remains valid for two years. ⁵&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The exam includes multiple choice, multiple select, and interactive question types such as matching and drag and drop. ⁵&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The preparation&lt;/h2&gt;
&lt;p&gt;For this certification Snowflake has made live training sessions available via the Snowflake Education platform⁴. However, I do not think this is a must if you already obtained the SnowPro Core Certification and have used Snowflake long enough to be comfortable with the following activities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create databases and stages, and use compute resources&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load and leverage structured, semi-structured, and unstructured data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand Snowflake roles, and data access management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand and manage the Snowflake Account structure&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up and navigate the Snowflake user interface&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aditionally what is important is a good understanding of the Snowflake Cortex AI functionalities and being up to date with the latest developments regarding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cortex LLM functions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snowflake Notebooks&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Memorise the different LLM functions available their capabilities and limitations. The same applies to Notebooks.&lt;/p&gt;
&lt;p&gt;I was surprised when I planned the exam and redeemed my voucher that I received a notification that I should complete the exam within the next 24 hours, or the voucher would become invalid. My guess is that since there is no proctoring, there is also less scheduling overhead. So, make sure you do all your preparation first and only redeem your voucher on the day you want to take the exam.&lt;/p&gt;
&lt;h2&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;I see this certification more as an approachable refresher of Snowflake’s Cortex and novel platform capabilities. It is something that complements a practitioner’s day-to-day use of Snowflake rather than a deep architectural or migration credential.&lt;/p&gt;
&lt;p&gt;I would recommend this exam to anyone who has been using Snowflake for a few months and wants to formalise their knowledge. It is not about deep theoretical mastery but about confident, effective use of the platform. Prepare properly, cover the features, and walk in with practical experience. This combination will give you the best shot at success.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SnowPro® Associate: Platform Certification - Snowflake University guide page&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SnowPro® Certifications overview - Snowflake University&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SnowPro® Core Certification guide - Snowflake University&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SnowPro Registration and Training Resources - Snowflake Education&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Announcement: SnowPro Associate: Platform Certification - Snowflake University&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SnowPro Practice Exams - Snowflake University&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>Getting Databricks certified leaning on my Snowflake experience </title><link>https://www.digitalhive.be/post/getting-databricks-certified/</link><guid isPermaLink="true">https://www.digitalhive.be/post/getting-databricks-certified/</guid><description>In this blog, I want to have a look at my experience getting DataBricks certified. My newest certificate: Databricks Data Engineer Associate. I’ll cover why I pursued the certificate, how I prepared, and my thoughts on the resources and the exam itself.</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this blog, I want to have a look at my experience towards my newest certificate: Databricks Data Engineer Associate. I’ll cover why I pursued the certificate, how I prepared, and my thoughts on the resources and the exam itself.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_301b4ace845841069681bfe1e53e3ef5.jpeg&quot; alt=&quot;DataBricks Certified Data Engineer Associate Exam&quot;&gt;&lt;/p&gt;
&lt;p&gt;DataBricks Certified Data Engineer Associate Exam&lt;/p&gt;
&lt;h2&gt;Why Databricks?&lt;/h2&gt;
&lt;p&gt;For the past two and a half years, I have been working with Snowflake as my primary data platform. With Databricks offering both similarities and differences, I was curious to dive into it and broaden my knowledge.&lt;/p&gt;
&lt;p&gt;I am certainly not the first to compare the two. I found a great comparison in Graphable’s blog (&lt;a href=&quot;https://www.graphable.ai/blog/databricks-vs-snowflake/&quot;&gt;&lt;em&gt;Databricks vs Snowflake Wars: 7 Critical Differences&lt;/em&gt;&lt;/a&gt;). It highlights Snowflake’s origin in cloud data warehousing versus Databricks’ roots in data engineering and data science and it also states how they are growing towards each other with growing competitiveness.&lt;/p&gt;
&lt;p&gt;This difference in origin is what interests me most. Since Databricks is typically more technical, it also has a higher learning curve than Snowflake. But with the right experience this does give more in-depth control. My combined background in Python and data engineering gives me that technical experience, which allowed me to really enjoy that learning experience towards the certificate.&lt;/p&gt;
&lt;h2&gt;Study resources&lt;/h2&gt;
&lt;p&gt;Before I started preparing, we (Digital Hive) became a Databricks Partner. One of the benefits of that is the Databricks Partner Academy. A platform where they offer many courses and learning paths. In preparation of different certificates, they offer role-based learning paths. In my case this is obviously the Data Engineering Path.&lt;/p&gt;
&lt;p&gt;This path aligns closely with the exam topics, with the first half focusing on the Associate exam and the second half focusing on the Professional exam. A combination of video lessons and slides creates a good balance between theoretical content and a practical approach in demo videos where they are showing the topics discussed in a lab environment.&lt;/p&gt;
&lt;p&gt;For the theory, I believe it covers everything you need to know to prepare for the exam. However, for some hands-on experience I felt like it is lacking. The demo videos, while having a more practical approach, had more focus on SQL. As Databricks is often associated with Spark and therefore PySpark, it is no surprise that the exam questions are more focused on Python.&lt;/p&gt;
&lt;p&gt;One drawback I would like to mention is that the lab environment used in the videos is not available to practice with yourself. This would have been a valuable addition. You can still set up your own trial account and practice the topics on your own, but that would take a lot more time. Another alternative is instructor-led courses where I believe the lab environment is included. These are also available in the Partner Academy.&lt;/p&gt;
&lt;p&gt;Besides the study material, I was also looking for a way to test my knowledge before taking the exam. This search led me to LeetQuiz, definitely one to remember! They offer free practice questions for many certificates. Besides Databricks they also offer questions and practice exams for AWS, Google Cloud and Microsoft Azure certifications. With a mix of real exam questions, exam-like questions and AI-generated questions, they have more than enough to test yourself. For my certificate for example, they (currently) have 943 questions available. Note: the AI-generated questions felt a bit off at times but overall, it was a very useful resource.&lt;/p&gt;
&lt;h2&gt;The exam&lt;/h2&gt;
&lt;p&gt;After studying with the mentioned resources, I planned my exam and got started. I have to admit my focus while preparing was mostly on theoretical content, since I did not create a trial account. This meant that, even though the practice exams went fine, I was a bit nervous to start the exam with minimal actual Databricks expertise.&lt;/p&gt;
&lt;p&gt;In the end, this confirmed once again that learning new topics and broadening your horizons makes you more agile. I passed my exam by combining the theory I studied with my knowledge of general data engineering best practices I have learned throughout the years.&lt;/p&gt;
&lt;p&gt;Looking back, I’m glad I took the leap. The certificate not only gave me more confidence in Databricks but also made me more versatile as a data engineer. If you’re already comfortable in one data platform and want to broaden your horizons, I can highly recommend the Databricks Associate exam.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>My first year at Digital Hive: Growing as a CRM consultant</title><link>https://www.digitalhive.be/post/my-first-year-at-digital-hive-growing-as-a-crm-consultant/</link><guid isPermaLink="true">https://www.digitalhive.be/post/my-first-year-at-digital-hive-growing-as-a-crm-consultant/</guid><description>In February, I began my journey at Digital Hive as a Junior CRM Consultant. Over the past seven months, I’ve been immersed in the world of consultancy, gaining valuable experience and learning key lessons along the way. Read about my first year so far as a junior CRM Consultant at Digital Hive.</description><pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;CRM consultant: Remco Daniels&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In February, I began my journey at Digital Hive as a Junior CRM Consultant. Over the past seven months, I’ve been immersed in the world of consultancy, gaining valuable experience and learning key lessons along the way.&lt;/p&gt;
&lt;h2&gt;My first client: Solar Assistance&lt;/h2&gt;
&lt;p&gt;Just a few weeks into my role, I was assigned my first client, Solar Assistance, a company specializing in repairing and maintaining solar panels. They were already using Salesforce but needed more efficient processes within their CRM.&lt;/p&gt;
&lt;p&gt;Initially, I assumed the most challenging part of consultancy would be the technical aspects, mastering every detail of a CRM system and building what clients need. However, I quickly realized that the real challenge lies in the preparation: learning methodologies like agile and understanding concepts such as story point estimation, which were entirely new to me.&lt;/p&gt;
&lt;p&gt;Equally eye-opening was the level of client communication required. Coming from an admin role, I was used to working in the background with limited user interaction. As a consultant, the expectation is different: understanding client needs through discussions, framing the right solution, and clearly explaining why a specific approach was chosen. This was a steep but invaluable learning curve.&lt;/p&gt;
&lt;h2&gt;Providing IT support at Tosca&lt;/h2&gt;
&lt;p&gt;A few months later, I started working with Tosca, a global leader in reusable packaging and supply chain solutions. This project felt like a big step forward: not only was I introduced to a relatively new CRM environment, but I was also working with a globally distributed company with different processes and structures.&lt;/p&gt;
&lt;p&gt;My role focuses on providing user support and managing system changes, from analyzing requests to testing and deployment. At first, the biggest challenge was understanding the new environment. I learned quickly that the best way to familiarize yourself is by diving in and solving tickets.&lt;/p&gt;
&lt;p&gt;Although it was intimidating to realize some users knew the system better than I did, I adapted by asking the right questions and gradually became more confident. Gradually I was resolving issues more efficiently and even suggesting system improvements independently.&lt;/p&gt;
&lt;h2&gt;Building knowledge through certifications&lt;/h2&gt;
&lt;p&gt;In consultancy, credibility is essential. Certifications in platforms like Salesforce and Dynamics 365 not only demonstrate expertise but also enable us to work across multiple client environments.&lt;/p&gt;
&lt;p&gt;Before joining Digital Hive, I had mainly focused on the skills needed for my day-to-day work. Now, I recognize the importance of broadening my knowledge base. Studying for certifications can be time-intensive, but I found ways to make the process more efficient. AI tools, for example, have been invaluable in helping me create summaries to structure my learning. By reviewing these first, I can process information more effectively and save significant time.&lt;/p&gt;
&lt;p&gt;So far, I’ve achieved three Salesforce certifications and one Dynamics 365 certification. I’m proud of this progress and look forward to continuing to expand my expertise.&lt;/p&gt;
&lt;h2&gt;Working at Digital Hive&lt;/h2&gt;
&lt;p&gt;These past seven months have been an incredible growth experience. Digital Hive has played a key role in that journey. The company has a clear vision of what it stands for, and I’ve appreciated both the structured feedback and the supportive culture that drives personal development.&lt;/p&gt;
&lt;p&gt;A special thanks goes to Mathieu, who has been an outstanding mentor. From sparring sessions that challenged my thinking to regular feedback and support, I’ve learned a great deal from him and hope to continue doing so.&lt;/p&gt;
&lt;h2&gt;Looking ahead&lt;/h2&gt;
&lt;p&gt;I’m grateful for the colleagues and clients I’ve met so far and for the opportunities I’ve had to grow as a consultant. I look forward to building on this foundation, continuing to learn, and supporting even more clients in the future.&lt;/p&gt;
</content:encoded><category>crm-post</category><category>blog</category></item><item><title>DBT Certificate reflections and lessons learned </title><link>https://www.digitalhive.be/post/dbt-certificate-reflections-and-lessons-learned/</link><guid isPermaLink="true">https://www.digitalhive.be/post/dbt-certificate-reflections-and-lessons-learned/</guid><description>After my first year of working with dbt at Digital Hive I was encouraged as part of my growth path to take the dbt Analytics Engineering Certification Exam dbt Analytics engineer certification exam | dbt Labs and passed. As with most exams, things are never as they seem. With this blog I want to provide future exam participants with some pointers that could help them improve their preparation process for the exam.</description><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After my first year of working with dbt at Digital Hive I was encouraged as part of my growth path to take the &lt;a href=&quot;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&quot;&gt;&lt;em&gt;dbt Analytics Engineering Certification Exam dbt Analytics engineer certification exam | dbt Labs&lt;/em&gt;&lt;/a&gt; and passed. As with most exams, things are never as they seem. With this blog I want to provide future exam participants with some pointers that could help them improve their preparation process for the exam.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_ee06889766ce4bfe8d5d3c502758e0f2.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;My background in biomedical sciences and bioinformatics has led me to start a professional career as a data engineer in the pharma and life sciences sector. Although it has been 3 years since I first came across dbt, I have only been intensively using it for the past year. While working on different projects, I managed to stay up to date with the latest dbt developments. This helped me a lot when I started my current project. Here it is the core tool. Hence, my first advice to anyone that is currently not working with dbt but wants to use it, is to stay up to date with the high-level developments and changes. This will keep the familiarity with the tool alive and prevent concepts and terms from fading from your memory even if they are not used on a daily basis.&lt;/p&gt;
&lt;h2&gt;Why did I take the exam&lt;/h2&gt;
&lt;p&gt;Besides the fact that certificates serve as confirmation of a person&amp;#39;s competence in using a tool/platform, they can also be a great motivator to dive into the less used and more detailed features of that tool. After all the thrill of passing an IT exam comes quite close to that of passing your average college or university exams. By preparing and studying for the dbt exam you get insights into the structure of the documentation, and even if not all the topics are relevant, you will become familiar with navigating through it, which on its own is a great skill to acquire.&lt;/p&gt;
&lt;p&gt;Learning the exact commands and object names may be boring, but it helps you describe your methods and solutions accurately. As a result, you won&amp;#39;t always need to look up tool-specific terms online. These aspects come back during the exam when you have to recall terms under stress and limited time.&lt;/p&gt;
&lt;h2&gt;Setting up the study schedule&lt;/h2&gt;
&lt;p&gt;This part of preparing for the exam is crucial and very personal. For me, even though I had already worked with dbt for a year I planned to study for at least an hour a day three weeks in advance. As the saying goes “repetition is the mother of learning”.&lt;/p&gt;
&lt;p&gt;A large part of the exam comes down to memorizable theory that is packaged in not only &lt;strong&gt;multiple-choice&lt;/strong&gt; question but also &lt;strong&gt;Fill-in-the-blank&lt;/strong&gt;, &lt;strong&gt;Matching&lt;/strong&gt;, &lt;strong&gt;Hotspot&lt;/strong&gt;, &lt;strong&gt;Build list&lt;/strong&gt; and in my opinion the most challenging &lt;strong&gt;Discrete Option Multiple Choice&lt;/strong&gt; (DOMC).&lt;/p&gt;
&lt;p&gt;More practical knowledge is also tested on the exam. Therefore, one should make sure to set up the features that will be part of the examination (see study guide) at least once on a local learning project.&lt;/p&gt;
&lt;p&gt;Make a schedule that covers all topics and combine specific topics to memorize documentation with trying out the features. The documents that are suggested as reading material reflect the values and thought process that are important for a dbt Analytical engineer. This is smoothing to always keep in the back of your mind and not to skip!&lt;/p&gt;
&lt;h2&gt;The study resources&lt;/h2&gt;
&lt;p&gt;Up to today there is only one major resource besides the documentation and dbt learn paths that are referred to in the study guide namely, the dbt community on &lt;a href=&quot;http://qanalabs.com/&quot;&gt;&lt;em&gt;qanalabs.com&lt;/em&gt;&lt;/a&gt; . The &lt;a href=&quot;http://qanalabs.com/&quot;&gt;&lt;em&gt;qanalabs.com&lt;/em&gt;&lt;/a&gt; dbt community provides a comprehensive and up to date collection of mock exam questions with detailed explanations.&lt;/p&gt;
&lt;p&gt;Since I prefer to write my own summaries, I am not affected by the ongoing issue of limited access to condensed course materials. This will probably be resolved as soon as dbt grows in popularity. But for those who try to refrain as much as possible from taking their own notes &lt;a href=&quot;http://qanalabs.com/&quot;&gt;&lt;em&gt;qanalabs.com&lt;/em&gt;&lt;/a&gt; provides excellent and broad explanation on every topic the questions cover. Take into account that these are not ordered according to the study guide so you will need to organize that yourself.&lt;/p&gt;
&lt;p&gt;In short preparing for the exam is not self evident and requires great attention to detail if you do not want have a blank sport in your knowledge and leave exam questions unanswered.&lt;/p&gt;
&lt;p&gt;*(very important please read this several times in detail before starting to plan your study or even think about purchasing the exam voucher)&lt;/p&gt;
&lt;h2&gt;Booking the exam voucher&lt;/h2&gt;
&lt;p&gt;Read the study guide, this may have changed by the time you are reading this 😊.&lt;/p&gt;
&lt;h2&gt;The exam&lt;/h2&gt;
&lt;p&gt;Besides the different types of questions that make up the exam it does not differ from any mainstream proctored online exam. Except for two points that I noticed with the platform that maintains the proctoring talview.com (previously examity.com) was used&lt;/p&gt;
&lt;p&gt;The first point of attention is that there is no pre-exam test link, so make sure to go through the documentation on what to do before the start of the exam &lt;a href=&quot;https://certification.talview.com/support/solutions/11000005536&quot;&gt;&lt;em&gt;Learner : Proctoring &amp;amp; Certification Support&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The second point of attention is that the exam will start only at the exact moment you scheduled it so opening the link and doing the identity and surroundings check too early will result in an awkward and silent moment with you looking into the camera.&lt;/p&gt;
&lt;p&gt;During the exam it’s handy to flag the questions that you can&amp;#39;t answer immediately or that are very time consuming (DOMC questions) and keep them for the end. Also make sure to read the questions correctly and review all your answers at least once!&lt;/p&gt;
&lt;h2&gt;Final notes&lt;/h2&gt;
&lt;p&gt;I can recommend the following blog for more resource detailed information regarding the exam.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.digitalhive.be/post/the-path-to-the-dbt-developer-certification&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_412d35ecf3f948b382c6cba66c9c5bbf.jpg&quot; alt=&quot;The path to the dbt Developer Certification &quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.digitalhive.be&quot;&gt;www.digitalhive.be&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The path to the dbt Developer Certification&lt;/p&gt;
&lt;p&gt;Getting certified with dbt will test your knowledge of the framework. Read this blog for some tips and guidance to make sure you are ready.&lt;/p&gt;
&lt;p&gt;If you still feel unsure and need to talk to someone or if you have specific questions. qanalabs.com has a comment section for the study exams where people frequently discuss their ideas and get question answered by the content maintainers.&lt;/p&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&quot;&gt;dbt Analytics Engineer certification exam&lt;/a&gt; — the official exam page&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.getdbt.com/dbt-assets/certifications/dbt-certificate-study-guide&quot;&gt;Study guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.qanalabs.com/courses/take/dbt-developer/quizzes/67491324-quiz&quot;&gt;Qanalabs practice exams&lt;/a&gt; and their &lt;a href=&quot;https://www.qanalabs.com/communities/Q29tbXVuaXR5LTQ5ODk0/spaces/Q29tbXVuaXR5U3BhY2UtMTI2OTk1/&quot;&gt;community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://certification.talview.com/support/solutions/11000005536&quot;&gt;Talview&lt;/a&gt; — the proctoring company&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/post/the-path-to-the-dbt-developer-certification&quot;&gt;The path to the dbt Developer Certification&lt;/a&gt; — our earlier, more comprehensive post&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>The Future of AI with Salesforce Agentforce</title><link>https://www.digitalhive.be/post/the-future-of-ai-with-salesforce-agentforce/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-future-of-ai-with-salesforce-agentforce/</guid><description>Salesforce Agentforce is a revolutionary new layer on the Salesforce Platform that empowers organizations to build and deploy these autonomous AI agents. Industry leaders like OpenTable, Saks, and Wiley are already using Agentforce to enhance their teams, scale operations, and elevate customer experiences.</description><pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first AI, created in 1950, was like a strict recipe follower, executing a fixed set of instructions with no room for creativity or adjustment. Today’s AI is more like a skilled chef who tastes, adapts, and invents recipes dynamically, generating creative and responsive outputs. But what if AI could take it even further? Not just generating a recipe, but actively bringing the meal to life by buying ingredients, scheduling reservations, and managing unexpected challenges?&lt;/p&gt;
&lt;p&gt;This is the promise of &lt;strong&gt;agentic AI&lt;/strong&gt;: autonomous, proactive AI agents that use large language models (LLMs) to understand complex contexts, reason through decisions, and take independent actions to complete specialized tasks.&lt;/p&gt;
&lt;h2&gt;Introducing Salesforce Agentforce: Autonomous AI Agents to Scale Your Workforce&lt;/h2&gt;
&lt;p&gt;Salesforce Agentforce is a revolutionary new layer on the Salesforce Platform that empowers organizations to build and deploy these autonomous AI agents. Industry leaders like OpenTable, Saks, and Wiley are already using Agentforce to enhance their teams, scale operations, and elevate customer experiences.&lt;/p&gt;
&lt;p&gt;While trust in autonomous AI remains cautious today, 77% of workers believe they will trust AI agents in the future, revealing a tremendous opportunity for businesses ready to adopt and integrate AI into their workflows in 2025 and beyond.&lt;/p&gt;
&lt;h2&gt;How AI Agents Will Change the Way We Work&lt;/h2&gt;
&lt;p&gt;An estimated &lt;strong&gt;41% of employee time&lt;/strong&gt; is currently spent on repetitive, low-impact work. Salesforce leaders foresee a future where AI agents handle these routine tasks, freeing humans to focus on strategic, relationship-driven work that actually moves the needle on revenue and innovation.&lt;/p&gt;
&lt;h3&gt;1. AI Will Become Simpler and More Actionable&lt;/h3&gt;
&lt;p&gt;“AI will become easier to implement within day-to-day business applications, allowing companies to securely integrate agents that use customer and business data to support processes,” explains Steve Hammond, EVP of Marketing Cloud. “This combination of ease and real-time actionability will boost confidence, utilization, and business value.”&lt;/p&gt;
&lt;h3&gt;2. Analytics Will Be Ambient and Seamless&lt;/h3&gt;
&lt;p&gt;By 2025, Nate Nichols, VP at Tableau, predicts that &lt;strong&gt;25% of all analytical insights&lt;/strong&gt; will be delivered ‘ambiently’, meaning AI will proactively surface insights embedded within daily workflows without users needing to seek them out. Whether it’s a smart suggestion during a meeting or a notification on a wearable device, data-driven decision-making will become effortless.&lt;/p&gt;
&lt;h3&gt;3. AI Agents Will Become the New Apps&lt;/h3&gt;
&lt;p&gt;Jayesh Govindarajan, EVP of Salesforce AI, compares AI agents to mobile apps in their transformative potential. These agents will be highly customizable and autonomous, capable of anticipating needs and optimizing tasks across industries. Conversational and embedded in workflows, they will elevate productivity and scale business operations intelligently.&lt;/p&gt;
&lt;h3&gt;4. New Jobs Will Demand Hybrid Skills&lt;/h3&gt;
&lt;p&gt;Lori Castillo Martinez, EVP of Talent Growth &amp;amp; Development, highlights the importance of cultivating a new blend of skills: technical, human, and soft. The future workforce will need programming and data analysis know-how, along with creativity, emotional intelligence, and problem-solving abilities to thrive alongside AI agents.&lt;/p&gt;
&lt;h3&gt;5. Mastering Unstructured Data Will Be Key&lt;/h3&gt;
&lt;p&gt;With 80% of enterprise data unstructured, Sarah Walker, COO of Slack, notes that the companies that can harness and make AI-ready this unstructured data will outperform competitors. From customer sentiment analysis to generating strategic content, the ability to navigate this data will define success in 2025.&lt;/p&gt;
&lt;h3&gt;6. Upskilling Will Be a Business Priority&lt;/h3&gt;
&lt;p&gt;Nathalie Scardino, Chief People Officer, predicts 2025 will be the year of upskilling, as companies race to equip employees with AI tools and knowledge to remain competitive. Employees will increasingly choose employers who invest in their continuous development.&lt;/p&gt;
&lt;h3&gt;7. AI Will Redefine the Employee Experience&lt;/h3&gt;
&lt;p&gt;Relina Bulchandani, EVP of Real Estate and Workplace Services, sees AI agents transforming how workers use office spaces, from booking meeting rooms to optimizing real estate portfolios, creating more efficient and collaborative workplaces.&lt;/p&gt;
&lt;h2&gt;How AI Agents Will Transform Industries&lt;/h2&gt;
&lt;p&gt;The impact of AI agents will differ across industries, unlocking new possibilities tailored to their unique needs.&lt;/p&gt;
&lt;h3&gt;1. SMBs Will Leapfrog Larger Competitors&lt;/h3&gt;
&lt;p&gt;Kris Billmaier, EVP of Sales Cloud, sees small and midsize businesses (SMBs) leveraging AI agents to scale rapidly, streamlining operations, engaging customers, and delivering personalized marketing. AI will empower these companies to compete and even surpass larger rivals.&lt;/p&gt;
&lt;h3&gt;2. Goodbye to Cumbersome Nonprofit Annual Reports&lt;/h3&gt;
&lt;p&gt;Nonprofits will evolve beyond slow, bulky reports, says Lori Freeman, VP &amp;amp; GM of Nonprofit. Donors will directly engage with AI agents that show real-time impact, provide proof points, and enable instant giving or volunteering, revolutionizing donor engagement.&lt;/p&gt;
&lt;h3&gt;3. AI-Powered Retail Experiences&lt;/h3&gt;
&lt;p&gt;Michael Affronti, SVP of Commerce Cloud, envisions AI agents transforming retail by providing personalized shopper assistance, especially during peak seasons. With AI already influencing 16% of sales in recent months, personal shopper agents will become a must-have for digital retailers.&lt;/p&gt;
&lt;h3&gt;4. Scaling Nonprofit Impact with AI Agents&lt;/h3&gt;
&lt;p&gt;Nonprofits are early adopters of AI, with 90% using it to boost engagement, according to Molly Ford, VP of Employer Brand. AI agents will help nonprofits optimize staffing, co-create volunteer roles, and connect employees to local volunteering opportunities.&lt;/p&gt;
&lt;h3&gt;5. Education Will See Rapid AI Adoption&lt;/h3&gt;
&lt;p&gt;Margo Martinez, VP of Education, explains how AI agents will help educational institutions understand costs at a granular level and reduce staff burnout by taking on scheduling and enrollment tasks. These agents will be crucial for managing seasonal surges in demand.&lt;/p&gt;
&lt;h3&gt;6. Government Services Will Become More Accessible&lt;/h3&gt;
&lt;p&gt;Nasi Jazayeri, EVP of Public Sector, predicts that by the end of 2025, AI agents will be widely deployed across federal and local agencies, helping citizens quickly renew passports, register vehicles, and understand benefits, making government services easier and more efficient.&lt;/p&gt;
&lt;h2&gt;How Humans Will Interact with Agents in the Future&lt;/h2&gt;
&lt;p&gt;Salesforce leaders offer deep insights into how AI agents will change our daily work and customer interactions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copilots will become commonplace&lt;/strong&gt;, evolving from simple assistants to business-aware agents that handle strategic tasks (Adam Evans, EVP, Salesforce AI Platform).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We’ll see &lt;strong&gt;multi-agent teams tackling complex challenges&lt;/strong&gt;, simulating product launches or marketing strategies with advanced reasoning (Mick Costigan, VP, Salesforce Futures).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Growing confidence in AI will accelerate adoption, transforming customer engagement and workflows (Rob Seaman, Chief Product Officer, Slack).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI agents will become the &lt;strong&gt;preferred channel for customer interactions&lt;/strong&gt;, requiring businesses to create cross-functional teams focused on optimizing AI experiences (Jon Belkowitz, Senior Director, Marketing Cloud).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The rise of &lt;strong&gt;personal AI agents&lt;/strong&gt; will prompt companies to integrate “bring your own AI” policies (BYOAI) to keep pace (Mick Costigan).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agentforce Inspectors&lt;/strong&gt; will provide continuous monitoring and instant actions to improve business outcomes (Ryan Aytay, CEO, Tableau).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI agents will &lt;strong&gt;collaborate in swarms&lt;/strong&gt;, working together to solve strategic tasks seamlessly (Silvio Savarese, Chief Scientist, Salesforce AI Research).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agents will &lt;strong&gt;fix fragmented customer journeys&lt;/strong&gt; by sharing data and orchestrating smooth transitions between teams (Gabrielle Tao, SVP, Product Management).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Bottom Line&lt;/h2&gt;
&lt;p&gt;Agentic AI represents a paradigm shift, from AI that assists to AI that acts autonomously and collaboratively. With Salesforce Agentforce, businesses can automate repetitive tasks, unlock strategic human potential, and transform industries through trusted, intelligent AI agents.&lt;/p&gt;
&lt;p&gt;The future will be defined by humans and AI agents working side-by-side, combining creativity, empathy, and judgment with scalable autonomous execution to deliver extraordinary outcomes.&lt;/p&gt;
</content:encoded><category>crm-post</category><category>blog</category><category>salesforce-posts</category></item><item><title>Processing both medical and commercial sales data from multiple countries </title><link>https://www.digitalhive.be/post/processing-medical-and-commercial-sales-data-from-multiple-countries/</link><guid isPermaLink="true">https://www.digitalhive.be/post/processing-medical-and-commercial-sales-data-from-multiple-countries/</guid><description>Our team was tasked with processing both medical and commercial sales data from multiple countries to generate actionable recommendations for sales representatives. This initiative was designed to enable targeted outreach and improve overall sales effectiveness. This project presented several complex challenges that required innovative solutions and seamless collaboration across teams.</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;The project&lt;/h2&gt;
&lt;p&gt;Our team was tasked with processing both medical and commercial sales data from multiple countries to generate actionable recommendations for sales representatives. The recommendations provided details on which Health Care Professionals (HCPs) to contact, along with their communication preferences and the optimal frequency and topics for engagement. This initiative was designed to enable targeted outreach and improve overall sales effectiveness.&lt;/p&gt;
&lt;h2&gt;The challenge&lt;/h2&gt;
&lt;p&gt;This project presented several complex challenges that required innovative solutions and seamless collaboration across teams.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regional Differences Between Countries&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pharmaceutical data varies widely between countries, with differences in HCP titles, product mappings, and therapeutic area classifications. To accommodate these regional nuances, we developed a flexible system where each country was assigned its own configuration file, layered over a shared global pipeline. This approach ensured that localized differences were captured without compromising the consistency of the data processing workflow.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Separation of Medical and Commercial Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The project integrated data from two distinct sources: commercial data (such as sales figures and market share data purchased from third parties) and sensitive medical data. Given the stringent regulatory requirements in the pharma industry, we designed separate pipelines for processing each type of data. This separation ensured that medical data was never inadvertently used in commercial applications, while still allowing both data sets to undergo equivalent processing techniques for quality and consistency.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Collaboration Between Data Engineering (DE) and Data Science (DS)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The success of this project hinged on the strong collaboration between the Data Engineering and Data Science teams. We adopted Kedro—an open-source framework for data science code—to implement the pipelines, utilizing Python and Spark. The pipeline architecture was split into two main segments: the initial data ingestion and transformation was managed by the DE team, while the final data modeling and recommendation tasks were handled by the DS team. By maintaining all code in a single repository, we not only streamlined the development process but also fostered mutual understanding between the teams. A key benefit of using Kedro was its built-in lineage tracking, which enhanced transparency, reproducibility, and overall quality assurance.&lt;/p&gt;
&lt;p&gt;(Example visualization available at: &lt;a href=&quot;https://kedro.org&quot;&gt;&lt;em&gt;https://kedro.org&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Our contribution&lt;/h2&gt;
&lt;p&gt;We began our engagement on the project with a senior consultant integrated into the existing data engineering team. Our early efforts focused on optimizing and maintaining current pipelines, as well as designing new flows to enhance data processing efficiency.&lt;/p&gt;
&lt;p&gt;Over time, as trust was established and our technical expertise recognized, we were entrusted with the end-to-end rollout of a new medical recommendation flow across the EMEA region. This innovative flow utilized AI-driven recommendations, drawing on insights from medical publications and expert analyses to guide sales strategies. One of our senior consultants assumed full ownership of this rollout, handling sprint planning, stakeholder communication, and ensuring the alignment of project objectives with business goals. Additionally, we expanded the team by onboarding and managing five junior engineers, including additional consultants from Digital Hive, to support the increased scope of work.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The project was a success, leading to increased sales figures for the affected products.&lt;/p&gt;
&lt;p&gt;After an initial ramp-up period, our team assumed full responsibility for the medical recommendation flow, leading to a successful rollout across 20 EMEA countries.&lt;/p&gt;
&lt;p&gt;This project is an excellent example of how robust data pipelines and strong DE-DS collaboration are critical to the success of AI-driven initiatives. By ensuring that the AI models were fed with high-quality, reliable data, we not only achieved operational excellence but also directly supported strategic decision-making in the pharma sector. Our integrated approach to data engineering and data science not only enhanced HCP engagement but also drove tangible improvements in business performance.&lt;/p&gt;
</content:encoded><category>ai-case</category><category>all-cases</category><category>customer-cases-data</category></item><item><title>Orchestrating Snowflake queries in Airflow</title><link>https://www.digitalhive.be/post/orchestrating-snowflake-queries-in-airflow/</link><guid isPermaLink="true">https://www.digitalhive.be/post/orchestrating-snowflake-queries-in-airflow/</guid><description>Discover how to orchestrate Snowflake SQL queries using Apache Airflow efficiently.</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When building data pipelines with Apache Airflow and Snowflake, executing SQL queries is a core operation. Whether you&amp;#39;re managing test data, orchestrating data transformations, or cleaning up unused artifacts, it&amp;#39;s important to understand the options available for running queries efficiently and scalable. This blog explores three ways to execute SQL queries on Snowflake from Airflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Using the SnowflakeOperator&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using the SnowflakeHook&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using a Python function wrapped SnowflakeOperator.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Network policy update&lt;/h2&gt;
&lt;p&gt;If you&amp;#39;re using managed Airflow (e.g., AWS MWAA), you often need to whitelist the egress IP of your Airflow environment in Snowflake’s network policy. Without this, Snowflake may block the connection. You can add the IP using:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ALTER NETWORK POLICY my_policy SET ALLOWED_IP_LIST=(&amp;#39;your_airflow_egress_ip&amp;#39;);&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Creating a Snowflake connection in Airflow&lt;/h2&gt;
&lt;p&gt;The connection to Snowflake in Airflow can be created and maintained using the Airflow UI connections. Follow the steps below to create the connection.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In the Airflow UI, navigate to Admin &amp;gt; Connections&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Click&lt;/em&gt; + Add&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill out:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Conn Id: SNOWFLAKE_CONN_ID&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conn Type: Snowflake&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide credentials and connection details: account, user*, password, role, warehouse, database, schema.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;*Preferably you would have a dedicated Service Account User with a private key. There are dedicated fields for this available.&lt;/p&gt;
&lt;h2&gt;Define Airflow Variables&lt;/h2&gt;
&lt;p&gt;In many cases, you may want to maintain reusable variables that are specific to a DAG or environment. This can also be managed directly from the Airflow UI.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;In&lt;/em&gt; the Airflow UI, navigate to Admin &amp;gt; Variables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Click&lt;/em&gt; + Add&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill out:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Key: MY_DAG_VARIABLE_ID&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Val: Json dictionary with the variables that you want to pass to the DAG. This should contain the name of the connection made in the previouse step (SNOWFLAKE_CONN_ID).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Description:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can access the connection variable from within the dag with the following code:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From airflow.models import Variable&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;snowflake_connection = Variable.get(&amp;quot;DAG_VARIABLE_ID&amp;quot;, deserialize_json=True)[&amp;quot;SNOWFLAKE_CONN_ID&amp;quot;]&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Approach 1: Static SQL with the SnowflakeOperator&lt;/h3&gt;
&lt;p&gt;The SnowflakeOperator offers a straightforward approach for executing SQL on Snowflake directly from Airflow. This approach is best for executing static queries as templated queries would need to be passed from another task that would generate the query.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;snowflake_direct_operator_task = SnowflakeOperator(&lt;/li&gt;
&lt;li&gt;task_id=&amp;quot;delete_test_data&amp;quot;,&lt;/li&gt;
&lt;li&gt;snowflake_conn_id=snowflake_connection,&lt;/li&gt;
&lt;li&gt;sql=&amp;quot;DELETE FROM dev_staging.orders WHERE is_test_data = TRUE;&amp;quot;,&lt;/li&gt;
&lt;li&gt;autocommit=True,&lt;/li&gt;
&lt;li&gt;dag=dag,&lt;/li&gt;
&lt;li&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SQL is executed on Snowflake compute, not Airflow&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tasks are fully visible and managed in the Airflow UI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Retries, logging, and failures are handled automatically&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The SQL is static templated query usage is not straight foreword.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Looping or parameterization is difficult without rewriting the DAG&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Approach 2: SQL execution using SnowflakeHook&lt;/h3&gt;
&lt;p&gt;Using the SnowflakeHook to connect to Snowflake allows SQL query templating and full control over query execution from within a Python function. This approach involves manually opening a connection and cursor. The function will then be executed in a task that uses the PythonOperator.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;from airflow.providers.snowflake.hooks.snowflake import SnowflakeHook&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;from airflow.operators.python_operator import PythonOperator&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;def execute_snowflake_cursor(**kwargs):&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;hook = SnowflakeHook(snowflake_conn_id=snowflake_connection)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;conn = hook.get_conn()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cursor = conn.cursor()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;try:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cursor.execute(&amp;quot;DELETE FROM dev_staging.orders WHERE is_test_data = TRUE;&amp;quot;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;results = cursor.fetchall()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;print(&amp;quot;Results:&amp;quot;, results)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;finally:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cursor.close()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;conn.close()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;h1&gt;Define task using the PythonOperator&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;execute_snowflake_cursor_task = PythonOperator(&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;task_id=&amp;quot;execute_snowflake_indirect_operator_task&amp;quot;,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;python_callable=execute_snowflake_operator,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;op_kwargs={&amp;#39;snowflake_connection&amp;#39;: snowflake_connection}, # Pass the connection here&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;provide_context=True,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;dag=dag&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Full flexibility in Python&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ideal for logic-heavy tasks, metadata inspection, or dynamic SQL&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can integrate complex control flow&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SQL is executed inside the Airflow worker, increasing load and runtime&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Less scalable for large operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You manage error handling and connection lifecycle manually&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This method is suitable for smaller, metadata-driven, or low-latency tasks where query results need to be processed immediately in Python.&lt;/p&gt;
&lt;h3&gt;Approach 3: Dynamic SnowflakeOperator Inside a Python function&lt;/h3&gt;
&lt;p&gt;The third approach combines the flexibility of Python with the performance of the SnowflakeOperator. You dynamically create and execute SnowflakeOperator tasks from inside a PythonOperator. This enables looping over dynamically generated SQL while preserving execution on Snowflake.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;def execute_dynamic_snowflake_ops(**kwargs):&lt;/li&gt;
&lt;li&gt;table_names = [&amp;quot;orders_2023&amp;quot;, &amp;quot;orders_2024&amp;quot;] # Dynamically calculated in real use&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;for table in table_names:&lt;/li&gt;
&lt;li&gt;sql_stmt = f&amp;quot;DELETE FROM {table} WHERE is_test_data = TRUE;&amp;quot;&lt;/li&gt;
&lt;li&gt;dynamic_op = SnowflakeOperator(&lt;/li&gt;
&lt;li&gt;task_id=f&amp;quot;cleanup_{table}&amp;quot;,&lt;/li&gt;
&lt;li&gt;snowflake_conn_id=snowflake_connection,&lt;/li&gt;
&lt;li&gt;sql=sql_stmt,&lt;/li&gt;
&lt;li&gt;autocommit=True,&lt;/li&gt;
&lt;li&gt;dag=kwargs[&amp;quot;dag&amp;quot;],&lt;/li&gt;
&lt;li&gt;)&lt;/li&gt;
&lt;li&gt;dynamic_op.execute(context=kwargs)&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;h1&gt;define task using the PythonOperator&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;execute_snowflake_cursor_task = PythonOperator(&lt;/li&gt;
&lt;li&gt;task_id=&amp;quot;execute_snowflake_indirect_operator_task&amp;quot;,&lt;/li&gt;
&lt;li&gt;python_callable=execute_snowflake_operator,&lt;/li&gt;
&lt;li&gt;op_kwargs={&amp;#39;snowflake_connection&amp;#39;: snowflake_connection}, # Pass the connection here&lt;/li&gt;
&lt;li&gt;provide_context=True,&lt;/li&gt;
&lt;li&gt;dag=dag&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Flexibility to calculate query content and targets dynamically&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeps execution on Snowflake, avoiding Airflow compute usage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Useful for batch-style or templated SQL operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All subqueries run within one Python task, reducing visibility in the Airflow UI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Failures may be harder to trace to specific queries&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loses automatic retry behavior for individual queries&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More complex to manage and test&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This hybrid method shines when you need to loop over dynamic inputs (dates, teams, business units) but still want Snowflake to do the work, not Airflow.&lt;/p&gt;
&lt;h2&gt;Summary Comparison&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SnowflakeOperator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SnowflakeHook&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SnowflakeOperator in Python Function&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compute Location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Snowflake&lt;/td&gt;
&lt;td&gt;Airflow Worker&lt;/td&gt;
&lt;td&gt;Snowflake&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Airflow Resource Load&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Airflow UI Task Visibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Query Generation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best Use Case&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Static queries&lt;/td&gt;
&lt;td&gt;Metadata-based logic&lt;/td&gt;
&lt;td&gt;Dynamic batch SQL execution&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Use SnowflakeOperator when your SQL is static and doesn&amp;#39;t depend on runtime variables. It’s Snowflake’s recommended method, as it keeps compute on Snowflake and lets Airflow orchestration.&lt;/p&gt;
&lt;p&gt;Use SnowflakeHook with a cursor only when you need Python-level logic, such as looping over metadata or handling small result sets. Snowflake advises against this for heavy workloads, since execution happens on the Airflow worker.&lt;/p&gt;
&lt;p&gt;Use SnowflakeOperator inside a Python function when you want to generate queries dynamically at runtime, for example when looping over tables or dates. This keeps compute on Snowflake, while allowing flexible control through Python.&lt;/p&gt;
&lt;p&gt;From Snowflake&amp;#39;s perspective, both the first and third approaches are aligned with best practices. Let Snowflake handle compute, and let Airflow orchestrate. This avoids overloading your scheduler and ensures scalable performance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;apache-airflow-providers-snowflake: &lt;a href=&quot;https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/index.html&quot;&gt;https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Snowflake Connector for Python: &lt;a href=&quot;https://docs.snowflake.com/en/developer-guide/python-connector/python-connector&quot;&gt;https://docs.snowflake.com/en/developer-guide/python-connector/python-connector&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Airflow Variables: &lt;a href=&quot;https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/connections/snowflake.html&quot;&gt;&lt;em&gt;https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/connections/snowflake.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>Can I still automate ingestion if my source data is inconsistent ? - A solution using Snowflake&apos;s infer schema</title><link>https://www.digitalhive.be/post/automating-ingestion-with-inconsistent-source-data-snowflake-infer-schema/</link><guid isPermaLink="true">https://www.digitalhive.be/post/automating-ingestion-with-inconsistent-source-data-snowflake-infer-schema/</guid><description>In this blog post we dive into how you can safely handle source data inconsistencies using the Snowflake tool stack. Originally intended to infer schemas from semi-structured or structured files during prototyping, Snowflakes INFER_SCHEMA can easily be implemented in production settings.</description><pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When dealing with real world data we often face inconsistencies in source data structure, especially when those sources are file based structured or unstructured files. Snowflake provides a solution for tackling these issues. Here we dive into how you can safely handle source data inconsistencies using the Snowflake tool stack.&lt;/p&gt;
&lt;p&gt;Originally intended to infer schemas from semi-structured or structured files during prototyping, Snowflakes INFER_SCHEMA can easily be implemented in production settings.&lt;/p&gt;
&lt;h2&gt;What is the problem&lt;/h2&gt;
&lt;p&gt;Imagine having a steady snowpipe that has not needed any updating or maintenance since it was created. Structured data files are being dropped on an external stage, and the pipe gets triggered and ingests the data into the predefined columns in your Snowflake table.&lt;/p&gt;
&lt;p&gt;Everything is going smoothly until you get a new request from the marketing team for several new fields to be included. Now you need to not only update the pipe but also your destination table.&lt;/p&gt;
&lt;h2&gt;What is the best way to tackle the issue ?&lt;/h2&gt;
&lt;p&gt;One approach is to have your file content fully ingested into a file content column. This can be easily implemented. However, in the case of a generic medallion architecture, this approach will defer the issue from the bronze (raw) layer to the silver layer. Happy ingestion team, not so happy transformation team.&lt;/p&gt;
&lt;p&gt;A more sustainable approach is to allow your source some flexibility and be able to handle this in the ingestion process. Here Snowflake offers a solution that is based on automatically detecting schemas and column definitions in structured and semi structured data files: INFER_SCHEMA.&lt;/p&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stage&lt;/strong&gt;: Your data file must be in a named stage (internal or external) or user stage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target Files&lt;/strong&gt;: The LOCATION argument must point to one or more files. You can provide the full path to a specific file or point to a directory containing multiple file and use the MAX_FILE_COUNT argument to limit the amount of files that will be used to infer the schema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File formats&lt;/strong&gt;: INFER_SCHEMA works with semi-structured formats only which are the following files structures: Parquet, Avro, ORC, JSON, and CSV. This is not extension dependent. .txt files containing csv or json data can also be handled. The same goes for zipped files (.gz). You must specify a pre-defined FILE_FORMAT object, even for common types like JSON or CSV. This is how Snowflake knows how to interpret the raw files.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How does it work ?&lt;/h2&gt;
&lt;p&gt;Here we go over a typical case where we want to have the latest file dropped in an external stage to be ingested into a table in Snowflake. Historical data is not kept in this approach. This case is a good representation of ingesting reference data. We will work out the approach for ingesting csv files.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;h3&gt;Create a file format&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This file format will be used to parse the files staged at a given path.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CREATE FILE FORMAT my_csv_format 2. TYPE = csv 3. PARSE_HEADER = TRUE;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: Use PARSE_HEADER = TRUE in your file format to infer actual column names instead of defaulting to c1, c2, etc.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;h3&gt;Create table using template&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt; 1. CREATE TABLE mytable  2. USING TEMPLATE (  3. SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*))  4. FROM TABLE(  5. INFER_SCHEMA(  6. LOCATION=&amp;gt;&amp;#39;@mystage/csv/&amp;#39;,  7. FILE_FORMAT=&amp;gt;&amp;#39;my_csv_format&amp;#39;  8. )  9. ));&lt;/p&gt;
&lt;p&gt;The INFER_SCHEMA function in combination with the USING TEMPLATE clause is used to auto-generate a table schema from file metadata. INFER_SCHEMA scans staged data (e.g., csv files) and returns metadata including column names, data types, nullability, and more*. This schema array is passed into USING TEMPLATE, which allows the construction of a table based on the schema definition.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;h3&gt;Copy data into the created table&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;COPY INTO mytable 2. FROM &amp;#39;@mystage/csv/&amp;#39; 3. FILE_FORMAT = (FORMAT_NAME = &amp;#39;my_csv_format&amp;#39;) 4. MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The COPY INTO command is used to load the data from @mystage/csv/, using the predefined file format, and loads it into mytable.&lt;/p&gt;
&lt;p&gt;The clause MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE ensures that the mapping between source and target columns is done by name, ignoring case differences.&lt;/p&gt;
&lt;p&gt;PURGE = TRUE automatically deletes the source file after it has been successfully ingested, preventing duplicate loads and saving storage.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;h3&gt;Automate the process&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can wrap the ingestion logic inside a SQL stored procedure or script and schedule it to run at regular intervals. Tasks can be time-based using CRON expressions or event based.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CREATE OR REPLACE TASK infer_and_ingest_task 2. WAREHOUSE = my_wh 3. SCHEDULE = &amp;#39;USING CRON 0 * * * * UTC&amp;#39; -- every hour 4. AS 5. BEGIN 6. CREATE OR REPLACE TABLE mytable 7. USING TEMPLATE ( 8. SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*)) 9. FROM TABLE( 10. INFER_SCHEMA( 11. LOCATION=&amp;gt;&amp;#39;@mystage/csv/&amp;#39;, 12. FILE_FORMAT=&amp;gt;&amp;#39;my_csv_format&amp;#39; 13. ) 14. ) 15. ); 16.   17. COPY INTO mytable 18. FROM &amp;#39;@mystage/csv/&amp;#39; 19. FILE_FORMAT = (FORMAT_NAME = &amp;#39;my_csv_format&amp;#39;) 20. MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE 21. PURGE = TRUE; 22. END;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This makes schema-flexible ingestion pipelines fully automatable with little maintenance overhead. For large or enterprise workflows, you can integrate these tasks into orchestration platforms like Apache Airflow or dbt Cloud.&lt;/p&gt;
&lt;h2&gt;Pro tip&lt;/h2&gt;
&lt;p&gt;Instead of using the inferred data types, hardcode column definitions using OBJECT_CONSTRUCT and manually assign all columns to a VARCHAR datatype. See the example below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CREATE TABLE mytable 2. USING TEMPLATE ( 3. SELECT ARRAY_AGG( 4. OBJECT_CONSTRUCT( 5. &amp;#39;COLUMN_NAME&amp;#39;, COLUMN_NAME, 6. &amp;#39;TYPE&amp;#39;, &amp;#39;VARCHAR&amp;#39;, 7. &amp;#39;NULLABLE&amp;#39;, NULLABLE 8. ) 9. ) 10. FROM TABLE( 11. INFER_SCHEMA( 12. LOCATION=&amp;gt;&amp;#39;@mystage/csv/&amp;#39;, 13. FILE_FORMAT=&amp;gt;&amp;#39;my_csv_format&amp;#39; 14. ) 15. ));&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;*INFER_SCHEMA metadata&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_5302a89270a84c6f966169e309de1da0.jpg&quot; alt=&quot;INFER_SCHEMA metadata&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All the variations of timestamp data types (DATE_FORMAT, TIME_FORMAT, and TIMESTAMP_FORMAT) are retrieved as TIMESTAMP_NTZ without any time zone information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For CSV files, SKIP_HEADER does not work in schema inference mode. Use PARSE_HEADER = TRUE in your file format instead.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using * for ARRAY_AGG(OBJECT_CONSTRUCT()) can cause errors if the returned result is larger than 16MB. Only use the required columns, COLUMN NAME, TYPE, and NULLABLE, for the query.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For files with nested data, only the first level of nesting is supported.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If your source data structure is inconsistent or evolves frequently, don’t fight it. Adapt your pipeline using INFER_SCHEMA and Snowflake Tasks. This approach removes the friction from handling schema drift, eliminates the need for frequent manual DDL updates, and allows your ingestion pipelines to stay responsive to upstream changes. With automation via Snowflake Tasks, dynamic table creation, and flexible ingestion strategies, your data platform can evolve as fast as your source data does.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;File formats: &lt;a href=&quot;https://docs.snowflake.com/en/sql-reference/sql/create-file-format&quot;&gt;https://docs.snowflake.com/en/sql-reference/sql/create-file-format&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Infer schema: &lt;a href=&quot;https://docs.snowflake.com/en/sql-reference/functions/infer_schema&quot;&gt;https://docs.snowflake.com/en/sql-reference/functions/infer_schema&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Copy into: &lt;a href=&quot;https://docs.snowflake.com/en/sql-reference/sql/copy-into-table&quot;&gt;https://docs.snowflake.com/en/sql-reference/sql/copy-into-table&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Data loading: &lt;a href=&quot;https://docs.snowflake.com/en/user-guide/data-load-overview#label-detect-column-definitions-in-semi-structured-data-files&quot;&gt;&lt;em&gt;https://docs.snowflake.com/en/user-guide/data-load-overview#label-detect-column-definitions-in-semi-structured-data-files&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>dbt build selector: A Practical Guide</title><link>https://www.digitalhive.be/post/dbt-build-selector-a-practical-guide/</link><guid isPermaLink="true">https://www.digitalhive.be/post/dbt-build-selector-a-practical-guide/</guid><description>In this post, we’ll break down how to use the --select and --exclude options with dbt build and how combining them can supercharge your workflow.</description><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you&amp;#39;re working with dbt, especially on larger projects, you don’t always want to build every model every time. That’s where selectors come in. By grouping the models that need to be refreshed in one command time and resources are used more efficiently. With the dbt build command, selectors give you fine-grained control over exactly what gets built. In this post, we’ll break down how to use the --select and --exclude options with dbt build and how combining them can supercharge your workflow.&lt;/p&gt;
&lt;p&gt;Before we dive in, let’s clarify a few important flags and commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;--select and -s are interchangeable. They both define what to build.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--models is an older flag that does the same thing as --select, but it’s now considered deprecated. It still works, but it’s best to switch to --select or -s in modern dbt workflows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;--exclude defines what not to build.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The dbt list or dbt ls command will allow you to list the selected models. It is recommended to use this command to test whether the selection you use will build the models you intend to build.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A selector tells dbt which nodes (models, tests, snapshots, etc.) you want to act on. With dbt build, this means which parts of your DAG should be compiled, run, and tested.&lt;/p&gt;
&lt;p&gt;The syntax is:&lt;/p&gt;
&lt;p&gt;dbt build --select [selector]&lt;/p&gt;
&lt;p&gt;List equivalent:&lt;/p&gt;
&lt;p&gt;dbt list --select [selector]&lt;/p&gt;
&lt;p&gt;You can also exclude nodes:&lt;/p&gt;
&lt;p&gt;dbt build --select [selector] --exclude [other-selector]&lt;/p&gt;
&lt;p&gt;List equivalent:&lt;/p&gt;
&lt;p&gt;dbt list--select [selector] --exclude [other-selector]&lt;/p&gt;
&lt;p&gt;Let’s walk through the common ways to use selectors.&lt;/p&gt;
&lt;h2&gt;1. Build a Single Model&lt;/h2&gt;
&lt;p&gt;To build just one model:&lt;/p&gt;
&lt;p&gt;dbt build --select my_model&lt;/p&gt;
&lt;p&gt;This runs the model my_model, along with any relevant tests and post-hook actions.&lt;/p&gt;
&lt;h2&gt;2. Build a Model and Its Dependencies&lt;/h2&gt;
&lt;p&gt;To build a model and all of the upstream models it depends on:&lt;/p&gt;
&lt;p&gt;dbt build --select +my_model&lt;/p&gt;
&lt;p&gt;The + before the model means “include all parents”.&lt;/p&gt;
&lt;p&gt;To build a model and all of its downstream dependents:&lt;/p&gt;
&lt;p&gt;dbt build --select my_model+&lt;/p&gt;
&lt;p&gt;Want to include both upstream and downstream? Use:&lt;/p&gt;
&lt;p&gt;dbt build --select +my_model+&lt;/p&gt;
&lt;h2&gt;3. Build a Whole Directory or Path&lt;/h2&gt;
&lt;p&gt;You can select all models in a specific folder:&lt;/p&gt;
&lt;p&gt;dbt build --select path:models/staging/&lt;/p&gt;
&lt;p&gt;This runs everything in models/staging/, recursively.&lt;/p&gt;
&lt;h2&gt;4. Use Tags for Logical Grouping&lt;/h2&gt;
&lt;p&gt;You can assign tags to models in your .yml or model files. Then use:&lt;/p&gt;
&lt;p&gt;dbt build --select tag:nightly&lt;/p&gt;
&lt;p&gt;This is perfect for grouping models by schedule or theme.&lt;/p&gt;
&lt;h2&gt;5. Build by Resource Type&lt;/h2&gt;
&lt;p&gt;Want to build only tests or snapshots? Use:&lt;/p&gt;
&lt;p&gt;dbt build --select resource_type:data_test dbt build --select resource_type:snapshot&lt;/p&gt;
&lt;p&gt;This is useful if you want to isolate part of the pipeline for debugging or CI.&lt;/p&gt;
&lt;h2&gt;6. Exclude Specific Models&lt;/h2&gt;
&lt;p&gt;To build everything except certain models:&lt;/p&gt;
&lt;p&gt;dbt build --select tag:nightly --exclude my_model&lt;/p&gt;
&lt;p&gt;This is great for skipping a known-broken model or one that’s not relevant to your current work.&lt;/p&gt;
&lt;h2&gt;7. Combine Multiple Selectors&lt;/h2&gt;
&lt;p&gt;You can combine selectors using commas (,), which means OR:&lt;/p&gt;
&lt;p&gt;dbt build --select model_a,model_b&lt;/p&gt;
&lt;p&gt;Use spaces for AND:&lt;/p&gt;
&lt;p&gt;dbt build --select tag:nightly path:models/marts/&lt;/p&gt;
&lt;p&gt;This will select models that match both the tag and the path.&lt;/p&gt;
&lt;p&gt;You can also nest selectors for more control:&lt;/p&gt;
&lt;p&gt;dbt build --select +tag:nightly+&lt;/p&gt;
&lt;h2&gt;8. Special Selector: state:&lt;/h2&gt;
&lt;p&gt;When using dbt in a CI/CD pipeline, you can build only what has changed:&lt;/p&gt;
&lt;p&gt;dbt build --select state:modified --state path/to/artifacts&lt;/p&gt;
&lt;p&gt;This builds only models that have changed (and their children) since the last run.&lt;/p&gt;
&lt;h2&gt;9. Build All Upstream Dependencies with @&lt;/h2&gt;
&lt;p&gt;The @ selector in dbt is a powerful tool for building a model, all its downstream nodes (dependents), and all dependencies (ancestors) required by those downstream nodes. This ensures that every model needed to build any node downstream of the selected model is also refreshed.&lt;/p&gt;
&lt;p&gt;dbt build --select @my_model&lt;/p&gt;
&lt;h2&gt;Usecase&lt;/h2&gt;
&lt;p&gt;For example, your dashboard relies on 3 models (report_a, report_b, and report_c), and you&amp;#39;ve updated report_a. To ensure proper integration with the other two reports and their dependencies:&lt;/p&gt;
&lt;p&gt;[stg_orders] → [report_b]&lt;/p&gt;
&lt;p&gt;↘&lt;/p&gt;
&lt;p&gt;[stg_customers] → [report_a] → [dashboard]&lt;/p&gt;
&lt;p&gt;↗&lt;/p&gt;
&lt;p&gt;[stg_products] → [report_c]&lt;/p&gt;
&lt;p&gt;dbt build --select @report_a&lt;/p&gt;
&lt;p&gt;The command above will build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;report_a&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upstream models report_b, report_c, stg_customers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ancestors of upstream models stg_orders and stg_products.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whereas the following command:&lt;/p&gt;
&lt;p&gt;dbt build --select +report_a&lt;/p&gt;
&lt;p&gt;Will build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;report_a&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;stg_customers&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pro Tip&lt;/h2&gt;
&lt;p&gt;When testing a new dbt build command, use dbt list or dbt ls instead. It shows which models would be affected, without running them. Example: dbt list --select my_model &amp;gt; build_1.txt This saves the output to a file, so you can easily compare changes across different selector versions.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Selectors are essential for managing large dbt projects efficiently. Whether you’re debugging, optimizing CI pipelines, or running targeted builds, understanding how to use --select and --exclude gives you speed and precision.&lt;/p&gt;
&lt;p&gt;Start small, test a single model and its dependencies. Then build up with tags, paths, and more. With a little practice, you’ll be navigating complex DAGs like a pro.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>Snowflake external stage limit exceeded </title><link>https://www.digitalhive.be/post/snowflake-external-stage-limit-exceeded/</link><guid isPermaLink="true">https://www.digitalhive.be/post/snowflake-external-stage-limit-exceeded/</guid><description>When querying an external stage you should be aware of the following limitations. You may encounter an error 001057, which relates to exceeding file descriptor limits.</description><pubDate>Fri, 04 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;When querying an external stage you should be aware of the following limitations. You may encounter an error 001057, which relates to exceeding file descriptor limits. This error can occur during operations that involve listing or processing a large number of files in a stage. Let&amp;#39;s dive into the details of this error and explore strategies to address it effectively.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_df9486a75be3420d975db288bb8f9cf2.jpg&quot; alt=&quot;Snowflake external stage limit exceeded&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Error Details&lt;/h2&gt;
&lt;p&gt;001057 (0A000): Total size (&amp;gt;=1,073,741,912 bytes) for the list of file descriptors returned from the stage exceeded limit (1,073,741,824 bytes); Number of file descriptors returned is &amp;gt;=3,490,462. Please use a prefix in the stage location or pattern option to reduce the number of files.&lt;/p&gt;
&lt;p&gt;The Total size here refers to the size of the file descriptors. The file descriptors are references to the selected files in the staging area. When querying or loading data, Snowflake accesses files from a staging area, which is a temporary storage location.&lt;/p&gt;
&lt;p&gt;If the number of files or their combined metadata exceeds Snowflake’s threshold (in this case, 1GB or ~1,073,741,824 bytes), the database cannot handle the volume efficiently, resulting in this error. This typically occurs with large or unoptimized datasets, especially when files accumulate over time or when a generic query pattern (like a wildcard) retrieves all files in the stage.&lt;/p&gt;
&lt;p&gt;The error can be thrown by any of the operations listed in the table below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_5498b5402aa042cab380c49e2adec8d0.png&quot; alt=&quot;The error can be thrown by any of the operations listed in this table.&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Strategies to Avoid the Error&lt;/h2&gt;
&lt;p&gt;This limitation can be avoided by making sure you do not process more metadata than the limit in file descriptors. There are several approaches that can be implemented.&lt;/p&gt;
&lt;h3&gt;1. Minimize metadata by cleaning the stage.&lt;/h3&gt;
&lt;p&gt;Apply a snowflake PURGE or when using S3 buckets as externals stage use a lambda function to remove the data that is not required from the stage. An example of how the PURGE command can be used is shown below.&lt;/p&gt;
&lt;p&gt;COPY INTO my_table&lt;/p&gt;
&lt;p&gt;FROM @my_stage&lt;/p&gt;
&lt;p&gt;PURGE = TRUE;&lt;/p&gt;
&lt;h3&gt;2. Querry only the required part of the stage.&lt;/h3&gt;
&lt;p&gt;Use the directory name, or part of the directory name in the stage to narrow down on the data you want to query. @stage_name/directory&lt;/p&gt;
&lt;p&gt;For instance if you have the following folder structure on your stage:&lt;/p&gt;
&lt;p&gt;my_stage/
├── a_dir1/
│ ├── sub_dir1/
│ └── sub_dir2/
├── b_dir2/
├── sub_dir1/
└── sub_dir2/&lt;/p&gt;
&lt;p&gt;Using the query below will only select data from directories that start with &amp;#39;b_&amp;#39; in my_stage.&lt;/p&gt;
&lt;p&gt;SELECT *
FROM &amp;#39;@my_stage/b_ &amp;#39;&lt;/p&gt;
&lt;h3&gt;3. Use Patterns to Filter Files&lt;/h3&gt;
&lt;p&gt;In Snowflake, stages can contain many files, and sometimes the list of files may also include directories which do not contain data or data that we do not want to query. These directories can cause errors if not handled properly. The pattern option allows you to specify a regular expression pattern (enclosed in single quotes) that matches the file names or file paths. The files whose names or paths match the regular expression are the ones included in the query result. More specifically the pattern is applied before any data processing takes place, and it limits which files are included in the query.&lt;/p&gt;
&lt;p&gt;For example, the pattern used in the select statement below will only query the files that have the string “data” in their file name and end with .csv.&lt;/p&gt;
&lt;p&gt;SELECT *
FROM @my_stage
(PATTERN =&amp;gt; &amp;#39;.&lt;em&gt;data.&lt;/em&gt;.csv$&amp;#39;);&lt;/p&gt;
&lt;h2&gt;Quick fix&lt;/h2&gt;
&lt;p&gt;If you are in a situation where the data that you need to query exceeds the file descriptors size limit a quick solution can be to loop over the query using a list of strings that represent the first several characters of the directory names that you want to query. This way you will query the stage in smaller chunks. You can use that same approach with the PATTERN. Keep in mind that this should not be a permanent solution.&lt;/p&gt;
&lt;h3&gt;1. Generate a List of Prefixes or Patterns&lt;/h3&gt;
&lt;p&gt;Create a list of strings representing directory names, prefixes, or file patterns.&lt;/p&gt;
&lt;h3&gt;2. Loop Through the List&lt;/h3&gt;
&lt;p&gt;Query the stage multiple times, each time focusing on a specific prefix or pattern. The example below uses letters but you can use this with any prefix of your directory names.&lt;/p&gt;
&lt;p&gt;WITH prefixes AS (
SELECT column1 AS prefix
FROM VALUES (&amp;#39;a&amp;#39;, &amp;#39;b&amp;#39;, &amp;#39;c&amp;#39;, &amp;#39;d&amp;#39;, &amp;#39;e&amp;#39;, &amp;#39;f&amp;#39;, &amp;#39;g&amp;#39;, &amp;#39;h&amp;#39;, &amp;#39;i&amp;#39;, &amp;#39;j&amp;#39;, &amp;#39;k&amp;#39;, &amp;#39;l&amp;#39;, &amp;#39;m&amp;#39;, &amp;#39;n&amp;#39;, &amp;#39;o&amp;#39;, &amp;#39;p&amp;#39;, &amp;#39;q&amp;#39;, &amp;#39;r&amp;#39;, &amp;#39;s&amp;#39;, &amp;#39;t&amp;#39;, &amp;#39;u&amp;#39;, &amp;#39;v&amp;#39;, &amp;#39;w&amp;#39;, &amp;#39;x&amp;#39;, &amp;#39;y&amp;#39;, &amp;#39;z&amp;#39;)
)
SELECT *
FROM @my_stage
WHERE directory_name ILIKE prefix || &amp;#39;%&amp;#39;;&lt;/p&gt;
&lt;p&gt;This fix reduces the file descriptors processed per query, mitigating the snowflake error. However, this will increase the runtime due to the multiple queries that are ran. It is important to make sure the correct prefixes and patterns are generated and used.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Error 001057 reflects Snowflake’s limits on file descriptors during stage queries. To resolve this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep stages clean using PURGE or lifecycle policies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use directories and patterns to narrow queries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Split large queries into smaller chunks.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information you can consult the snowflake documentation on this topic :&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.snowflake.com/en/user-guide/querying-stage&quot;&gt;&lt;em&gt;Querying Data in Staged Files | Snowflake Documentation&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>From Synapse to Fabric: How Glowi Modernized Its Data Architecture</title><link>https://www.digitalhive.be/post/glowi-data-architecture/</link><guid isPermaLink="true">https://www.digitalhive.be/post/glowi-data-architecture/</guid><description>Glowi explored migrating from Microsoft Synapse to Microsoft Fabric, the new data platform by Microsoft. This should be able to replace their older synapse system. Together with Glowi, we created the basis of their Fabric infrastructure, ensuring that they are future-proof and ready to get started with this new platform. We used our expertise to make sure the setup and infrastructure fits the needs and expectations of Glowi.</description><pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Client Introduction&lt;/h2&gt;
&lt;p&gt;Glowi is a multi-brand organization, including Het Poetsbureau, which operates 75 offices across Flanders and has over 10K domestic helpers employed. They mostly have data about customers and employees. It is mainly used to create the schedules, matching the right customers to the right employees. It is also used as an input for their recruiting and marketing teams.&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;The current data setup is built using Microsoft synapse on azure infrastructure.&lt;/p&gt;
&lt;p&gt;It is focused on being cost effective and fit for purpose. Tailored to the size and requirements of Glowi. To stay up to date with new technologies, they wanted to investigate the possibility of &lt;strong&gt;moving to Microsoft Fabric&lt;/strong&gt; (&lt;a href=&quot;https://learn.microsoft.com/en-us/fabric/get-started/microsoft-fabric-overview&quot;&gt;&lt;em&gt;What is Microsoft Fabric - Microsoft Fabric | Microsoft Learn&lt;/em&gt;&lt;/a&gt;), the new data platform by Microsoft. This should be able to replace their older synapse system.&lt;/p&gt;
&lt;p&gt;There are many reasons to move to Fabric. It is clear that the focus of Microsoft is on developing this platform, shifting away from synapse. This means all the new development and features will be added to Fabric. Furthermore, the platform will be closer integrated with PowerBI and machine learning use cases, ensuring that Glowi is both future-proof and &lt;strong&gt;ready for AI&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One of the main challenges here was &lt;strong&gt;cost&lt;/strong&gt;. The current system was very effective, and the team at Glowi managed to align hardware with the requirements of the data, keeping the costs very low. The question was if it would be possible to migrate to Fabric without significantly increasing costs. Both costs related to infrastructure but also costs related to licenses (both Fabric and PowerBI licenses).&lt;/p&gt;
&lt;p&gt;The other challenge was the &lt;strong&gt;infrastructure&lt;/strong&gt; behind setting up the new Fabric environment. Since Fabric is a new offering, no one at Glowi had deep knowledge of the platform. This means that they were unsure about how to implement it, and what the best way of doing things on the platform is. This goes from how to run jobs to best practices and limitations of the platform.&lt;/p&gt;
&lt;h2&gt;Scope&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A workshop around efficiently ingesting new data into the Fabric lakehouses&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Investigation around capacity and licenses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A POC of one month to do an initial onboarding and setup of the Fabric platform.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;**Cost analysis **&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To tackle the concerns around &lt;strong&gt;cost&lt;/strong&gt; we provided Glowi with an overview of the costs related to using Fabric and PowerBI. We also provided them with an overview of the costs, comparing Synapse and Fabric (part of this analysis can be found in &lt;a href=&quot;https://www.digitalhive.be/post/a-comparison-of-spark-pools-in-synapse-and-fabric&quot;&gt;&lt;em&gt;A comparison of Spark pools in Synapse and Fabric&lt;/em&gt;&lt;/a&gt;). The main result from this analysis is that is it highly preferred to use reserved capacity, since this comes at quite a discount. There are however also some limitations, since the reserved capacity is available 24/7, and if you are not using it, you are still paying for it. To identify the best capacity for their jobs, we suggested the use of &lt;strong&gt;pay-as-you-go&lt;/strong&gt; resources to identify the right size. Afterwards this capacity can then be reserved for a year or longer. It is also taken into consideration when designing the infrastructure, with runs over night and analysis during the day, to make sure the reserved capacity is fully used.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;POC: setup and infrastructure&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;During a one month POC, we set up the infrastructure of their new Fabric environment, and migrated a first data source to this new environment. This was done using a medallion architecture, making use of a lakehouse for each layer. Multiple ingestion flows were defined, with data coming in from api’s and azure databases. An example of this medallion architecture in fabric can be seen below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_cfa4829f90aa4b2ea447567e1dac69bf.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;As a part of the POC, we identified a few key flows in the current synapse workflows, and we reimplemented them in fabric. This allowed us to set up the way of working, using pyspark in notebooks, reusing shared logic, and allow orchestration through notebooks. This provides a clear starting point for future implementation of new data sources.&lt;/p&gt;
&lt;p&gt;We will now provide the details of some of the choices we made during this POC:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Implementation using **pyspark **and &lt;strong&gt;notebooks:&lt;/strong&gt; Moving away from the more ui-based workflows in spark, we decided to do all the ETL using pyspark and notebooks. This makes it a lot easier to test and standardize the way the ETL is done. It also allows for easier versioning and sharing of the code. A clear advantage of this was  ensuring all  data writes were done using a specific helper function, this allowed us to easily &lt;strong&gt;add logging to all flows&lt;/strong&gt; later on, &lt;strong&gt;using only a single line of code&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Medallion architecture with each layer in its own lakehouse&lt;/strong&gt;: Following this standard as advised by Microsoft, we made a lakehouse for the bronze, silver, and gold layer of the medallion architecture. This allows for a clear separation of data. Furthermore it makes it easier to set up different access rules and rights to the data. In each of these lakehouses we &lt;strong&gt;store the data in delta parquet&lt;/strong&gt;, which is perfect for &lt;strong&gt;distributed&lt;/strong&gt; access using pyspark. In the final layer, we suggest a setup of the data in a dimensional model, using facts and dimensions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Orchestration using notebooks:&lt;/strong&gt; while it is possible to create a workflow to run notebooks, for now the most efficient way is to use a notebook that references other notebooks. This means that for each layer we created an orchestration notebook, which firstly called the helper notebook with shared functions, and then in turned called the notebooks relevant to that layer, structured based on the data that was being processed. This means that if you need to find the details about some data, you can easily find it by searching for the concept in the right layer. (eg Employee, Customer …). It also makes it easy to find the &lt;strong&gt;shared logic&lt;/strong&gt;, since this is in a separate notebook.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To &lt;strong&gt;ingest&lt;/strong&gt; new data into the system, we defined three different methods. &lt;strong&gt;Firstly&lt;/strong&gt;, for the azure databases that allowed this, we set up &lt;strong&gt;mirroring&lt;/strong&gt; in Fabric. This ensures that the data from this database is automatically copied into the delta lake, without having any extra maintenance or setup. We can then setup a &lt;strong&gt;shortcut&lt;/strong&gt; to allow access to this data from the bronze lakehouse. &lt;strong&gt;Secondly&lt;/strong&gt;, for databases that are too small to allow mirroring, we designed a &lt;strong&gt;reusable notebook setup&lt;/strong&gt; that allows for &lt;strong&gt;incremental ingestion&lt;/strong&gt; of the data into the bronze lakehouse. Thirdly, for data coming from API sources, the same setup can be followed, creating a python notebook that accesses the api and loads it into the bronze lakehouse. This allows for API ingestion that fits perfectly into the tech stack and infrastructure, making it easy to be maintained.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Together with Glowi, we created the basis of their Fabric infrastructure, ensuring that they are future-proof and &lt;strong&gt;ready to get started with this new platform&lt;/strong&gt;. We used our expertise to make sure the setup and infrastructure fits the needs and expectations of Glowi.&lt;/p&gt;
&lt;p&gt;In a short period of time, we were able to not only &lt;strong&gt;design and document the setup&lt;/strong&gt;, but to also &lt;strong&gt;onboard a first data source into this system&lt;/strong&gt;, giving them a strong starting point for further development.&lt;/p&gt;
&lt;p&gt;When we started this project, Glowi mostly had questions about Fabric, now they have a clear idea of what the future will look like, and even better, they have a working proof of concept that can be used to judge the platform and make it their own.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>customer-cases-data</category></item><item><title>Accelerating Clinical Studies with AI</title><link>https://www.digitalhive.be/post/accelerating-clinical-studies-with-ai/</link><guid isPermaLink="true">https://www.digitalhive.be/post/accelerating-clinical-studies-with-ai/</guid><description>To stay ahead, pharmaceutical companies are turning to AI to streamline clinical study development.</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Accelerating Clinical Studies with AI by Digital Hive&lt;/p&gt;
&lt;h2&gt;Challenges&lt;/h2&gt;
&lt;p&gt;Pharmaceutical companies operate in a high-stakes environment where speed and accuracy are critical. The profitability of new products hinges on the patent-protected period, a narrow window before generic alternatives enter the market. However, clinical studies - essential for regulatory approval - consume valuable time, typically taking 18-24 months. Every delay shortens the exclusive revenue period, impacting profitability.&lt;/p&gt;
&lt;p&gt;To stay ahead, pharmaceutical companies are turning to AI to streamline clinical study development. While AI offers immense potential, its implementation comes with key challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Maintaining scientific integrity by ensuring AI-generated outputs are accurate and reliable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigating strict legal frameworks, especially concerning copyright-protected materials.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Providing intuitive review mechanisms to keep human experts in control.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensuring airtight security—no proprietary data can be exposed beyond the internal environment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;Digital Hive responded with &lt;strong&gt;Evidence CoPilot (ECP)&lt;/strong&gt;: a cutting-edge AI-powered application designed to transform clinical study development. A dedicated internal team of data scientists, guided by a product owner and project manager of Digital Hive, engineered ECP to accelerate workflows while ensuring compliance and security. The platform consists of four core components:&lt;/p&gt;
&lt;h3&gt;Literature Search&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An AI agent scans multiple platforms for the most relevant publications, providing researchers with instant insights.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Both open-access and licensed, copyright-protected materials are accessible, ensuring a comprehensive research base.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Articles are delivered in an organized format, ready for review and integration into subsequent study phases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Synopsis Generator&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AI rapidly summarizes selected articles, whether sourced through Literature Search or uploaded manually.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The concise, structured synopses enable faster decision-making and can be refined or exported as needed.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Systematic Literature Review (SLR)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users compile structured reports leveraging insights from previous searches and summaries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SLR serves as a foundation for study development, ensuring a robust, evidence-based approach.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Built-in review functionality guarantees that human expertise remains at the forefront.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Publication Development&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ECP automates the final study document’s creation using predefined templates, expediting the evidence generation process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI accelerates screening, analysis, summarization, and structured report generation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Researchers can efficiently transition from data collection to publication without compromising quality.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;After a year of development, &lt;strong&gt;ECP is now ready to be used&lt;/strong&gt;, delivering measurable impact for pharmaceutical companies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI-driven automated reviews&lt;/strong&gt; ensure quality control at every step.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced AI prompts&lt;/strong&gt; minimize errors, boosting the reliability of insights.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User-centric control&lt;/strong&gt; allows researchers to review, edit, and export results at any stage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enterprise-grade security&lt;/strong&gt; keeps all generated content private within a protected portal—no data is exposed online.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With ECP, Digital Hive has empowered pharmaceutical companies to &lt;strong&gt;fast-track clinical study preparation, maximize patent profitability&lt;/strong&gt;, and &lt;strong&gt;maintain full regulatory compliance&lt;/strong&gt;. By leveraging AI for efficiency, they can now focus on what truly matters: bringing life-saving innovations to market, faster and smarter.&lt;/p&gt;
&lt;p&gt;Interested how Digital Hive can help you implement AI-driven solutions tailored to your business needs? Get in touch today to start accelerate your work and stay ahead in an evolving market!&lt;/p&gt;
</content:encoded><category>ai-case</category><category>all-cases</category><category>crm-case</category><category>salesforce-cases</category></item><item><title>Transforming Digital Performance with Martech Optimization for Solar Assitance</title><link>https://www.digitalhive.be/post/solar-assistance-martech-optimization/</link><guid isPermaLink="true">https://www.digitalhive.be/post/solar-assistance-martech-optimization/</guid><description>By implementing a strategic Martech optimization plan, Solar Assistance successfully transformed its digital performance.</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;&lt;strong&gt;Transforming Digital Performance with Martech Optimization&lt;/strong&gt;&lt;/h2&gt;
&lt;h2&gt;Challenges&lt;/h2&gt;
&lt;p&gt;Solar Assistance is Belgium’s leading expert in technical assistance, maintenance, and troubleshooting for solar systems in the B2C sector. In B2B, the company specializes in Energy Management Systems (EMS), maintenance and monitoring of solar farms, and solar panel installations. The company wanted to take its marketing strategy to the next level. After a scan we saw the following opportunities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Achieve higher conversion rates&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increase interaction with customers&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimise Martech stack architecture&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;comprehensive digital marketing and Martech optimization roadmap&lt;/strong&gt; was drawn up to address these issues:&lt;/p&gt;
&lt;h3&gt;Website &amp;amp; Conversion rate Optimization&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Redesign the website with better UX and a simplified conversion funnel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improve CTAs (Call-To-Actions) and implement A/B testing to enhance lead capture.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate dynamic forms and chatbots for improved lead qualification.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Salesforce &amp;amp; Martech Integration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect Salesforce, the website, and ad platforms (Google Ads, Meta, LinkedIn) to create a unified data flow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement real-time lead tracking and automated lead nurturing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Develop custom dashboards for better marketing and sales alignment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Pay Per Click (PPC) Campaigns&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Improve targeting using first-party data from the integrated Martech stack.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize Google Ads and Meta campaigns for better return on investment (ROI) and lower cost per acquisition (CPA).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use lookalike and retargeting audiences to maximize lead conversion.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Content &amp;amp; SEO Strategy&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Develop SEO-driven content to improve organic search ranking.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create engaging blog posts, video content, and case studies to educate customers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improve social media engagement through a structured content calendar.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Data &amp;amp; Performance Framework&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Design and implement a structured Measurement Plan based on clear KPIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up Google Analytics, Google Tag Manager, and Salesforce tracking for end-to-end attribution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create automated performance reports to track campaign effectiveness and sales conversion rates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Digital Hive’s expertise in CRM integration, conversion rate optimization, and performance marketing played a key role in overcoming Solar Assistance’s challenges. With a robust Martech ecosystem in place, Solar Assistance will be ready for sustained growth, improved efficiency, and enhanced customer engagement in a competitive market.&lt;/p&gt;
</content:encoded><category>customer-cases-marketing</category><category>all-cases</category></item><item><title>Marketing Consultancy for Glowi</title><link>https://www.digitalhive.be/post/glowi/</link><guid isPermaLink="true">https://www.digitalhive.be/post/glowi/</guid><description>Glowi sought to enhance its marketing efforts across various brands, requiring versatile and hands-on support to manage numerous tasks.</description><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Marketing Consultancy for a Dynamic Business Landscape&lt;/h2&gt;
&lt;h3&gt;Client Introduction&lt;/h3&gt;
&lt;p&gt;Glowi is a multi-brand organization, including Het Poetsbureau, which operates 75 offices across Flanders. The company sought to enhance its marketing efforts across various brands, requiring versatile and hands-on support to manage numerous tasks efficiently.&lt;/p&gt;
&lt;h3&gt;Problem Statement&lt;/h3&gt;
&lt;p&gt;Glowi needed a marketing consultant who could coordinate marketing campaigns and internal projects across external partners, ensure consistent communication, and handle a broad spectrum of marketing tasks. The company required someone adaptable and capable of quickly shifting focus to meet the needs of a fast-paced and diverse business environment. Additionally, Glowi needed a partner capable of delivering both strategic insights and hands-on execution, with the agility to shift gears quickly in a fast-paced environment.&lt;/p&gt;
&lt;h3&gt;Approach&lt;/h3&gt;
&lt;p&gt;With a flexible marketing skillset, our consultant took on a variety of roles and responsibilities, tailoring the approach to meet Glowi’s dynamic needs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;h4&gt;Campaign and Event Coordination&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Playing a central role in coordinating campaigns, working with external partners to ensure flawless execution across multiple channels. From events to the display stickers at all 75 Het Poetsbureau offices, efforts were coordinated between Glowi and external partners for smooth execution.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;h4&gt;Internal Communication&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Maintaining a cohesive internal culture, our consultant leveraged platforms like SharePoint to keep employees informed about key projects and events, ensuring all employees were informed.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;h4&gt;Gadgets, Print, and Gifts Coordination&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Coordinating the production and distribution of promotional materials, including T-shirts, flyers, brochures, pancartes, etc. Additionally, overseeing the selection and delivery of gifts for employees during key occasions such as Easter and year-end celebrations, further solidifying Glowi’s employee engagement initiatives.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;h4&gt;Email Marketing and Automation&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Utilizing ActiveCampaign and Flexmail to design and execute email marketing campaigns. Also implementing marketing automation flows, streamlining communication with employees and enhancing engagement.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;h4&gt;Community and Social Media Management&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Managing Glowi’s community presence, ensuring responsive communication and engaging content. Also providing support for social media content creation, developing posts and videos that showcased the company’s culture and diverse services.&lt;/p&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;&lt;h4&gt;Design and Creative Support&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Beyond digital efforts, contributing to offline marketing by designing materials such as banners, brochures, and other print materials. The ability to shift between online and offline marketing helped ensure a consistent and cohesive brand presence across all touchpoints.&lt;/p&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;&lt;h4&gt;Collaboration with BluePanda&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Coordinating efforts with BluePanda, a sister company of Digital Hive located in Portugal, which provided nearshoring solutions for Glowi. BluePanda worked on an SEO/SEA track for Glowi Facilities, and our consultant played a key role in ensuring smooth communication and alignment between Glowi and BluePanda. This collaboration helped enhance Glowi’s online presence through targeted SEO and SEA campaigns.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improved Campaign Execution&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The seamless coordination of the upcoming campaign ensures high visibility across Glowi’s extensive footprint, particularly for Het Poetsbureau.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Increased Employee Engagement&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Internal communications and thoughtfully coordinated gifts boosted employee morale and engagement, reinforcing Glowi’s strong company culture.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Efficient Marketing Operations&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By implementing automation flows and effectively managing the marketing inbox, our consultant helped streamline Glowi’s marketing efforts, making communication more efficient and targeted.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agile and Flexible Support&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A hands-on and adaptable approach allowed our consultant to meet evolving business needs quickly, contributing to the smooth execution of both large-scale campaigns and day-to-day marketing activities.&lt;/p&gt;
</content:encoded><category>customer-cases-marketing</category><category>all-cases</category></item><item><title>The road to POC app building with Streamlit </title><link>https://www.digitalhive.be/post/the-road-to-poc-app-building-with-streamlit/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-road-to-poc-app-building-with-streamlit/</guid><description>A Python-based tool like Streamlit can be invaluable for quickly building, deploying, and sharing a POC.</description><pubDate>Fri, 28 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;**When developing a proof-of-concept (POC) application, the aim is to rapidly validate the core logic, assumptions, and functionalities of an idea before committing to full-scale development. Here, a Python-based tool like Streamlit can be invaluable for quickly building, deploying, and sharing a POC. In this blog, we explore the benefits and limitations of using it to build POC apps. **&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_fbf3586d426543eab2795c823e24d993.jpg&quot; alt=&quot;Streamlit POC app&quot;&gt;&lt;/p&gt;
&lt;p&gt;Streamlit POC app&lt;/p&gt;
&lt;h2&gt;What is Streamlit?&lt;/h2&gt;
&lt;p&gt;Streamlit is an open-source framework designed to simplify the creation of interactive, data-driven web applications. Originally launched in late 2019 by Adrien Treuille, Thiago Teixeira, and Amanda Kelly, it was built to empower data scientists and engineers to create and share applications without needing extensive web development expertise. In March 2022, Snowflake, the data cloud company, acquired Streamlit, enhancing its enterprise capabilities while maintaining its core mission to simplify app development for data professionals.&lt;/p&gt;
&lt;h2&gt;Why choose Streamlit for POC applications?&lt;/h2&gt;
&lt;p&gt;As a Python-only solution, Streamlit allows developers to quickly transform scripts into fully interactive web apps, with minimal code and without requiring front-end development skills. This approach enables you to focus on building interfaces using buttons, sliders, and text input boxes, allowing attention to stay on application logic instead of UI complexity.&lt;/p&gt;
&lt;h3&gt;Automatic UI generation&lt;/h3&gt;
&lt;p&gt;Streamlit’s auto-generated UI feature saves time by creating a web app interface directly from Python scripts, eliminating the need for HTML, CSS, or JavaScript. Simply running the code builds a user-friendly app where users can interact with your logic and data immediately.&lt;/p&gt;
&lt;h3&gt;Prebuilt widgets&lt;/h3&gt;
&lt;p&gt;For interactivity, Streamlit offers a wide range of widgets, from sliders and buttons to date pickers and file uploaders, making it easy to add input and control options. The widget library is continually growing, giving developers more flexibility in user input choices.&lt;/p&gt;
&lt;h3&gt;Instant code re-runs&lt;/h3&gt;
&lt;p&gt;The &amp;quot;hot-reloading&amp;quot; feature offers a smooth, real-time feedback loop while developing, which is particularly useful for POCs. This way, developers can see the effects of code edits or parameter adjustments right away, making testing quick and efficient.&lt;/p&gt;
&lt;h3&gt;Simple deployment and sharing&lt;/h3&gt;
&lt;p&gt;One-click deployment through Streamlit Cloud allows for easy sharing of applications, ideal for getting POC feedback quickly. There’s no need to set up complex web infrastructure, so you can deploy and share your app with collaborators or stakeholders via a single link.&lt;/p&gt;
&lt;h2&gt;What should I keep in mind?&lt;/h2&gt;
&lt;p&gt;While Streamlit offers many benefits for POC development, it’s not without its limitations. As development progresses, consider the following factors:&lt;/p&gt;
&lt;h3&gt;Performance constraints with large data or heavy computation&lt;/h3&gt;
&lt;p&gt;Due to its single-threaded nature, Streamlit may struggle with large datasets or computation-heavy tasks. For POCs involving extensive data processing, caching can help optimize performance, and for even heavier computations, offloading tasks to a separate backend might be necessary.&lt;/p&gt;
&lt;h3&gt;Customization limits&lt;/h3&gt;
&lt;p&gt;As a project scales, you might encounter limitations when customizing layouts, styling, or advanced UI elements. While custom components can be integrated, this may require front-end expertise and reduce the initial simplicity that makes this framework so appealing for POCs.&lt;/p&gt;
&lt;h3&gt;Deployment considerations&lt;/h3&gt;
&lt;p&gt;Streamlit Cloud is great for rapid deployment, though it requires your code to be hosted on GitHub, which may not align with every organization’s policies. Additionally, Streamlit Cloud is designed for small-scale deployment, so high-traffic or multi-user scenarios may require deploying on other platforms like Heroku, AWS, or a Dockerized environment for greater flexibility.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Streamlit’s ease of use, fast development, and interactivity make it an excellent choice for testing and validating application logic in POCs. Its native support for data visualization and simple deployment options make it especially valuable for early-stage prototypes. However, limitations in scalability, customization, and performance mean it’s best suited for small to medium-sized projects. For POCs that need to grow into production applications or require complex interactions, transitioning to a more versatile framework may eventually be necessary.&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>The Path to SnowPro Core Certification </title><link>https://www.digitalhive.be/post/the-path-to-snowpro-core-certification/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-path-to-snowpro-core-certification/</guid><description>After getting certified for SnowPro Core, we want to share the journey one of our data consultants took to pass this certification and help others learn Snowflake.</description><pubDate>Fri, 31 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Snowflake is a popular data lake/warehouse. It offers many different tools that data engineers can utilize for their data pipelines. As a data engineer that is just starting out in this world, Snowflake is a good and relatively simple platform to learn. It is great to get started and going for the SnowPro Core certification helps you understand many different concepts within the data engineering world, with a focus on Snowflake of course. Additionally, some of these concepts can be applied to other data platforms as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This certification and the learning materials provided by Snowflake give you a good baseline for the data engineering world. In this blog, we will go over my journey and all the materials that I utilized to achieve my SnowPro Core Certification, with the hope to inspire other people to do the same. Note that you do not need to follow this journey step by step, I encourage you to utilize the resources listed here and make your own journey to SnowPro!&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;The certification&lt;/h2&gt;
&lt;p&gt;On the Snowflake website, they provide an overview, exam breakdown and domain breakdown of the SnowPro Core Certification at the following url: &lt;a href=&quot;https://learn.snowflake.com/en/certifications/snowpro-core/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/certifications/snowpro-core/&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will not go into much detail about this information. However, it is still important to take a close look at this, so you know the practical information about the exam and the scoring weights of each domain. Then you know which domains are more important than others.&lt;/p&gt;
&lt;p&gt;Additionally, on this website in the right column there are some links to (free) courses that are interesting learning materials: Exam study guide, getting started tutorials, hands-on courses and the level up series. I will now discuss these in more detail.&lt;/p&gt;
&lt;h3&gt;Exam study guide&lt;/h3&gt;
&lt;p&gt;This guide provides an overview of everything related to the exam. Most importantly, it lists a lot of terms and concepts, with the relevant study resources, for each domain. Go through this list and take note of the items you know and do not know. This will make it easier later to focus on the concepts that you do not know yet. We will come back to the study resources later.&lt;/p&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
&lt;p&gt;There is a very small getting started workshop that explains some of the basic concepts of Snowflake, with demo code, that can be completed in about an hour or two. Parts of this course are listed in the exam study guide. So, for completion I list it here as well: &lt;a href=&quot;https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html&quot;&gt;&lt;em&gt;https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recommend completing the steps in the hands-on essentials courses on how to create a trial, then you can use it for both. However, I think that the hands-on essentials course is a better place to get started, as those courses explain the relevant concepts in more detail.&lt;/p&gt;
&lt;h3&gt;Hands-on Essentials&lt;/h3&gt;
&lt;p&gt;For myself, I know that I learn the most from practical experience. That is why I decided to start with the Hands-on Essentials courses: &lt;a href=&quot;https://learn.snowflake.com/en/pages/hands-on-essentials-track/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/pages/hands-on-essentials-track/&lt;/em&gt;&lt;/a&gt; . These are divided into 5 different parts and for each part you can achieve a badge on Accredible, which you can then show off to your friends and/or colleagues.&lt;/p&gt;
&lt;p&gt;These courses are built around a real-world story, and all require you to get your hands dirty. You need to create a (specific) Snowflake trial to complete this course. Snowflake provides a testing suite, called DORA, that grades all your tasks/assignments. DORA will determine whether you get your badge or not. Most tasks you must complete are simple, with easy to follow and well explained ideas and instructions. However, some tasks require you to think and implement some concepts for yourself. From this, you can learn a lot!&lt;/p&gt;
&lt;h3&gt;Level up track&lt;/h3&gt;
&lt;p&gt;Now that we have completed the hands-on essentials courses and achieved our fancy new badges, it is time to dive into the theory of Snowflake. These level-up courses, available at the following url: &lt;a href=&quot;https://learn.snowflake.com/en/pages/level-up-track/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/pages/level-up-track/&lt;/em&gt;&lt;/a&gt;, provide an excellent overview of almost every component required to pass the SnowPro Core certification exam. It requires a lot of reading in the documentation, but this is well worth it as you get a lot of information from this! Study this documentation in detail, as questions can arise from everything on these pages. Including specific permission names, commands, syntax... These level up courses are also listed as a resource in the exam study guide.&lt;/p&gt;
&lt;h2&gt;Exam preparation&lt;/h2&gt;
&lt;p&gt;Once you have completed these courses and read through the documentation, it is time to test your knowledge and (potentially) fill in the gaps. There are several ways to do this, below I will list the ones that I used on my journey to certification, in addition to the exam study guide mentioned above.&lt;/p&gt;
&lt;h3&gt;SnowPro Core Certification On-Demand Preparation Course&lt;/h3&gt;
&lt;p&gt;This (paid) course, offered by Snowflake, is meant for last-minute preparation and provides a summary of all knowledge required for the exam. There are a significant number of questions in this course that can be used to test yourself. If you do not know the answer to a question, the relevant information is always listed on the previous pages in the course. This course really gives you a boost in both knowledge and confidence for the exam!&lt;/p&gt;
&lt;h3&gt;Online exam questions&lt;/h3&gt;
&lt;p&gt;There are many examples of exam questions available online. Some are paid; some are free. Snowflake provides a paid practice exam with 40 questions (for reference: the real exam is 100 questions): &lt;a href=&quot;https://learn.snowflake.com/en/certifications/snowpro-practice-exams/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/certifications/snowpro-practice-exams/&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I personally did not use the Snowflake practice exam, instead I utilized the ExamTopics exam questions available at &lt;a href=&quot;https://www.examtopics.com/exams/snowflake/snowpro-core/view/&quot;&gt;&lt;em&gt;https://www.examtopics.com/exams/snowflake/snowpro-core/view/&lt;/em&gt;&lt;/a&gt;. This is a community driven list of exam questions that were asked on previous exams. At the time of writing, about 300 questions are available for free, the rest is paid. People can vote on the correct answer for each question; in most cases, the indicated answers seem to be correct. However, there are some drawbacks: not all questions are updated with the latest answer as Snowflake is constantly updated causing some things to change. Additionally, some questions are configured wrong. For example: a question asks to indicate the 3 best solutions, but the suggested “correct” answer only selects two. If you ever doubt an answer, there is a community discussion section where people list a specific page of the documentation with the correct answer: thank you community! While this is not perfect, I found this to be extremely helpful as you get a very good idea of the kind of questions that are on the real exam, especially when combined with the on-demand preparation course.&lt;/p&gt;
&lt;h2&gt;Final words of encouragement&lt;/h2&gt;
&lt;p&gt;Once you have completed all these tutorials, courses and practice questions, you should be able to pass the certification exam for SnowPro Core. It was still a challenge on the exam itself, but that makes it all the more rewarding once you pass!&lt;/p&gt;
&lt;p&gt;All the resources I mentioned are listed again, for your convenience 😉:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SnowPro Core: &lt;a href=&quot;https://learn.snowflake.com/en/certifications/snowpro-core/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/certifications/snowpro-core/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snowflake getting started: &lt;a href=&quot;https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html&quot;&gt;&lt;em&gt;https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hands-on Essentials courses: &lt;a href=&quot;https://learn.snowflake.com/en/pages/hands-on-essentials-track/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/pages/hands-on-essentials-track/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Level up track: &lt;a href=&quot;https://learn.snowflake.com/en/pages/level-up-track/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/pages/level-up-track/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snowflake practice exam: &lt;a href=&quot;https://learn.snowflake.com/en/certifications/snowpro-practice-exams/&quot;&gt;&lt;em&gt;https://learn.snowflake.com/en/certifications/snowpro-practice-exams/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ExamTopics example questions: &lt;a href=&quot;https://www.examtopics.com/exams/snowflake/snowpro-core/view/&quot;&gt;&lt;em&gt;https://www.examtopics.com/exams/snowflake/snowpro-core/view/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Best of luck! And remember that if you need Snowflake expertise; do not hesitate to contact us for one of the data consultants at Digital Hive!&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>The Tipping Point for Life Sciences: Embracing the Digital Revolution </title><link>https://www.digitalhive.be/post/the-tipping-point-for-life-sciences-embracing-the-digital-revolution/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-tipping-point-for-life-sciences-embracing-the-digital-revolution/</guid><description>The life sciences industry is ahead of a groundbreaking transformation where technology, data, and connectivity come together to enhance patient outcomes, streamline care delivery, and empower healthcare professionals (HCPs). This paradigm shift was one of the focus points in the Veeva Commercial Summit 2024, where life sciences industry leaders explored how recent innovations are going to be revolutionizing the industry. Embracing the digital revolution.</description><pubDate>Thu, 16 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The life sciences industry is ahead of a groundbreaking transformation where technology, data, and connectivity come together to enhance patient outcomes, streamline care delivery, and empower healthcare professionals (HCPs). This paradigm shift was one of the focus points in the Veeva Commercial Summit 2024, where life sciences industry leaders explored how recent innovations are going to be revolutionizing the industry.&lt;/p&gt;
&lt;h2&gt;Understanding Medical 2.0&lt;/h2&gt;
&lt;p&gt;Medical 2.0 represents the future of healthcare - a digitally connected, data-driven, and patient-centric ecosystem. By leveraging AI in healthcare, real-world evidence (RWE), and cloud-based platforms, this paradigm shift is paving the way for personalized care, smarter decision-making, and improved outcomes for both HCPs and patients.&lt;/p&gt;
&lt;h2&gt;Key Features for the Future of Life Sciences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Digital Collaboration&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For years there has been an emphasis on seamless collaboration between teams using digital tools. Platforms like Veeva Vault CRM and Salesforce Life Sciences Cloud enable a unified approach, integrating real-time data from clinical trials, patient outcomes, and scientific research to provide HCPs with a single source of truth.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data-Driven Insights&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Access to RWD and advanced analytics can empower organizations to tailor their digital strategies. By understanding patient behaviors, treatment adherence, and HCP preferences, companies can design personalized interventions that drive better engagement and more informed decision-making.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;AI-Driven Solutions&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Artificial Intelligence will be the core of Medical 2.0, offering tools that will transform how healthcare is delivered. From virtual assistants that streamline medical inquiries to predictive algorithms that forecast patient needs, or next best suggested actions for sales reps to take. AI will be enabling smarter and more productive systems within the industry.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Patient-Centric Care&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The shift towards personalisation is another cornerstone of the future. By leveraging genomic data and patient-specific information, HCPs can deliver treatments tailored to individual needs, ensuring higher efficacy, reduced side effects, and better outcomes.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;Integrated Omnichannel Engagement&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There will be an increasing need to facilitates omnichannel engagement, ensuring that HCPs and patients receive consistent, valuable information across platforms—be it virtual consultations, in-person visits, or digital content.&lt;/p&gt;
&lt;h2&gt;The Impact on the Pharmaceutical Industry&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Empowering Medical Affairs Teams&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Medical affairs teams will be increasingly leveraging tools to align scientific communication with real-world evidence. This alignment ensures that HCPs receive timely, accurate, and actionable insights to improve patient care.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Redefining Field Engagement&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tools like pre-call planning dashboards and voice-enabled CRM assistants will transform field teams into strategic partners. This shift emphasizes the importance of AI in pharma sales and how digital tools can improve HCP engagement and collaboration.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Supporting Continuous Learning&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Continuous Medical Education (CME) is evolving. Digital platforms offer personalized, on-demand learning modules that keep HCPs updated on the latest advancements in medicine and patient care strategies.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Driving Better Outcomes with Real-Time Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By integrating real-time clinical data, pharma companies can respond swiftly to emerging trends, adjusting their strategies to meet the dynamic needs of HCPs and patients alike.&lt;/p&gt;
&lt;h2&gt;Addressing the Challenges of Digital Transformation in Pharma&lt;/h2&gt;
&lt;p&gt;While the future holds immense promises, the journey to adoption is not without its hurdles. Some challenges that we see include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Integration:&lt;/strong&gt;  Connecting and integrating diverse data sources is vital for a seamless flow of information across systems and departments. This enables organizations to better understand patient needs, market trends, and treatment outcomes, fostering innovation and personalized care.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Change Management:&lt;/strong&gt; Adopting new technologies requires helping teams adapt to new workflows through training and effective communication. Overcoming resistance and fostering a culture of innovation is critical to success.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regulatory Compliance:&lt;/strong&gt; Organizations must navigate complex regulations while leveraging these innovative tools. Balancing compliance with innovation demands attention to legal, security, and privacy requirements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Allocation:&lt;/strong&gt; Investments in technology must be balanced with other organizational priorities. Allocating funds, time, and personnel strategically ensures long-term value and successful implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To overcome these challenges, companies must adopt a phased approach to implementation, focusing on incremental wins that build momentum and demonstrate value. Many of the abovementioned activities are often underestimated or overlooked. Digital Hive has the experience to tackle these transformations and support pharma companies with a clear implementation strategy.&lt;/p&gt;
&lt;h2&gt;The Future of Life Sciences&lt;/h2&gt;
&lt;p&gt;The impact of the changes that will come within the pharma industry beyond technological innovation - it’s about creating a more human-centric healthcare experience. By combining cutting-edge tools with a focus on empathy and collaboration, we can empower HCPs to focus on what truly matters: improving the lives of their patients.&lt;/p&gt;
&lt;p&gt;As the industry embraces the future of Life Sciences, the question isn’t whether to adopt but how to adopt effectively. Companies must prioritize strategies that align technology with their broader mission and values.&lt;/p&gt;
&lt;p&gt;**At Digital Hive we are very much looking forward to a new and exciting era of innovation, where systems are more digitally connected, data-driven, and patient-centric to drive better outcomes. If you&amp;#39;re ready to embrace this exciting transformation, contact us today for an introduction and a complimentary discovery workshop. Together, we can help you navigate the future of life sciences with industry experience and clarity!  **&lt;/p&gt;
</content:encoded><category>crm-post</category><category>blog</category></item><item><title>The path to the dbt Developer Certification </title><link>https://www.digitalhive.be/post/the-path-to-the-dbt-developer-certification/</link><guid isPermaLink="true">https://www.digitalhive.be/post/the-path-to-the-dbt-developer-certification/</guid><description>Getting certified with dbt will test your knowledge of the framework. Read this blog for some tips and guidance to make sure you are ready.</description><pubDate>Fri, 20 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;**As you might have seen in our previous blog posts (go read them if you haven’t), dbt is quite an amazing tool. My experience with it started about a year and a half ago, when I stepped into the world of data engineering. Before that, I had worked for two and a half years with Python in software engineering. Seeing how dbt is bringing numerous software best practices into data engineering, I really loved it from the start. After gaining experience for over a year and seeing all the things dbt has to offer, I just had to dive deeper into it.  The dbt developer certificate gave me the perfect opportunity and guidance to get familiar with all of its best features. In this blog, I will go through all the steps I believe you need to take, in order to pass your dbt Analytics Engineering Certification Exam. **&lt;/p&gt;
&lt;h2&gt;The study resources&lt;/h2&gt;
&lt;p&gt;Before starting to study, dbt recommends having over six months of experience with dbt Core or dbt Cloud. Although I believe you could pass the exam without this, it will save you a lot of study time. Check out their overview here: &lt;a href=&quot;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&quot;&gt;&lt;em&gt;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;What’s covered in the exam?&lt;/h3&gt;
&lt;p&gt;Looking at the page, my first tip would be to get familiar with the &lt;em&gt;What’s covered in the exam?&lt;/em&gt; section. Check out which of these items you already have experience with, which you might just be familiar with, or which are completely new to you. Getting this division upfront will help you when diving into the &lt;em&gt;Study guide&lt;/em&gt; section. I had already heard or read about most of the topics on the list, but I did not have experience yet with all of them. By identifying the lesser-known topics, I knew where to spend more time still.&lt;/p&gt;
&lt;h3&gt;The Study Guide&lt;/h3&gt;
&lt;p&gt;Next on the list is the &lt;em&gt;Study Guide&lt;/em&gt;, a detailed overview of everything you need to know, what to study and where to find the right study materials. It starts off with some practical information on the exam format (duration, length, passing score…), which are important to know, but less content heavy. After that, the topic outline returns followed by some sample questions. These are not the best in my opinion, as there are only five questions so it cannot really be used to test yourself.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Learning Path&lt;/em&gt; is definitely the most important section of this document. It will give you a list of checkpoints to work on, each with their own guidance on how to prepare. Here you can find what courses to take to get the right experience and which blog posts or documentation pages to read to get a deeper understanding of all the topics. I recommend going through all these links in detail, as you will learn a lot about some dbt features you might otherwise not think of. Each checkpoint will list the experience you should have at the end of it and which dbt commands you should now master.&lt;/p&gt;
&lt;p&gt;Going through all this will take quite some time, but you will be ready to start testing your knowledge!&lt;/p&gt;
&lt;h2&gt;Test your knowledge&lt;/h2&gt;
&lt;p&gt;Unfortunately, there are no great practice exams delivered by dbt. So, I had to look further for a way to check if I had prepared enough. Luckily, dbt has a great community on Slack with a separate channel to talk about the certificate. In there, I saw a lot of people referencing &lt;a href=&quot;http://qanalabs.com&quot;&gt;&lt;em&gt;qanalabs.com&lt;/em&gt;&lt;/a&gt; where I could find a course with no less than 13 (!!) practice exams, each consisting of 65 questions. These were still on the previous version of the exam, so I had to take that into account when doing these tests. As some topics, like dbt metrics, are no longer part of the certificate topics. Luckily, the qanalabs course has now been updated for the new version, and it now consists of 11 practice exams of 70 questions each.&lt;/p&gt;
&lt;p&gt;I would like to make two sidenotes on the practice exams. The first one is small, but good to know. Just like in the actual exam, all questions are multiple choice. In some cases, you only have to select one answer and in some multiple answers might be true. In the qanalabs questions, that differentiation is not as clear as in the real questions. There were multiple questions where this cost me some points, but luckily it is much better during the exam. So, no need to get frustrated when running into this.&lt;/p&gt;
&lt;p&gt;Secondly, you should know that qanalabs is in no way supported or authored by dbt itself. The course is maintained separately, and the author is active on the dbt slack community. This means that not all questions are perfect, and I have seen people disagreeing with some answers. Even though this can be frustrating, I believe they will give you clarity on where your gaps are and where you might need some more studying. And that is exactly what they are intended for according to the author.&lt;/p&gt;
&lt;h2&gt;Take the exam&lt;/h2&gt;
&lt;p&gt;When you are finally done studying and getting good scores on the practice tests, you are ready to take the exam and get certified. Back in the certification overview from dbt, you can just click through to schedule your exam. You will be monitored during the exam, so make sure you plan it when you will not be disturbed, and you can work in a silent, clean environment.&lt;/p&gt;
&lt;p&gt;I planned my exam in the early afternoon, so that I could start my day with a relaxing coffee. I had some time to go over all my notes again and prepare my set up. I sat down and I was ready. The exam consists of 65 questions, and I feel like they were quite hard. But luckily, I prepared well and after submitting, I passed!&lt;/p&gt;
&lt;p&gt;Of course, all this is just my experience in this challenge. I would like to list up the before mentioned resources to finish up, so you can really decide what will work best for you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Dbt overview: &lt;a href=&quot;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&quot;&gt;&lt;em&gt;https://www.getdbt.com/certifications/analytics-engineer-certification-exam&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Qanalabs practice tests: &lt;a href=&quot;https://www.qanalabs.com/courses/dbt-developer&quot;&gt;&lt;em&gt;https://www.qanalabs.com/courses/dbt-developer&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Join the dbt community on Slack and checkout the &lt;a href=&quot;https://www.digitalhive.be/content/hashtags/dbt&quot;&gt;#dbt&lt;/a&gt;-certification channel&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best of luck! And if you are in need of more dbt expertise, don’t hesitate to contact us for one of our consultants!&lt;/p&gt;
</content:encoded><category>blog</category><category>data-post</category></item><item><title>A Salesforce Health Cloud implementation for CAR-T Treatment</title><link>https://www.digitalhive.be/post/a-salesforce-health-cloud-implementation-for-car-t-treatment/</link><guid isPermaLink="true">https://www.digitalhive.be/post/a-salesforce-health-cloud-implementation-for-car-t-treatment/</guid><description>A global leader in healthcare and pharmaceuticals encountered challenges in managing the logistics associated with CAR-T Treatment.</description><pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;A global leader in healthcare and pharmaceuticals encountered significant operational challenges in managing the intricate and crucial logistics associated with CAR-T Treatment. CAR-T cell therapy is an innovative cancer treatment that harnesses the body&amp;#39;s immune system to fight cancer. By genetically modifying a patient&amp;#39;s T cells to target specific cancer cells, CAR-T therapy offers a powerful and targeted approach to treatment which has shown remarkable results, curing 78% of treated patients.&lt;/p&gt;
&lt;p&gt;This process involves collecting a patient&amp;#39;s T cells, freezing and shipping them, and genetically modifying them to attack cancer cells. These cells are then multiplied and infused back into the patient&amp;#39;s bloodstream, where they target and destroy cancer cells, offering long-term protection. Throughout the process, potential issues like quality deviations, shipment delays, or the need for re-apheresis must be managed efficiently. Ensuring smooth procedures, accurate validations, and a user-friendly system is crucial for the success of this life-saving treatment, especially for cancer patients relying on CAR-T therapy as a last resort.&lt;/p&gt;
&lt;p&gt;The healthcare organization partnered with Digital Hive to deliver a comprehensive CRM solution. Initially focused on CRM development and business analysis, Digital Hive extended beyond the original scope of work to provide continuous improvements across various dimensions of the project. This proactive approach was aimed at enhancing overall project efficiency and fostering a long-term, trust-based partnership.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;To address these challenges and improve patient care and operational efficiency, the team devised a comprehensive solution leveraging Salesforce Health Cloud. Here&amp;#39;s how they tackled the complexities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Business Analysis:&lt;/strong&gt; Ongoing business analysis and support were provided, conducting follow-ups on demands, incidents, and requests to ensure effective issue resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Salesforce Customization and Development:&lt;/strong&gt; The development team customized the Salesforce Health Cloud platform to align with the organization&amp;#39;s specific requirements, ensuring seamless integration and functionality tailored to the CAR-T treatment process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project Improvements:&lt;/strong&gt; Leveraging project experience, the team consistently evaluated their approach to optimize project delivery and coordination from various angles. This was essential in a fast-paced environment with numerous stakeholders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical Support:&lt;/strong&gt; The development team provided ongoing technical support, troubleshooting any issues that arose during the implementation and post-deployment phases, thereby ensuring smooth operation and user satisfaction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Continuous Improvement:&lt;/strong&gt; With the entire development team onboard, the system was continuously enhanced based on user feedback, evolving requirements, and emerging technological advancements, ensuring ongoing optimization and effectiveness of the solution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;Digital Hive successfully developed an intuitive Salesforce Health Cloud solution, leveraging best practices from the pharmaceutical industry and utilizing out-of-the-box Salesforce solutions and components. This approach not only ensured a robust and scalable CRM platform but also laid a solid foundation for future growth across the EMEA region. The solution is set to expand its usage from 3 countries to 6, with plans to further scale to over 20 countries over the next coming years, positively increasing patient impact and operational efficiency. Some key achievements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Intuitive User Interface:&lt;/strong&gt; Developing an intuitive user interface using Salesforce Lightning capabilities ensured clarity for end-users regarding treatment progress and upcoming steps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Efficiency:&lt;/strong&gt; Notable improvements in team efficiency due to proactive process optimizations and early detection of project dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Collaboration:&lt;/strong&gt; Strengthened alignment and communication across technical and business teams, leading to a more cohesive working environment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recognized Value:&lt;/strong&gt; The healthcare organization acknowledged Digital Hive’s contributions, particularly appreciating the team&amp;#39;s willingness to go beyond their initial assignment and foster a partnership grounded in trust and expertise.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Digital Hive’s commitment to continuous improvement and proactive collaboration significantly enhanced project outcomes. By focusing on long-term partnership goals and delivering beyond the initial requirements, Digital Hive demonstrated its added value as a strategic CRM consultancy partner, reinforcing trust and solidifying its reputation for CRM expertise and advisement.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>salesforce-cases</category></item><item><title>Digital Hive CRM | Transforming Sales Processes in a Multilingual Environment with Microsoft Dynamics 365 at M</title><link>https://www.digitalhive.be/post/milexia-transforming-sales-processes-in-a-multilingual-environment-with-microsoft-dynamics-365/</link><guid isPermaLink="true">https://www.digitalhive.be/post/milexia-transforming-sales-processes-in-a-multilingual-environment-with-microsoft-dynamics-365/</guid><description>We assisted Milexia in making strategic CRM decisions that aligned with their long-term growth and operational goals.</description><pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://milexia.com/&quot;&gt;&lt;em&gt;Milexia&lt;/em&gt;&lt;/a&gt; is a French company which specialises in high tech electrical components, used in consumer electronics, medical and scientific devices, military and space exploration.  Expanding their operations in the past years, Milexia faced some significant operational challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The need for a &lt;strong&gt;unified Sales Process&lt;/strong&gt; supported by a CRM system that could serve as a single source of truth from lead to cash.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integrating operations across 5 countries&lt;/strong&gt; with differing data models, ways of working, and legal requirements, while also preparing for future expansion and onboarding from acquisitions and strategic partnerships.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The absence of a CRM system in three of the five countries, compounded by the use of various ERP systems, created difficulties in &lt;strong&gt;group reporting&lt;/strong&gt; and pipeline visibility. The need for one unified and consistent data model was crucial for effective cross-country analysis and strategic alignment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Strategic CRM Selection and Planning&lt;/h2&gt;
&lt;p&gt;Digital Hive was onboarded in the early phases of the project.  During the first phase, we assisted Milexia in making strategic CRM decisions that aligned with their long-term growth and operational goals. To achieve this, our consultant worked with the Milexia internal team on the following areas to gather their needs and building the RFP.&lt;/p&gt;
&lt;h3&gt;Analysis and Platform Selection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Conducting comprehensive business analysis sessions with Sales and Marketing departments to identify 41 critical sales functionalities and 26 marketing requirements that the CRM would need to fulfil.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performing a benchmark analysis of leading CRM platforms (Salesforce, Microsoft Dynamics 365, and SAP CRM) to evaluate the best fit for Milexia’s needs. Similarly, multiple Marketing platforms were analysed (ClickDimensions, Lemlist, Hubspot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As an outcome of our benchmark analysis, we conducted an in-depth examination of Microsoft Dynamics 365 to ensure it met all requirements before final platform selection.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;RFP Development and Partner Selection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a detailed Request for Proposal (RFP) based on insights gathered during the analysis phase, which was shared with potential MS Dynamics implementation partners.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assisting Milexia in evaluating potential implementation partners and navigating the selection process to identify the most capable partner for their needs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementation Oversight and Strategic Guidance&lt;/h2&gt;
&lt;p&gt;During the implementation phase of the project, Digital Hive’s role expanded to safeguarding Milexia’s interests and ensuring success by providing:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stakeholder Management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Facilitating effective communication between Milexia’s internal teams and the external implementation partner. This ensured alignment and clarity across all project activities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Escalation Management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proactively addressing challenges and escalations, such as data migration complexities, by designing collaborative solutions with the support of Microsoft’s technical services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Scope and Project Management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maintaining oversight of project milestones, protecting the project timeline and budget, and ensuring that deliverables met quality standards and Milexia’s strategic objectives.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The successful implementation of Microsoft Dynamics 365, integrated with ClickDimensions Marketing Automation is currently being rolled out in the current Milexia countries.  This platform will allow Milexia to reach their goals and prepare for the future.  Not only will there be a centralized and clear dashboard for sales pipeline management, but Milexia will also be ready to seamlessly onboard newly acquired companies and expand their operations with a consistent approach.&lt;/p&gt;
&lt;p&gt;Digital Hive’s early engagement and comprehensive support ensured that Milexia selected the right CRM solution and protected their strategic interests throughout the implementation. By facilitating strong stakeholder communication, proactive escalation management, and disciplined scope management, Digital Hive demonstrated its value as a trusted strategic partner. This collaborative approach laid the groundwork for long-term operational success and scalability.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>microsoft-dynamics-365-cases</category></item><item><title>Leverage DBT audit to ensure accurate model generation</title><link>https://www.digitalhive.be/post/leverage-dbt-audit-to-ensure-accurate-model-generation/</link><guid isPermaLink="true">https://www.digitalhive.be/post/leverage-dbt-audit-to-ensure-accurate-model-generation/</guid><description>Transitioning from legacy ETL tools to DBT? Our blog walks you through using the DBT audit_helper library to ensure data transformation accuracy. Learn how to compare row counts, columns, and more between old and new models. This process provides confidence that your DBT models work as intended, ensuring a smooth, reliable migration.</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In the evolving landscape of data analytics and engineering, efficient and reliable data transformation tools are crucial. dbt (data build tool) has emerged as a leading solution, offering capabilities that streamline data transformation workflows, enhance data quality, and support collaborative data practices. Many companies might want to start using DBT, but are stuck using an older, legacy sql based etl tool. In this blog we give an example of using the dbt audit helper as a way of checking the results when moving your legacy query to dbt.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;In any move between tools the ideal first step is to create an overview of the various pipelines and their logic. This overview will function as the backbone from which the development can commence. Make sure to document the sources and destinations from which the data is read and written to,  and the logic consisting of SQL queries , joins, filters, and other transformations.&lt;/p&gt;
&lt;h2&gt;Set up the dbt environment&lt;/h2&gt;
&lt;p&gt;We won’t go over the setting up of a dbt-airflow environment in detail here as the documentation on this subject is widely available. However, the basic steps are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install dbt: Follow the official installation guide.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initialize a dbt project: Run dbt init followed by the project name to create a new dbt project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure profiles: Set up a profiles.yml file with the necessary database connection details.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create the sources: Define the data sources in dbt/models/sources/source_name.yml.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up ingestion pipelines: Use Airflow DAGs to run custom Python ingestions or choose from the wide range of existing operators depending on the requirements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill ingestion layer: Run the ingestion pipelines to populate the ingestion layer with source data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once there is data in the ingestion layer which should have been defined in the source data we can begin migrating the pipelines.&lt;/p&gt;
&lt;p&gt;Note: The ingestion layer should contain copies of the source data.&lt;/p&gt;
&lt;h2&gt;Translate sql to dbt&lt;/h2&gt;
&lt;p&gt;To create the models that will replace the current transformations, first, organize the models depending on how many layers the project has (staging, intermediate, reporting). For file, create a file in the relevant layer folder under models (dbt/models/staging/transformation_name.sql). During the transition phase, it might be useful to introduce prefixes in the table names or different schemas, such that the data generated by the legacy SQL and the ones generated by dbt can coexist in the same layer for comparison.&lt;/p&gt;
&lt;p&gt;Note: Use tags to group the models such that they can be run in grouped dbt builds.&lt;/p&gt;
&lt;h2&gt;Test model accuracy with an audit model&lt;/h2&gt;
&lt;p&gt;An important step in creating the models is testing whether the behavior of the model transformations results in data that is equal to the data generated by the legacy tool transformations.  Here we suggest using an audit model to generate a comparison audit. An example of such a model is shown below.  To generate this model we made use of the audit_helper library. &lt;a href=&quot;https://hub.getdbt.com/dbt-labs/audit_helper/latest/&quot;&gt;https://hub.getdbt.com/dbt-labs/audit_helper/latest/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-- define relation of the dbt model table {% set a_relation = source(&amp;#39;snowflake&amp;#39;, &amp;#39;pharmaceuticals_india&amp;#39;) %}  -- define relation of the legacy table {% set b_relation = source(&amp;#39;snowflake2&amp;#39;, &amp;#39;pharmaceuticals_india&amp;#39;) %}  {% if execute %}     {% set audit_query = audit_helper.compare_row_counts(         a_relation=a_relation,          b_relation=b_relation     ) %}       {% set audit_results = run_query(audit_query) %}       {% do audit_results.print_table() %} {% endif %}   {% if execute %}     {% set audit_query2 = audit_helper.compare_relation_columns(         a_relation=a_relation,         b_relation=b_relation     ) %}       {% set audit_results2 = run_query(audit_query2) %}       {% do audit_results2.print_table() %} {% endif %}   {% if execute %}     {% set audit_query3 = audit_helper.compare_relations(         a_relation=a_relation,          b_relation=b_relation     ) %}       {% set audit_results3 = run_query(audit_query3) %}       {% do audit_results3.print_table() %} {% endif %}  {% if execute %}     {% set audit_query4 = audit_helper.compare_all_columns(         a_relation=a_relation,          b_relation=b_relation,         primary_key = &amp;quot;ID&amp;quot;,     ) %}       {% set audit_results4 = run_query(audit_query4) %}      {% do audit_results4.print_table() %} {% endif %}  select 0 as audit_test&lt;/p&gt;
&lt;p&gt;In the first step we use the audit_helper.compare_row_counts here we count the rows in both tables and return the total count.&lt;/p&gt;
&lt;p&gt;In the second step we use the audit_helper.compare_relation_columns which checks the order and datatype of the columns in both tables.&lt;/p&gt;
&lt;p&gt;In the third step we use the audit_helper.compare_relations. This returns the percentage of matching relationships.&lt;/p&gt;
&lt;p&gt;In the final step we use the audit_helper.compare_all_columns. This checks the matching rows in both tables and see how many NULL values each one has for every column, and how many each column is missing compared with the other table.&lt;/p&gt;
&lt;p&gt;The “select 0 as audit_test” the end of the models acts as a placeholder query to avoid returning data while ensuring DBT&amp;#39;s requirement of returning a select result from every model is met.&lt;/p&gt;
&lt;p&gt;Once all models that replace the legacy tool transformations have been generated, the next step should be setting up tests for each model.&lt;/p&gt;
&lt;h2&gt;Demo&lt;/h2&gt;
&lt;p&gt;Here we have a db called db1 containing two schemas Schema1 and Schema1__legacy each of the schemas contains a table called “pharmaceuticals_india”. Below we can see the output of comparing two 100% equal tables.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_1cc717de98a241e9b90908e3145554b1.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;To show the result of a failed audit we removed a column from the table in Schema1 the output is as follows.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_1cc717de98a241e9b90908e3145554b1.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The audit model we presented provides a comprehensive method to compare data between legacy systems and newly implemented DBT models, ensuring data consistency and accuracy throughout the transformation process. This approach allows users to easily identify discrepancies between datasets, whether they arise from differences in row counts, column structures, or data content. By utilizing the audit_helper library, these comparisons can be done with minimal overhead, making it a low-impact testing approach that efficiently validates the accuracy of new models without requiring excessive resources or introducing complexity.&lt;/p&gt;
&lt;p&gt;One of the key advantages of this methodology is that it offers granular visibility into potential issues. From basic row count mismatches to more intricate column and data integrity checks, this process enables users to pinpoint the exact nature of discrepancies.&lt;/p&gt;
&lt;p&gt;Ultimately, by leveraging DBT and audit_helper for model generation, organizations can achieve a smooth, risk-free transition from legacy ETL tools to modern, cloud-based data pipelines. This ensures that transformations are correct, scalable, and maintainable in the long term. Such an approach builds confidence in the migration process, enabling teams to embrace DBT’s benefits—like modularity, version control, and collaboration—without sacrificing the accuracy of critical business data.&lt;/p&gt;
</content:encoded><category>data-post</category></item><item><title>Empty files not showing up in Snowflake external stage?</title><link>https://www.digitalhive.be/post/empty-files-not-showing-up-in-snowflake-external-stage/</link><guid isPermaLink="true">https://www.digitalhive.be/post/empty-files-not-showing-up-in-snowflake-external-stage/</guid><description>Why don’t my empty files show up in my snowflake stage when they do show up in S3 ? Currently there is a bug in snowflake with zero-byte (0b) and one-byte (1b) files. This blog gives you the details and, more importantly, how to fix it.</description><pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When working with Snowflake to load data from external stage zero-byte (0b) or 1-byte (1b) files are not accessible. In this blog post, we&amp;#39;ll explore these challenges and outline potential solutions for handling such file ingestion problems.&lt;/p&gt;
&lt;h2&gt;The problem - Querying Files from an External Stage&lt;/h2&gt;
&lt;p&gt;While querying an external stage, zero-byte (0b) and one-byte (1b) files are not accessible through the standard SELECT query in Snowflake, creating an obstacle when that file&amp;#39;s metadata is part of your dataset.&lt;/p&gt;
&lt;p&gt;For files larger than 1b the content of the queried files can be accessed via the $1 column, and metadata about the files can be retrieved using several built-in metadata columns. These include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;METADATA$FILENAME&lt;/strong&gt;: The full path to the data file the current row belongs to.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;METADATA$FILE_ROW_NUMBER&lt;/strong&gt;: The row number of the record within the data file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;METADATA$FILE_CONTENT_KEY&lt;/strong&gt;: A checksum of the data file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;METADATA$FILE_LAST_MODIFIED&lt;/strong&gt;: The last modified timestamp of the data file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;METADATA$START_SCAN_TIME&lt;/strong&gt;: The timestamp when the scanning of the file started.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s an example of such a query:&lt;/p&gt;
&lt;p&gt;SELECT $1, METADATA$FILENAME, METADATA$FILE_ROW_NUMBER FROM @my_stage (FILE_FORMAT =&amp;gt; my_custom_format, PATTERN =&amp;gt; &amp;#39;.*.csv&amp;#39;);&lt;/p&gt;
&lt;p&gt;This query will work for files with content greater than 1 byte. However, files that are 0b or 1b in size** are not accessible** via the standard SELECT query.&lt;/p&gt;
&lt;h2&gt;Workaround - listing the files&lt;/h2&gt;
&lt;p&gt;A useful workaround is to query the results of the LIST stage command or use a SELECT from the stage&amp;#39;s directory to access the metadata for these small files.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s how you can list the files in the stage and retrieve metadata:&lt;/p&gt;
&lt;p&gt;LIST @my_stage; SET qid=LAST_QUERY_ID(); SELECT “name”,“size”, “md5”, “last_modified” FROM table(result_scan($qid)) ;&lt;/p&gt;
&lt;p&gt;Alternatively, you can use SELECT with the DIRECTORY option:&lt;/p&gt;
&lt;p&gt;SELECT * FROM DIRECTORY(@my_stage);&lt;/p&gt;
&lt;p&gt;This approach allows you to access the file names, sizes, hash key, and last modified dates, even for small files that cannot be directly queried.&lt;/p&gt;
&lt;h2&gt;Workaround - adding metadata&lt;/h2&gt;
&lt;p&gt;If you want to combine metadata from 0b and 1b files with the data from larger files that can be queried, you can use a UNION ALL to merge the results. This approach ensures that all relevant file information is captured. Here&amp;#39;s an example of how this can be achieved:&lt;/p&gt;
&lt;p&gt;WITH large_files AS (  SELECT $1 AS FILE_CONTENT, METADATA$FILENAME, METADATA$FILE_ROW_NUMBER  FROM @my_stage (FILE_FORMAT =&amp;gt; my_custom_format, PATTERN =&amp;gt; &amp;#39;.*.csv&amp;#39;)  ),  small_files AS (  SELECT FILENAME, LAST_MODIFIED FROM DIRECTORY(@my_stage) WHERE FILE_SIZE &amp;lt;= 1 )   SELECT * FROM large_files UNION ALL SELECT null AS FILE_CONTENT, FILENAME,null  AS FILE_ROW_NUMBER FROM small_files;&lt;/p&gt;
&lt;p&gt;This query selects the data from files larger than 1b and combines it with metadata from smaller files. The same can be done using the LIST stage command. In that case you will need to replace the small files query with the LIST command and query form the query results provided above.&lt;/p&gt;
&lt;h2&gt;Additional context&lt;/h2&gt;
&lt;p&gt;Understanding which file types can potentially be 0b or 1b is crucial when dealing with external stages. Below is a breakdown of common file types and their potential to be zero or one byte in size:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CSV Files&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CSV files can technically be 1 byte if they contain an empty column represented by a single character such as a comma.  0b CSV file, however, would be invalid as it wouldn&amp;#39;t contain even the structural elements (like delimiters).&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;JSON Files&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;JSON files cannot be 1 byte because they require at least {} to form a valid empty JSON object.&lt;/p&gt;
&lt;p&gt;A 0b JSON file is similarly invalid.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Text Files (TXT)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;TXT files can be 1 byte and still valid, as they may contain a single character or a newline.  A 0b TXT file, though, would be empty and contain no useful information.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Parquet Files&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Parquet files are a structured format and can&amp;#39;t be 1 byte. These files have a header and metadata that make it impossible for them to be valid at such a small size.  A 0b Parquet file would be considered corrupt or incomplete.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;Avro Files&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Similar to Parquet, Avro is a structured format with metadata, and it cannot be valid if it&amp;#39;s only 1 byte.  0b Avro files would also be invalid.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Handling file ingestion issues in Snowflake, especially with 0b and 1b files, can be challenging. However, by using workarounds like LIST commands and DIRECTORY queries, and understanding which file types can be zero or one byte, you can better manage the ingestion process. These solutions will help you ensure that no data—regardless of file size—is left behind when querying from external stages.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re working with file types that may be susceptible to these issues, it’s important to account for them during your ingestion workflows. Keep in mind the tips outlined here to handle file ingestion more effectively and avoid common pitfalls.&lt;/p&gt;
</content:encoded><category>data-post</category></item><item><title>The Reality Check: How Effective is AI in CRM?  </title><link>https://www.digitalhive.be/post/how-effective-is-ai-in-crm/</link><guid isPermaLink="true">https://www.digitalhive.be/post/how-effective-is-ai-in-crm/</guid><description>Is AI in CRM really living up to its promise, or are we still far from the dream of truly intelligent systems that work seamlessly with our businesses?</description><pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In recent years, the AI revolution has taken the business world by storm, with promises of transforming how we interact with technology. Nowhere is this more true than in the world of Customer Relationship Management (CRM) systems, where AI tools claim to streamline and automate complex processes. But is AI in CRM really living up to its promise, or are we still far from the dream of truly intelligent systems that work seamlessly with our businesses?&lt;/p&gt;
&lt;h2&gt;The AI Promise vs. Reality&lt;/h2&gt;
&lt;p&gt;When AI in CRM was first announced, expectations were high. People envisioned a system where you could simply ask the AI anything—whether it be customer data, sales performance, or forecasting—and it would interpret your query, comb through your entire data model, and deliver an insightful, context-aware response.&lt;/p&gt;
&lt;p&gt;But the reality today is quite different. AI tools still rely heavily on &lt;strong&gt;predefined prompts&lt;/strong&gt; and &lt;strong&gt;manual context feeding&lt;/strong&gt; to generate useful answers. They don’t yet have the ability to independently interpret all your business processes, roles, or data models. For AI to work effectively within your CRM, every business case still needs to be carefully crafted. The correct prompts must be created and documented, and the right data must be provided in just the right way.&lt;/p&gt;
&lt;h2&gt;What We Were Expecting: Full AI Autonomy&lt;/h2&gt;
&lt;p&gt;The expectation was simple: you’d be able to ask the AI any question related to your business or customers, and it would know what to do. Whether it’s pulling data from various departments, predicting customer churn, or analyzing sales patterns, we imagined AI would become an integral, self-sufficient assistant. However, what we’ve seen so far is that AI still requires a lot of &lt;strong&gt;manual input&lt;/strong&gt; to interpret even basic business queries.&lt;/p&gt;
&lt;p&gt;In short, we’re still far from a point where AI in CRM can understand your business autonomously. It can respond to specific, pre-programmed prompts—but don’t expect it to “get” your entire business context on its own.&lt;/p&gt;
&lt;h2&gt;A Big Gap From What Was Promised&lt;/h2&gt;
&lt;p&gt;Another limitation is that AI systems don’t fully integrate with your entire data model. They lack the flexibility to automatically understand complex business processes or extract relevant information without significant human input. Instead, AI solutions in CRM are still reliant on &lt;strong&gt;structured, predefined queries&lt;/strong&gt; and often fall short when it comes to handling the full scope of unstructured or complex data.&lt;/p&gt;
&lt;p&gt;This gap is particularly noticeable in areas like lead scoring, service ticket triage, or customer journey analysis—where AI can only be as effective as the prompts and data it has been fed. The world imagined a future where AI could autonomously pull insights, but that dream still feels far away.&lt;/p&gt;
&lt;h2&gt;Why We’re Not There Yet&lt;/h2&gt;
&lt;p&gt;Despite all the advancements in AI, the reality is that CRM systems still demand a lot of preparation. Every business use case must be carefully constructed, documented, and implemented with prompts and boundaries. AI is powerful, but it’s only as good as the inputs it receives. If you want truly autonomous AI, we’re simply not there yet.&lt;/p&gt;
&lt;p&gt;The complexity of data environments, the need for robust business logic, and the integration of industry-specific processes make it difficult for AI to function without significant customization. This means AI in CRM systems remains more of an assistant that can perform &lt;strong&gt;limited, pre-defined tasks&lt;/strong&gt; rather than the fully autonomous, intelligent system that was promised.&lt;/p&gt;
&lt;h2&gt;A Bright Future Ahead?&lt;/h2&gt;
&lt;p&gt;However, while we’re not yet living in a world where AI in CRM is fully autonomous, there is reason to believe that things will improve. Players in the AI market are rapidly iterating on their solutions. As AI technology evolves, we’re likely to see improvements in &lt;strong&gt;contextual understanding&lt;/strong&gt; and &lt;strong&gt;data interpretation&lt;/strong&gt;, allowing for smarter interactions and more automated processes.&lt;/p&gt;
&lt;p&gt;One promising development is the possibility of &lt;strong&gt;predefined prompts&lt;/strong&gt; created by third parties, which could work across different industries and business environments. This could significantly reduce the setup time and effort required to implement AI in a CRM system, bringing us closer to the autonomous future we’re all hoping for.&lt;/p&gt;
&lt;h2&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;The AI-driven CRM landscape is evolving, and while we may not yet be where we want to be, there are significant improvements on the horizon. AI has the potential to transform businesses, but the technology is still in its infancy in many ways. Over the next few months and years, we expect that AI tools will become more robust, more intuitive, and more capable of interpreting complex business data autonomously.&lt;/p&gt;
&lt;p&gt;As we keep an eye on these developments, it will be fascinating to see how the market evolves and whether AI will finally live up to its immense potential in CRM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re looking to explore AI in CRM or need expert consultancy on how to implement these systems effectively, reach out to Digital Hive. We’re here to guide your business through the next wave of AI-driven innovation.&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>crm-post</category></item><item><title>A comparison of Spark pools in Synapse and Fabric</title><link>https://www.digitalhive.be/post/a-comparison-of-spark-pools-in-synapse-and-fabric/</link><guid isPermaLink="true">https://www.digitalhive.be/post/a-comparison-of-spark-pools-in-synapse-and-fabric/</guid><description>This comparison of Spark pools in Microsoft Synapse and Microsoft Fabric helps you choose the right platform for your compute needs. Synapse offers a cost-effective, flexible solution, while Fabric delivers advanced AI and analytics for a future-ready approach. By breaking down key features and pricing, this guide empowers you to make smart, strategic decisions that align with your project&apos;s goals and budget.</description><pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this blogpost we try to show the main features of each option. This might help to make the decision that best fits your needs.&lt;/p&gt;
&lt;p&gt;Synapse is a Platform-as-a-service (PAAS) that combines former standalone Azure services including ADF, KQL(Azure data explorer), Data Lake, Apache spark, Azure SQL DW. The services are oriented around big data and data warehousing. It provides one experience for ingesting, transforming, managing and serving data to other azure services such as PowerBI and Azure Ml.&lt;/p&gt;
&lt;p&gt;Microsoft Fabric is the latest of Microsoft SAAS, it encompasses the functionalities of Synapse and builds further on those to bring together with analytics and management tools such as PowerBI, Azure ML, Purview and the latest AI features via Copilot. Besides these, Fabric comes with a novel data storage solution, One Lake, which serves as the single source of truth for all Fabric services.&lt;/p&gt;
&lt;h2&gt;Capacities, SCUs, vCores, SKUs and Fs&lt;/h2&gt;
&lt;p&gt;Regardless of the process one wants to run, be it spark pools or any other form of compute instance, capacity is needed. To be able to compare how capacity is measured we need to understand what SCUs, vCores, SKUs and Fs are and how they relate to each other.&lt;/p&gt;
&lt;p&gt;SCUs (Synapse Commit Units) are specific to Synapse Analytics. They represent a combination of CPU, memory, and I/O resources that can be purchased and work like credits.&lt;/p&gt;
&lt;p&gt;vCores are used across various Azure services to measure compute power and represent a virtual CPU core.&lt;/p&gt;
&lt;p&gt;SKUs (Stock Keeping Units) or Fs define a specific configuration of compute resources, including vCores and memory. In the end Fs are just a direct representation of CUs(Capacity Units). The following table might help set the relation between these terms.&lt;/p&gt;
&lt;h2&gt;Fabric&lt;/h2&gt;
&lt;h3&gt;Reserved&lt;/h3&gt;
&lt;p&gt;In Fabric you can opt for reserving compute or pay- as- you- go. By resolving the compute you can save 41% on compute costs compared to pay-as-you-go. This also means that if you do not require compute for more than 60% of a month then it will always be cheaper to opt for a pay-as-you-go subscription.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SKU&lt;/th&gt;
&lt;th&gt;Capacity unit (CU)&lt;/th&gt;
&lt;th&gt;vCores&lt;/th&gt;
&lt;th&gt;Pay-as-you-go&lt;/th&gt;
&lt;th&gt;Reservation  ·  ~41% savings&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;F 2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.25&lt;/td&gt;
&lt;td&gt;€0.407/hour&lt;/td&gt;
&lt;td&gt;€0.242/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.50&lt;/td&gt;
&lt;td&gt;€0.814/hour&lt;/td&gt;
&lt;td&gt;€0.484/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 8&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€1.628/hour&lt;/td&gt;
&lt;td&gt;€0.968/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;€3.256/hour&lt;/td&gt;
&lt;td&gt;€1.936/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 32&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;€6.511/hour&lt;/td&gt;
&lt;td&gt;€3.872/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 64&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;€13.021/hour&lt;/td&gt;
&lt;td&gt;€7.743/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 128&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;€26.041/hour&lt;/td&gt;
&lt;td&gt;€15.485/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 256&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;€52.081/hour&lt;/td&gt;
&lt;td&gt;€30.970/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 512&lt;/td&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;€104.162/hour&lt;/td&gt;
&lt;td&gt;€61.939/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 1024&lt;/td&gt;
&lt;td&gt;1024&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;€208.323/hour&lt;/td&gt;
&lt;td&gt;€123.878/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F 2048&lt;/td&gt;
&lt;td&gt;2048&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;€416.646/hour&lt;/td&gt;
&lt;td&gt;€247.756/hour&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;For the most up to date prices turn to the Fabric pricing page: &lt;a href=&quot;https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/&quot;&gt;&lt;em&gt;https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Starter Pool&lt;/h3&gt;
&lt;p&gt;When you run a notebook without a configured Spark pool, it will default to the Spark configuration and runtime environment provided by Fabric. This means you won&amp;#39;t be able to customize the Spark version, node size, or other configuration options.&lt;/p&gt;
&lt;p&gt;Additionally, certain features such as automatic pausing, high concurrency, and concurrency limits may be unavailable or function differently without a configured Spark pool.&lt;/p&gt;
&lt;h3&gt;Custom Spark Pool&lt;/h3&gt;
&lt;p&gt;A custom Spark pool allows users to specify dependencies, size nodes, auto scale, automatic pause, and dynamically allocate executors based on Spark job requirements. When enabled, autoscaling acquires new nodes within the max node limit specified by the user and retires them after job execution. Dynamic allocation allocates an optimal number of executors based on the data volume for better performance.&lt;/p&gt;
&lt;h2&gt;Synapse&lt;/h2&gt;
&lt;h3&gt;SCUs&lt;/h3&gt;
&lt;p&gt;In Synapse there is also a discount on the compute when it is reserved in the form of SCUs. By paying for compute in this way you can save up to 28% on compute costs. For example if one buys 5000 SCUs at the price of € 4346,22 the SCUs will be used as if they represent the currency with which you would pay in a pay as you go situation. However, since you acquired the SCUs at a lower rate this becomes cheaper.&lt;/p&gt;
&lt;p&gt;Keep in mind that the SCUs expire after 12 months if they are not used.&lt;/p&gt;
&lt;p&gt;The SCUs can be used for below Synapse services:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Dedicated SQL Pool&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Managed VNET&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Pipelines&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Serverless SQL Pool&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Azure Synapse Analytics Serverless Apache Spark Pool&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Data Flow - Basic&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Synapse Analytics Data Flow – Standard&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;SCUs&lt;/th&gt;
&lt;th&gt;Discount %&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5000&lt;/td&gt;
&lt;td&gt;6%&lt;/td&gt;
&lt;td&gt;€4,346.218&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;10000&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;€8,507.491&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;24000&lt;/td&gt;
&lt;td&gt;11%&lt;/td&gt;
&lt;td&gt;€19,752.174&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;60000&lt;/td&gt;
&lt;td&gt;16%&lt;/td&gt;
&lt;td&gt;€46,606.252&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;150000&lt;/td&gt;
&lt;td&gt;22%&lt;/td&gt;
&lt;td&gt;€108,193.084&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;360000&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;td&gt;€239,689.292&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;For more up to date prices turn to: &lt;a href=&quot;https://azure.microsoft.com/en-us/pricing/details/synapse-analytics/?msockid=2011cf7ec1b66c4a03e9dbecc0da6d90&quot;&gt;&lt;em&gt;Pricing - Azure Synapse Analytics | Microsoft Azure&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Pay-as-you-go&lt;/h3&gt;
&lt;p&gt;The pay-as-you-go option is more expensive than the SCUs per compute. However this approach can be interesting in two situations.  The first situation is when you are setting up a new project and you are still figuring out how much compute you are going to need for the processes that you run. The second situation is when you know you will consume less than 5000 SCUs a year. Since the bottom line of SCU purchases is 5000 you will end up not using the remaining SCUs.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Memory Optimized&lt;/td&gt;
&lt;td&gt;€0.143 per vCore-hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU accelerated (public preview)&lt;/td&gt;
&lt;td&gt;€0.157 per vCore-hour&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Options for creating a spark pool.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Node size  · Memory optimized&lt;/th&gt;
&lt;th&gt;Instances count&lt;/th&gt;
&lt;th&gt;Price/hour&lt;/th&gt;
&lt;th&gt;Price/month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Small (4 vCores / 32GB)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€0.57&lt;/td&gt;
&lt;td&gt;€417.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium (8 vCores / 64 GB)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€1.14&lt;/td&gt;
&lt;td&gt;€834.69&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large (16 vCores / 128 GB)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€2.29&lt;/td&gt;
&lt;td&gt;€1,669.37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XLarge (32 vCores / 256 GB)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€4.57&lt;/td&gt;
&lt;td&gt;€3,338.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XXLarge(64 vCores / 432 GB)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;€9.15&lt;/td&gt;
&lt;td&gt;€6,677.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;For the most up to date prices turn to the synapse pricing page: &lt;a href=&quot;https://azure.microsoft.com/en-us/pricing/details/synapse-analytics/&quot;&gt;&lt;em&gt;https://azure.microsoft.com/en-us/pricing/details/synapse-analytics/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Pools&lt;/h2&gt;
&lt;p&gt;After having looked at the pricing we can zoom in on the features that distinguish the spark pools in Synapse from the ones in Fabric. Fabric Spark pools offer both Starter and Custom pool options. Synapse Spark pools, on the other hand, are exclusively Custom pools which requires some educated choices to be made regarding node sizes and scale depending on the jobs. Synapse also supports high concurrency and has a configurable auto pause feature, whereas Fabric&amp;#39;s auto pause duration is fixed. Additionally, Fabric&amp;#39;s Spark pools benefit from novel features like V-Order and Spark autotune, which are not available in Synapse.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Azure Synapse Spark&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Fabric Spark&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spark Pool Types&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom pool&lt;/td&gt;
&lt;td&gt;Starter pool, Custom pool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spark Versions (runtime)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.4, 3.1, 3.2, 3.3, 3.4&lt;/td&gt;
&lt;td&gt;3.3, 3.4, 3.5 (experimental)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Autoscaling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Allocation of Executors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, up to 200 nodes&lt;/td&gt;
&lt;td&gt;Yes, based on capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adjustable Node Sizes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, 3-200 nodes&lt;/td&gt;
&lt;td&gt;Yes, 1-based on capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node Size Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Memory Optimized, GPU Accelerated&lt;/td&gt;
&lt;td&gt;Memory Optimized&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node Sizes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Small-XXXLarge&lt;/td&gt;
&lt;td&gt;Small-XXLarge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auto pause&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, customizable minimum 5 minutes&lt;/td&gt;
&lt;td&gt;Yes, non customizable 2 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;High Concurrency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;V-Order&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spark Autotune&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Concurrency Limits&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fixed&lt;/td&gt;
&lt;td&gt;Variable based on capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multiple Spark Pools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (environments)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Intelligent Cache&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API/SDK Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ADLS Gen2&lt;/td&gt;
&lt;td&gt;OneLake&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Notebook Languages&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python, Scala, Spark SQL, R, .NET&lt;/td&gt;
&lt;td&gt;Python, Scala, Spark SQL, R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Notebook Concurrency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline Activity Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Built-in Scheduled Runs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retry Policies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In the end choosing between Spark pools in Synapse and Fabric depends on the needs of your project and its cost considerations. Synapse is tailored for users who need a comprehensive, integrated analytics service with flexible compute options via SCUs. Fabric, with its enhanced features and unified storage solution, caters to those looking for an all-encompassing analytics platform that integrates advanced AI and management tools.&lt;/p&gt;
&lt;p&gt;Both platforms offer significant advantages, and understanding their distinct features and pricing models can help you make an informed decision that aligns with your organizational goals and budget constraints. Since Fabric is newer, it is clear that this will always be the more expensive option compared to similar amounts of compute in Synapse. However using Fabric does leave you more ready for the future, since there will very little new development in Synapse, with the focus from Microsoft being fully on Fabric.&lt;/p&gt;
&lt;p&gt;Still feeling unsure about your Microsoft setup? We can help! Contact us for advice about a new setup or to take a loot at your existing configurations and cloud costs.&lt;/p&gt;
</content:encoded><category>data-post</category></item><item><title>How AgentForce Revolutionizes Business with AI   </title><link>https://www.digitalhive.be/post/how-agentforce-revolutionizes-business-with-ai/</link><guid isPermaLink="true">https://www.digitalhive.be/post/how-agentforce-revolutionizes-business-with-ai/</guid><description>In this post, we’ll dive deep into how AgentForce works, dissect the key components like the Atlas Reasoning Engine, AgentBuilder, and the AgentForce Partner Network, and explore real-world use cases and efficiency gains in areas such as sales, service, and marketing.</description><pubDate>Thu, 19 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;**In today’s rapidly evolving business landscape, AI is no longer just a buzzword; it’s becoming a game-changer for organizations worldwide. Salesforce’s latest innovation, AgentForce, is at the heart of this transformation, providing businesses with tools to enhance efficiency, improve customer engagement, and automate complex tasks. But what exactly makes AgentForce stand out, and how does it work? **&lt;/p&gt;
&lt;p&gt;**In this post, we’ll dive deep into how AgentForce works, dissect the key components like the Atlas Reasoning Engine, AgentBuilder, and the AgentForce Partner Network, and explore real-world use cases and efficiency gains in areas such as sales, service, and marketing. **&lt;/p&gt;
&lt;h2&gt;Understanding How AgentForce Works&lt;/h2&gt;
&lt;p&gt;At the heart of AgentForce is the ability to create AI-driven autonomous agents designed to function seamlessly across business units. While Salesforce has already established itself as a leader with tools like Einstein GPT and Copilot, AgentForce represents the next leap into fully autonomous operations.&lt;/p&gt;
&lt;p&gt;AgentForce combines data from across the Salesforce ecosystem to enable AI agents to autonomously complete tasks like responding to customer inquiries, managing workflows, or even making complex sales decisions. These agents can be programmed to align with specific business objectives, leveraging machine learning models and vast data reservoirs to make smarter, faster decisions than human teams could manage alone.&lt;/p&gt;
&lt;h2&gt;Key Components of AgentForce&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Atlas Reasoning Engine&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AgentForce owes much of its power to the &lt;strong&gt;Atlas Reasoning Engine&lt;/strong&gt;. This engine is designed to ingest large quantities of data, rapidly analyzing and interpreting this information to guide autonomous decision-making. The key feature of the Atlas Reasoning Engine is its ability to simulate human-like reasoning by learning from past interactions, customer behavior, and sales trends.&lt;/p&gt;
&lt;p&gt;For example, in a customer service scenario, the Atlas Reasoning Engine allows AgentForce to predict customer needs based on past issues and behaviors, crafting responses that feel personalized, timely, and relevant. The engine improves over time, creating a continuous feedback loop where each interaction becomes a learning opportunity, making the agent smarter and more effective with every engagement.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_f812b78ded77405b853743b9b7eb7f3c.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AgentBuilder&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;AgentBuilder&lt;/strong&gt; is the interface that enables businesses to construct, customize, and deploy their autonomous agents with ease. Much like building an app on Salesforce, AgentBuilder allows administrators to design agents that can tackle specific business problems. The interface is no-code, enabling non-technical users to design agent behaviors by dragging and dropping various action modules.&lt;/p&gt;
&lt;p&gt;One exciting feature is that these agents can be tailored to meet the specific requirements of different teams across the organization. Marketing can build agents that handle campaign management and lead nurturing, while the sales team can create agents to prioritize leads and automate follow-ups. Flexibility is key, and AgentBuilder empowers businesses to start small with simple workflows and gradually expand the agents&amp;#39; roles as confidence in the system grows.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_672a5f3e1d224875899203ccf9c5fb44.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AgentForce Partner Network&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition to the powerful tools within AgentForce itself, Salesforce has launched the &lt;strong&gt;AgentForce Partner Network&lt;/strong&gt; to help companies maximize the platform’s potential. This ecosystem of partners provides additional plugins, integrations, and custom AI models that can extend the functionality of AgentForce in ways that suit industry-specific needs.&lt;/p&gt;
&lt;p&gt;For example, healthcare organizations might use a partner-built agent to automate appointment scheduling and reminders, while retail companies may leverage an agent for handling personalized product recommendations and managing online inventories. The Partner Network ensures that businesses of all sizes and industries can benefit from AgentForce&amp;#39;s versatility, regardless of their unique operational demands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Five Key Attributes of an Agent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Building an autonomous agent using AgentForce isn’t just about automating tasks. Each agent comes with five critical attributes that make them highly effective at carrying out responsibilities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;: Define the agent’s core responsibilities—what tasks need to be done, and in what contexts?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt;: Determine what data the agent can access, including structured and unstructured data such as CRM records, call transcripts, and emails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt;: Specify what actions the agent can take. This can range from answering inquiries to executing complex business logic like running flows or calling APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Guardrails&lt;/strong&gt;: Set clear limitations on what the agent should not do, leveraging the Einstein Trust Layer to ensure compliance with data privacy and ethical guidelines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Channel&lt;/strong&gt;: Identify where the agent will operate, whether on customer-facing platforms like WhatsApp or internally via tools like Slack.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These attributes ensure that each agent is highly specialized for its role, making them far more capable than traditional chatbots.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_c614280e93484ff7846febe0fe4fb751.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Real-World Use Cases: AgentForce in Action&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sales Automation&lt;/strong&gt;: An automotive company used AgentBuilder to create AI sales agents that track leads and autonomously execute follow-up emails, freeing up sales teams to focus on closing deals. This led to a 15% increase in lead conversions, thanks to more personalized and timely engagement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Optimization&lt;/strong&gt;: A telecommunications provider employed the Atlas Reasoning Engine to automatically triage incoming service tickets. The AI prioritized issues based on urgency and customer value, resulting in faster response times and improved customer satisfaction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Marketing Personalization&lt;/strong&gt;: Retailers are deploying AgentForce to analyze customer purchase behaviors, creating highly targeted promotions. By predicting product preferences and automating campaign launches, businesses have seen a 20% boost in click-through rates and revenue from AI-driven recommendations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Efficiency Gains: Driving Business Growth with AgentForce&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sales:&lt;/strong&gt; AI-driven follow-ups, lead scoring, and opportunity tracking eliminate much of the manual labor associated with sales pipelines. By autonomously managing routine tasks, AgentForce frees up sales reps to engage in more meaningful conversations with high-potential prospects.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt;: Automated ticketing and intelligent escalation systems ensure that customer issues are resolved more quickly, reducing wait times and boosting satisfaction. AI agents can even handle routine queries, letting human agents focus on more complex problems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Marketing&lt;/strong&gt;: Hyper-personalized campaigns, predictive insights, and automated content generation make it easier for marketers to reach the right customers with the right message at the right time. This reduces campaign costs and increases engagement metrics.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At Digital Hive, we are excited about the potential of AgentForce. Our experience with Data, CRM, and AI has shown us firsthand how these technologies can revolutionize business operations. Contact us to learn more about how AI, CRM and Agentforce can benefit your organization, so together we can embrace the future of Data, CRM and AI.&lt;/p&gt;
</content:encoded><category>crm-post</category><category>salesforce-posts</category></item><item><title>Tosca CRM implementation</title><link>https://www.digitalhive.be/post/tosca/</link><guid isPermaLink="true">https://www.digitalhive.be/post/tosca/</guid><description>Leveraging Microsoft Dynamics CRM for Unified Sales and Customer Service at Tosca.</description><pubDate>Thu, 05 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Client Overview&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.toscaltd.com/en-gb/&quot;&gt;&lt;em&gt;Tosca&lt;/em&gt;&lt;/a&gt; is a global leader in reusable packaging and supply chain solutions, offering products like reusable plastic containers and pallets. The company is committed to reducing environmental impact and enhancing efficiency by eliminating waste across the supply chain. Serving diverse industries, Tosca helps customers transition from single-use packaging to sustainable, reusable alternatives, supporting their sustainability and operational goals.&lt;/p&gt;
&lt;h2&gt;Project Overview&lt;/h2&gt;
&lt;p&gt;As Tosca extended its operations in EMEA, it faced the challenge of harmonizing business processes and systems across various countries. This expansion necessitated a cohesive approach to unify the company&amp;#39;s CRM solution and business processes.&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;The implementation of the new CRM system by Digital Hive faced several key challenges, each requiring tailored strategies for resolution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diverse User Preferences&lt;/strong&gt; presented a significant challenge, as each country within Tosca&amp;#39;s EMEA operations had developed unique systems and established business processes. Adapting users accustomed to these specific workflows was addressed by Digital Hive through a flexible implementation strategy. This approach accommodated various work styles, ensuring that the CRM system met the specific needs of different regions while maintaining overall consistency.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resistance to Change&lt;/strong&gt; is often a challenge in global CRM implementations, particularly from long-standing users hesitant to modify their established processes. Convincing stakeholders of the new system&amp;#39;s benefits during its early stages was crucial. Digital Hive tackled this by emphasizing a clear future vision and effectively communicating the advantages, thereby fostering a more positive outlook on the transition.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Increasing User Adoption&lt;/strong&gt; also became a crucial focus point. Post-implementation, many users had difficulties navigating the new system, and new team members required additional training. Digital Hive addressed this by investing in comprehensive training programs and implementing a &amp;quot;train the trainer&amp;quot; approach. This strategy, along with extensive workshops, enabled key users to assist their peers, supporting a seamless onboarding process and enhancing user confidence across the organization.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;To address these challenges, we structured our approach with the following components:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Key User Structure: Identifying and training key users in each region to act as local champions of the new system.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Train the Trainer Approach: Empowering selected individuals to train their colleagues, ensuring widespread knowledge dissemination.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Workshops with Countries: Conducting workshops tailored to each country’s specific needs and business processes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proper Release and Project Management: Launching the system in phases with clear project management guidelines to ensure smooth implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Quality Team: Establishing a team dedicated to maintaining high data quality across the new CRM system.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tosca&amp;#39;s commitment to unifying EMEA operations goes beyond just implementing a CRM system – it&amp;#39;s about empowering teams to work cohesively, leveraging a common framework. Our approach addresses the human aspect of a CRM implementation, understanding that change can be challenging. By showing adaptability, highlighting the benefits, and providing the necessary support, we&amp;#39;ve moved away from resistance into collaboration, ensuring a future where every user, regardless of their background, thrives with the Microsoft Dynamics CRM solution.&lt;/p&gt;
&lt;p&gt;The project successfully unified Tosca’s CRM and sales processes across the EMEA region. Our structured approach not only facilitated a smooth transition but also enhanced collaboration and efficiency. By addressing the human aspect of change, we helped Tosca create a cohesive and supportive environment, enabling all users to thrive within the new system.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Digital Hive&amp;#39;s partnership with Tosca in implementing Microsoft Dynamics CRM underscores our commitment to a tailored consulting approach that consider the unique needs of each client. We go beyond technology integration, focusing on change management and user support to ensure long-term success while leveraging system and industry best practices.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>microsoft-dynamics-365-cases</category></item><item><title>Embracing the Future with Salesforce’s Latest AI Innovations  </title><link>https://www.digitalhive.be/post/embracing-the-future-with-salesforce-s-latest-ai-innovations/</link><guid isPermaLink="true">https://www.digitalhive.be/post/embracing-the-future-with-salesforce-s-latest-ai-innovations/</guid><description>As a leading CRM consultancy, we are excited to share insights on the newest Salesforce capabilities that are set to revolutionize the way businesses operate. In this blog post, we will explore the integration of generative AI in CRM, the groundbreaking Salesforce Prompt Builder, the innovative Salesforce Co-Pilot, and provide best practices for implementation. Let’s dive in!</description><pubDate>Mon, 08 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;At Digital Hive, we pride ourselves on our commitment to transparency, trust, and a use case-first approach. As a leading CRM consultancy, we are excited to share insights on the newest Salesforce capabilities that are set to revolutionize the way businesses operate. In this blog post, we will explore the integration of generative AI in CRM, the groundbreaking Salesforce Prompt Builder, the innovative Salesforce Co-Pilot, and provide best practices for implementation. Let’s dive in!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_16ed3ec9f37a4ae5bfa86ee4225d7784.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Generative AI and Its Role in CRM&lt;/h2&gt;
&lt;p&gt;Generative AI, a subset of artificial intelligence, refers to systems capable of creating content, such as text, images, and more, based on a set of inputs. In the context of CRM, generative AI has the potential to transform customer interactions, streamline processes, and enhance decision-making. By leveraging vast amounts of data, generative AI can provide personalized responses, generate insightful reports, and automate repetitive tasks, thereby increasing productivity and improving customer satisfaction.&lt;/p&gt;
&lt;p&gt;The integration of generative AI in CRM means that businesses can now offer more personalized and engaging customer experiences. Imagine a scenario where AI drafts personalized emails for sales representatives, generates insightful analytics reports for managers, or even interacts with customers directly through chatbots, providing timely and accurate responses. The possibilities are endless and profoundly transformative.&lt;/p&gt;
&lt;h2&gt;Introducing Salesforce Prompt Builder&lt;/h2&gt;
&lt;p&gt;The Salesforce Prompt Builder is a revolutionary tool designed to help admins create, manage, and deploy customized prompts for generative AI within the Salesforce ecosystem. This no-code solution allows admins to craft reusable prompt templates that can dynamically incorporate CRM data, ensuring that AI-generated responses are contextually accurate and personalized.&lt;/p&gt;
&lt;h3&gt;Key Features of Prompt Builder:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Grounding Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first step in using Prompt Builder is to ground your prompts with relevant data from Salesforce or Data Cloud. This means connecting your prompt templates with the specific data fields and records that will provide context for the AI-generated responses. For example, a sales email prompt might pull in data about the recipient’s recent purchases, past interactions, and account status to generate a personalized and relevant message.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Template Management&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Admins can create and manage different types of prompt templates tailored to various business needs. These include:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sales Email Prompt Templates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Automatically create emails for users by incorporating grounded data. These prompts can be used in the Email Composer to draft personalized emails to Contacts, Leads, or Person Accounts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Field Generation Prompt Templates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Populate a single field on a single record with a summary or description created by an LLM. This is useful for generating case summaries or status updates directly within Salesforce records.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flex Prompt Templates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create prompts that incorporate records from multiple objects simultaneously, allowing for complex data-driven prompts that can be used across various workflows and processes.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Testing and Refinement&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Generative AI responses can vary, so it’s crucial to test and refine prompts to ensure they meet the desired quality. Prompt Builder provides tools for previewing and fine-tuning prompts using actual CRM data. Admins can specify which LLM model to use or bring their own model to further tailor the responses.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Secure Deployment&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Einstein Trust Layer ensures that all data used in prompts is securely masked, and sensitive information such as personally identifiable information (PII) remains protected. This layer guarantees that any data shared with the LLM is not stored or used for training purposes, maintaining high standards of data security and privacy.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_050a0e49a82b4d95a44c3d66e5ba620b.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Unveiling Salesforce Co-Pilot&lt;/h2&gt;
&lt;p&gt;Salesforce Co-Pilot is an advanced AI-driven assistant designed to work seamlessly within the Salesforce platform. Co-Pilot helps users navigate complex workflows, provides real-time insights, and automates routine tasks. By leveraging generative AI, Co-Pilot can draft emails, generate reports, and even suggest next best actions based on historical data and current context.&lt;/p&gt;
&lt;h3&gt;Benefits of Salesforce Co-Pilot&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Productivity&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Co-Pilot automates repetitive tasks, allowing users to focus on high-value activities. For example, sales representatives can use Co-Pilot to draft follow-up emails after a meeting, freeing up time to focus on strategic planning and customer engagement.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Improved Accuracy&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By generating precise and relevant content, Co-Pilot reduces the risk of errors and inconsistencies. This is particularly useful in scenarios like customer support, where accurate and timely information is crucial.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Seamless Integration&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Co-Pilot works within the existing Salesforce environment, ensuring a smooth user experience. Whether it’s suggesting next best actions during a sales call or providing real-time insights on customer data, Co-Pilot integrates effortlessly into daily workflows.&lt;/p&gt;
&lt;h3&gt;Capabilities of Salesforce Co-Pilot&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Email Drafting&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Co-Pilot can draft personalized emails based on previous interactions, customer preferences, and contextual data. This ensures that every communication is relevant and tailored to the recipient.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Report Generation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Managers can rely on Co-Pilot to generate detailed reports, highlighting key metrics and insights. This helps in making data-driven decisions without the need for extensive manual data analysis.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Task Automation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Co-Pilot can automate routine tasks such as updating records, scheduling follow-up actions, and managing to-do lists, ensuring that nothing falls through the cracks.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Real-Time Recommendations&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;During customer interactions, Co-Pilot can suggest relevant products or solutions based on the customer’s history and current needs, enhancing the overall customer experience.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.digitalhive.be/images/blog/9e4025_f626c7c23ff04ec2b4604aef7b25583a.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Best Practices for Implementing Salesforce’s AI Capabilities&lt;/h2&gt;
&lt;p&gt;To maximize the benefits of Salesforce’s AI innovations, consider the following best practices:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Define Clear Objectives&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Establish clear goals for what you want to achieve with generative AI. Whether it’s improving customer service response times, enhancing sales email personalization, or automating routine tasks, having defined objectives will guide your implementation strategy.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Start with a Pilot&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Begin with a small-scale pilot project to test the functionality and gather feedback. This approach allows for adjustments before a full-scale rollout. Identify a specific use case, such as automating follow-up emails for a particular sales team, and measure the impact on productivity and customer engagement.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Leverage Existing Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ensure your CRM data is clean, accurate, and up-to-date. High-quality data is crucial for generating meaningful AI responses. Conduct regular data audits and cleansing activities to maintain data integrity.&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Involve Stakeholders&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Engage key stakeholders from different departments to ensure the AI solutions meet the needs of various users. Regularly communicate the benefits and progress of the AI implementation to gain buy-in and support.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;Monitor and Refine&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Continuously monitor the performance of AI-driven tools and refine prompts and workflows based on user feedback and performance metrics. Use analytics to track the effectiveness of AI responses and make necessary adjustments to improve accuracy and relevance.&lt;/p&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;&lt;strong&gt;Ensure Data Security and Privacy&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With the increasing reliance on AI, it’s vital to prioritize data security and privacy. Use Salesforce’s Einstein Trust Layer to mask sensitive data and ensure compliance with data protection regulations.&lt;/p&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;&lt;strong&gt;Provide Training and Support&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Equip your team with the knowledge and skills needed to leverage AI tools effectively. Offer training sessions, create user guides, and provide ongoing support to ensure a smooth transition and maximize the benefits of AI integration.&lt;/p&gt;
&lt;ol start=&quot;8&quot;&gt;
&lt;li&gt;&lt;strong&gt;Foster a Culture of Innovation:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Encourage experimentation and innovation within your organization. Allow teams to explore new ways of using AI to solve problems and improve processes. Create a feedback loop where users can share their experiences and suggestions for further enhancements.&lt;/p&gt;
&lt;h2&gt;Use Cases and Practical Examples&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Sales Email Personalization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Imagine a sales team needing to send personalized follow-up emails to prospects. Using Salesforce Prompt Builder, admins can create a custom email prompt template that pulls in relevant data such as the prospect’s name, company, and recent interactions. The generative AI then drafts a personalized email, allowing sales representatives to send tailored messages quickly and efficiently. This not only saves time but also ensures that each email is relevant and engaging, increasing the likelihood of a positive respnse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customer Support Summaries&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer support agents often need to summarize case details for internal reporting. With the Field Generation prompt template, agents can click a button next to a case field to generate a concise summary of all open cases related to an account. This automation saves time and ensures consistency in reporting. For example, an agent can quickly generate a summary of all ongoing support cases for a major client, providing a clear overview for management meetings or strategic discussions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Product Recommendations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using Salesforce Co-Pilot, a retail company can provide personalized product recommendations to customers based on their purchase history and preferences. For instance, when a customer contacts support, Co-Pilot can suggest relevant products or services, enhancing the customer experience and driving sales. A customer who recently purchased a new smartphone might receive recommendations for compatible accessories, extended warranties, or special offers on related products.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Task Automation in Sales&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A sales manager can use Salesforce Co-Pilot to automate the task of updating lead statuses and scheduling follow-up actions. For instance, after a sales call, Co-Pilot can automatically update the lead status in Salesforce, schedule a follow-up email for two days later, and set a reminder for the sales representative to check in with the lead after a week.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-Time Insights for Marketing Campaigns&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Marketing teams can use Salesforce Co-Pilot to gain real-time insights into the performance of their campaigns. By analyzing data from various sources, Co-Pilot can provide actionable recommendations on how to optimize campaigns for better results. For example, if a particular email campaign is underperforming, Co-Pilot might suggest adjusting the subject line, targeting a different audience segment, or sending the email at a different time.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Salesforce’s latest AI capabilities, including the Prompt Builder and Co-Pilot, are poised to transform the CRM landscape. By integrating generative AI, businesses can enhance productivity, improve customer interactions, and make data-driven decisions with ease. At Digital Hive, we are excited to help our clients harness these innovative tools to achieve their business goals. Embrace the future of CRM with Salesforce’s generative AI and take your customer relationship management to new heights.&lt;/p&gt;
&lt;p&gt;For more information on how Digital Hive can assist you in implementing these cutting-edge solutions, contact us today!&lt;/p&gt;
</content:encoded><category>crm-post</category><category>salesforce-posts</category></item><item><title>Salesforce &amp; IQVIA: Partnership to transform Life Science Engagement  </title><link>https://www.digitalhive.be/post/salesforce-iqvia-partnership/</link><guid isPermaLink="true">https://www.digitalhive.be/post/salesforce-iqvia-partnership/</guid><description>In a groundbreaking move, Salesforce and IQVIA have announced a significant expansion of their global partnership, aimed at accelerating the development of Life Sciences Cloud. This collaboration marks a pivotal moment in the evolution of customer engagement within the life sciences industry.</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;**In a groundbreaking move, Salesforce and IQVIA have announced a significant expansion of their global partnership, aimed at accelerating the development of Life Sciences Cloud. This collaboration marks a pivotal moment in the evolution of customer engagement within the life sciences industry. **&lt;/p&gt;
&lt;p&gt;At the heart of this partnership lies the integration of IQVIA’s Orchestrated Customer Engagement (OCE) innovations into Salesforce’s Life Sciences Cloud. This strategic amalgamation promises to deliver a single, trusted, end-to-end engagement platform that revolutionizes how life sciences organizations interact with healthcare professionals and patients alike.&lt;/p&gt;
&lt;p&gt;The synergy between IQVIA’s expertise in data, analytics, and technology and Salesforce’s prowess in AI CRM sets the stage for a transformative journey. By leveraging IQVIA’s OCE platform, Salesforce’s Life Sciences Cloud aims to redefine customer engagement, offering unparalleled insights and personalized experiences to users across the globe.&lt;/p&gt;
&lt;p&gt;This collaboration is not just about technology integration; it’s about empowering life sciences organizations to make informed decisions, drive innovation, and ultimately improve patient outcomes. Through this partnership, customers can expect enhanced capabilities, streamlined processes, and a deeper understanding of their target audiences. Key elements of the expanded partnership include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;IQVIA licensing the OCE CRM software to Salesforce.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaborative efforts to expedite the development of Life Sciences Cloud for enhanced customer engagement, expected to be available in 2025.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continued support for IQVIA’s existing OCE customers, totaling nearly 400 across 130+ countries, until 2029.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Joint marketing initiatives to promote the new offering, demonstrating a seamless transition from IQVIA’s OCE to Salesforce’s advanced life sciences solution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bernd Haas, SVP and Head of Digital Products and Solutions at IQVIA, emphasizes the shared vision of bringing the best of both worlds to life sciences customers. He highlights the commitment to innovation across various healthcare verticals, ensuring that the partnership delivers tangible value at every step of the journey.&lt;/p&gt;
&lt;p&gt;Frank Defesche, SVP and General Manager, Life Sciences at Salesforce, echoes this sentiment, underlining the transformative potential of the collaboration. He envisions a future where life sciences organizations have access to a unified, intelligent platform that enables orchestrated and personalized engagement with their customers.&lt;/p&gt;
&lt;p&gt;As we embark on this exciting journey, we invite you to join us in shaping the future of life sciences engagement. Together, we’re redefining what’s possible in the world of customer engagement within the life science industry, one innovation at a time.&lt;/p&gt;
&lt;p&gt;Stay tuned for further updates or reach out to our industry expert:&lt;/p&gt;
</content:encoded><category>crm-post</category><category>salesforce-posts</category></item><item><title>Migrating multiple legacy systems into a cloud data warehouse at Essent</title><link>https://www.digitalhive.be/post/migrating-multiple-legacy-systems-into-a-cloud-data-warehouse-at-essent/</link><guid isPermaLink="true">https://www.digitalhive.be/post/migrating-multiple-legacy-systems-into-a-cloud-data-warehouse-at-essent/</guid><description>At Essent NL, the goal to migrate multiple legacy systems into a cloud data warehouse is driven by the organization&apos;s strategic move towards cloud technology adoption, compounded by end-of-life considerations for aging technologies. We worked together with Essent to tackle their challenges with a focus on improving the Snowflake platform and standardizing the data transformation practices.</description><pubDate>Mon, 29 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Essent is among the biggest energy companies in the Netherlands. The energy industry has been evolving rapidly for years now. So, to keep up with all the changes they are innovating their data landscape by migrating data from older, outdated systems to a modern cloud platform to make data more accessible and efficient for the business. This comes with significant challenges, both technical and organizational.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Challenge&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;At Essent NL, the goal to migrate multiple legacy systems into a cloud data warehouse is driven by the organization&amp;#39;s strategic move towards cloud technology adoption, compounded by end-of-life considerations for aging technologies. An additional driver is the commitment to implementing a data mesh approach, where teams take ownership of their own data, to create a more flexible and decentralized way of working. Which brings along a challenge of reorganizing and change management on its own.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;We worked together with Essent to tackle their challenges with a focus on improving the Snowflake platform and standardizing the data transformation practices.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Streamlining data ingestion&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To enable the decommissioning of the outdated systems, we were responsible for the data ingestion of multiple sources into Snowflake. With a focus on efficiency, we improved the ingestion process and developed a Python tool for code generation to speed up dbt development. The Snowflake ingestion team can now make new data available in less than a day.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Standardizing data transformation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To improve the data landscape, Essent has now adopted dbt as the default data transformation tool. This way the transformation is standardized, and the ownership and development of all transformations are decentralized with each team being responsible for their data. In order to get this implemented, we helped organize workshops and training sessions to get more teams on board with dbt. Thereby playing our role in the organizational challenge of moving to a data mesh approach.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Implementing the logical data model&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Next to ingesting new data and maintaining the Snowflake environment, our team also implemented the logical data model. The DMO (Data Management Office) discusses all entities in this model with the right stakeholders, ensuring the presentation of the data follows the company definitions and standards, ready to gather new insights through dashboarding and analysis.&lt;/p&gt;
&lt;h3&gt;&amp;quot;Digital Hive helped Essent with a quality injection within the Essential Insights team. They brought on a Senior Data Engineer that seamlessly integrated within the team. Additionally, it was proposed to bring in a junior counterpart which expanded the capabilities of the team even more. Their collaborative efforts have added significant value to our data operations.&amp;quot;&lt;/h3&gt;
&lt;h3&gt;Anthony Roes&lt;/h3&gt;
&lt;h3&gt;Product Owner Essential Insights&lt;/h3&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;Looking back at our project at Essent, we have empowered the organization to make better data-driven decisions. Our role in the ingestion process has significantly improved the time to make data available. The integration of dbt as the default transformation tool has standardized the way-of-working and decentralized the data transformation efforts, creating a strong culture of ownership and accountability across teams. These changes have successfully helped Essent forward in current challenges, ready to adapt for future innovations in the energy industry.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>customer-cases-data</category></item><item><title>ITZU</title><link>https://www.digitalhive.be/post/_itzu/</link><guid isPermaLink="true">https://www.digitalhive.be/post/_itzu/</guid><description>Enhance brand communication and create engaging materials for internal and external audiences.</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Design and branding, content creation and distribution, and advertising.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;ITZU Group sought to strengthen its online presence through effective social media management and support for the upcoming Hura rebranding. The challenge was to enhance brand communication and create engaging materials for internal and external audiences.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;Our tailored solutions for ITZU&amp;#39;s social media and rebranding support included:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social media management&lt;/strong&gt; Managed social media accounts for brands like EAZER and ITZU Talent Solutions, creating engaging content and optimizing LinkedIn pages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Graphic design and branding&lt;/strong&gt; Contributed to internal communication through the design of various materials, including flyers and documents. Designed social media templates for the forthcoming Hura rebranding.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strategic participation&lt;/strong&gt; Engaged in strategic meetings to align social media efforts with overall business objectives.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Website enhancement (Drupal)&lt;/strong&gt; Updating and refining the EAZER website, utilizing the Drupal platform. This included implementing changes to improve user experience.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The collaboration with ITZU Group led to great achievements. Elevated social media presence with increased engagement and brand awareness. Successful internal communication through visually appealing materials. Contribution to the smooth rebranding process, ensuring a consistent and appealing brand image.&lt;/p&gt;
&lt;p&gt;These accomplishments underscore our commitment to not only meeting specific goals but also being a reliable and flexible partner that adapts swiftly to the dynamic needs of our clients.&lt;/p&gt;
</content:encoded><category>customer-cases-marketing</category><category>all-cases</category></item><item><title>BestBuro</title><link>https://www.digitalhive.be/post/bestburo/</link><guid isPermaLink="true">https://www.digitalhive.be/post/bestburo/</guid><description>Design and branding, content creation and distribution, and advertising for BestBuro.</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Design and branding, content creation and distribution, and advertising.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;At BestBuro, they believe in transforming knowledge into growth. Their mission is to enhance well-being and drive business success by teaching ifficient working practices. Through their innovative approach, BestBuro equips individuals and organizations with the tools they need to thrive in today&amp;#39;s fast-paced world.&lt;/p&gt;
&lt;p&gt;They wanted to elevate their overall marketing strategy and execution. The primary challenge extended beyond conventional marketing goals; it was to find a high-quality partner with comprehensive (digital) marketing expertise capable of flexibly adapting to ad hoc needs and dynamically evolving requirements.&lt;/p&gt;
&lt;h2&gt;Approach&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Content creation and distribution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Executing a comprehensive content strategy, social media posts, engaging blog content, and weekly/monthly newsletters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Design and branding:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Utilizing creative tools like Adobe InDesign and Illustrator to design visually appealing training guides and Efficiency Planners, perfectly aligned with BestBuro&amp;#39;s brand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advertising campaigns:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Launching targeted advertising campaigns to boost brand visibility, drive website traffic, and enhance conversions.&lt;/p&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The implementation of our consultancy services showcase adaptability:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adaptability in task prioritization:&lt;/strong&gt; Demonstrating the ability to prioritize tasks based on changing client needs, ensuring seamless collaboration and project execution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic focus adjustment:&lt;/strong&gt; Flexibly adjusting our focus to align with evolving client priorities, showcasing agility in meeting unique business requirements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Client-centric approach:&lt;/strong&gt; Prioritizing client satisfaction through a tailored and client-centric approach, ensuring our services align precisely with the unique marketing requirements of BestBuro.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content:encoded><category>customer-cases-marketing</category><category>all-cases</category></item><item><title>BooSt</title><link>https://www.digitalhive.be/post/boost/</link><guid isPermaLink="true">https://www.digitalhive.be/post/boost/</guid><description>Created a user-friendly website and seamless webshop, integrating diverse features for optimal user experience for BooSt Body &amp; Skin Lummen.</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;BooSt Body &amp;amp; Skin, a skin improvement and weight loss center in Lummen, sought a comprehensive online presence to showcase its offerings. The challenge was to create a user-friendly website and seamless webshop, integrating diverse features for optimal user experience and efficient sales transactions.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;We embarked on a journey to transform BooSt&amp;#39;s digital landscape. Key solutions included:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End-to-end website development&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Crafted a visually appealing website on Wix, ensuring a modern design aligned with BooSt&amp;#39;s brand identity. Implemented a user-friendly navigation structure for easy exploration of services and products.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrated webshop (Ecwid)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Integrated their webshop in Ecwid, enabling BooSt to manage inventory, process orders, and provide a seamless shopping experience for their clients.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile optimization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ensured mobile responsiveness, catering to the growing number of users accessing the website and webshop via mobile devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategic branding&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Aligned the website design with BooSt&amp;#39;s brand, creating a cohesive and professional online presence.&lt;/p&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The initial impact showcases a website that not only meets BooSt&amp;#39;s aesthetic aspirations but also establishes a strong foundation for customer engagement and satisfaction. The website now stands ready to welcome a broader audience seeking personalized solutions for their skin and body wellness needs.&lt;/p&gt;
&lt;p&gt;The website serves as a central hub for customers to explore BooSt&amp;#39;s services, book an appointment easily and make purchases effortlessly.&lt;/p&gt;
</content:encoded><category>customer-cases-marketing</category><category>all-cases</category></item><item><title>Embocraft CRM &amp; Stock Management</title><link>https://www.digitalhive.be/post/embocraft-crm-stock-management/</link><guid isPermaLink="true">https://www.digitalhive.be/post/embocraft-crm-stock-management/</guid><description>Embocraft: Enhancing Sales Operations and Stock Management with Salesforce.</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Embocraft: Enhancing Sales Operations and Stock Management with Salesforce.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;Embocraft specializes in selling medical devices, particularly catheters. With a focus on supporting their sales team and streamlining operations, Embocraft identified several challenges:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Supporting Sales Team:&lt;/strong&gt; Enhancing sales operations to better support the sales team in effectively managing customer relationships and driving revenue.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprehensive Customer Information:&lt;/strong&gt; Developing a 360-degree database for healthcare professionals (HCPs), including their department, hospital affiliations, communication history, and activity tracking.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stock Management:&lt;/strong&gt; Improving stock management processes by tracking product inventory, monitoring stock levels at customer sites, conducting stock counts, and generating invoices for orders.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;To address these challenges, Embocraft implemented Salesforce Professional with Sales Cloud, offering a robust solution to streamline sales operations and stock management. Key components of the solution include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Salesforce Professional:&lt;/strong&gt; Leveraging the Salesforce Professional edition, Embocraft gained access to powerful sales and CRM tools to optimize their sales processes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sales Cloud:&lt;/strong&gt; Implementing Sales Cloud allowed Embocraft to track customer interactions, manage accounts and opportunities, and drive sales productivity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;HCP Database:&lt;/strong&gt; Developing a comprehensive HCP database within Salesforce enabled Embocraft to gain insights into healthcare professionals&amp;#39; preferences, interests, and engagement history. This 360-degree view facilitates targeted communication and relationship management.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stock Management Module:&lt;/strong&gt; Implementing a custom stock management module within Salesforce allowed Embocraft to efficiently track product inventory, monitor stock levels at customer sites, conduct stock counts, and generate invoices seamlessly.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The implementation of Salesforce Professional with Sales Cloud has yielded tangible results for Embocraft. With enhanced sales operations and a comprehensive HCP database, the sales team can better manage customer relationships, resulting in increased sales revenue. Additionally, the streamlined stock management module has improved inventory control and invoicing processes, leading to greater operational efficiency.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>salesforce-cases</category></item><item><title>Abbvie</title><link>https://www.digitalhive.be/post/abbvie/</link><guid isPermaLink="true">https://www.digitalhive.be/post/abbvie/</guid><description>A Salesforce Health Cloud implementation within Immunology and Neuroscience at AbbVie.</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A Salesforce Health Cloud implementation within Immunology and Neuroscience at &lt;a href=&quot;https://www.abbvie.be/nl.html&quot;&gt;&lt;em&gt;AbbVie&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Within the Exceptional Patient Experience (EPE) division at AbbVie, there were multi)faceted challenges that could have significant implications on AbbVie&amp;#39;s ability to deliver optimal patient care, maintain regulatory compliance, and uphold its position as a leader in the pharmaceutical industry. Some key issues included:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expansion of Health Cloud for Neuroscience:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The expansion of Health Cloud for the Neuroscience department was crucial for advancing patient care and research in neurological treatments. However, the challenge lay in seamlessly integrating and scaling the functionality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Launch and Expansion of the Mobile App in 2022 and 2023:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Successfully launching the mobile app in 2022 and subsequently expanding it in 2023 were critical for AbbVie&amp;#39;s patient engagement strategy. The app aimed to provide patients with accessible and personalized healthcare resources, thereby fostering better adherence to treatment plans and improving overall patient outcomes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integration of AE/PQC with Trilogy:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The integration of Adverse Events (AE) and Product Quality Complaints (PQC) with Trilogy represented a crucial aspect of pharmacovigilance and quality management. A seamless integration was essential for efficient tracking, reporting, and resolution of adverse events and product quality concerns.&lt;/p&gt;
&lt;p&gt;Addressing these challenges required a holistic approach that considered both technological solutions and their broader impact on business operations and patient outcomes.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;To overcome these challenges and enhance patient care and operational efficiency, our team implemented a comprehensive solution through our expertise in Salesforce Health Cloud. The approach included:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patient Onboarding and Care Plan Maintenance:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Nurses were tasked with enrolling patients into the system with detailed care plans, encompassing medications, pump configurations, dosages, and ongoing care plan phases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maintaining the continuity and accuracy of care plans for patients, particularly those on long-term and home-based treatments, required a systematic approach.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Business Analysis and Support:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Working closely with operational managers, we acted as a supportive business analyst, conducting follow-ups on demands, incidents, complaints, and requests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Weekly calls with cross-functional teams ensured effective communication and issue resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Training and Knowledge Transfer:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Conducted training sessions, for new business units and regions, to empower the client&amp;#39;s team in managing and utilizing Salesforce Health Cloud effectively.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Technology Integration:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Addressing the integration question, we explored possibilities to integrate with other systems such as Veeva CRM, ensuring a seamless connection between different systems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Other integrations included handling Adverse Events, Product Quality Complaints, and Computer Telephony Integration (CTI) for calls.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;KPI Reporting:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Providing monthly and weekly Immunology and Mobile App Key Performance Indicator (KPI) reports to BTS was essential for monitoring and assessing the performance of the Salesforce Health Cloud system.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;Our efforts yielded remarkable results and bolstered AbbVie&amp;#39;s patient engagement strategy. Patients gained access to personalized healthcare resources, fostering better treatment plan adherence and overall improved patient outcomes. The project achieved notable milestones such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Onboarding Health Cloud in &lt;strong&gt;3 countries&lt;/strong&gt; and the Mobile App in &lt;strong&gt;2 new countries&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Four global product readiness releases&lt;/strong&gt; enhancing overall system stability and functionality.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Activation of new products in Europe, covering &lt;strong&gt;7 countries&lt;/strong&gt; (JP, IL, DE, NL, AT, SE, FI).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Three major releases in 2023&lt;/strong&gt;, further refining the system and addressing evolving needs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Successful migration of AU&amp;#39;s entire data to Health Cloud Neuroscience.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These accomplishments signify a substantial improvement in patient engagement, operational efficiency, and the overall digital experience for both healthcare providers and patients within the Salesforce Health Cloud framework, and allows AbbVie to remain a market leader within the pharmaceutical industry.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>salesforce-cases</category></item><item><title>Belgisch Centrum voor Geleidehonden VZW</title><link>https://www.digitalhive.be/post/belgisch-centrum-voor-geleidehonden-vzw/</link><guid isPermaLink="true">https://www.digitalhive.be/post/belgisch-centrum-voor-geleidehonden-vzw/</guid><description>Salesforce configuration, low code, and custom development to enable Vets to follow up on the whole breeding cycle for BCG.</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Salesforce configuration, low code, and custom development to enable Vets to follow up on the whole breeding cycle from measurement of progesterone till the last day the puppies stay in the breed.&lt;/p&gt;
&lt;h2&gt;Challenge&lt;/h2&gt;
&lt;p&gt;BCGs mission is to raise and train exceptional dogs that have the potential to become lifelong companions for visually impaired individuals. However, managing the breeding process efficiently while maintaining accurate records posed significant challenges. The unpredictability of puppy litter sizes compounded the complexity of capturing vital data such as nutrition, weight, vaccinations, and medical records. Recognizing the need for an innovative solution, we sought to streamline data management for our dedicated veterinarians so they could work on their tasks in a more efficient manner such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Breeding dogs and managing external veterinarians.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring the health and well-being of mother dogs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leverage the breeding module to ensure the health and readiness of puppies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Placing dogs with visually impaired individuals.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supporting individuals in their daily activities.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;To address these challenges, we developed a custom solution on the Salesforce platform, leveraging low code and Lightning Web Components (LWC). Our solution focuses on enabling veterinarians to efficiently manage the entire breeding cycle, from initial measurements of progesterone to the care of new-born puppies. Key components of our solution include:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Custom Lightning Web Components:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We created custom Lightning web components to simplify data entry for various objects on a single page, allowing veterinarians to manage multiple dogs simultaneously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lightning Flows with Invocable Apex:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Following Salesforce best practices, we utilized Salesforce Flows for automation within the breeding module. In cases where Flows were insufficient, we implemented a hybrid solution combining Flows and Apex to ensure seamless automation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comprehensive Reporting:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our system provides operational and management-level reports, offering real-time insights into breeding activities. These reports enable informed decision-making and facilitate smooth operational workflows.&lt;/p&gt;
&lt;p&gt;What sets our solution apart is our well-thought-through to ensure that the efficiency of data input does not compromise the integrity of our data model. This not only guarantees the accuracy and reliability of the information but also allows for the creation of comprehensive reports across various organizational levels.&lt;/p&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;Our solution has significantly improved the efficiency and effectiveness of the breeding process at BCG. By centralizing data management and automating repetitive tasks, veterinarians can now focus more on the well-being of the dogs. The seamless integration of Lightning Web Components and Flows has reduced administrative burdens and improved overall productivity. Additionally, our robust reporting capabilities provide valuable insights for both operational and strategic decision-making.&lt;/p&gt;
&lt;p&gt;We continue to provide support and enhancements to the breeding module, ensuring it meets the evolving needs of BCG. With our solution in place, BCG can better target donors and individuals interested in dog training programs. While we considered Salesforce Non-profit Success Pack, our tailored solution proved more suitable for their specific requirements, demonstrating our commitment to out use-case first approach which delivers the highest business value for BCG, while choosing the right solutions.&lt;/p&gt;
</content:encoded><category>all-cases</category><category>crm-case</category><category>salesforce-cases</category></item></channel></rss>