Endjin - Home

endjin blogs

We help small teams achieve big things.

If you’ve been keeping up with Build you are probably aware of the announcements around Azure Synapse Analytics. If you have, or are about to invest in Databricks the new Synapse Spark offering is likely to have grabbed your attention and rightly so. Why is Microsoft putting yet another Spark offering on the table and […]


For years we have been building modern cloud data solutions on Azure and helping our customers transform their use of data to drive outcomes. Here are 5 reasons why Azure Synapse Analytics might just be the service that we have been crying out for.


Power BI Embedded is a great tool for ISVs offering a BI product for their customers. Generally, the reports exposed to the customers are personalized to some extent – one can use the Power BI JavaScript library to interact with the reports and tweak the visuals based on the logged-in user. Another way reports differ from user to user is the underlying data that user is allowed to see. This is controlled using Row-level Security.

A standard method to implement Row-level security is to pass the user’s email address to the data model, and have rules filter the data model appropriately based on the data that user is permitted to see. However, sometimes it can be useful to filter the data model based on more than just a user’s email address. This blog indicates how to modify an Embed Request (made by Power BI Embedded) to provide additional context on what data the embedding application would like to be returned for a user to view on a report.


It is possibly that I have only recently discovered one of my favourite pieces of UX whilst on lockdown – Mobile cheques deposits via digital imaging in my banking app. In this short post I share my experience of discovering a simple but practical piece of UX that made me happy.


C# 8.0 nullable references enable us to annotate our code with information that lets the compiler discover possible null-related bugs. The AllowNull attribute lets us get more expressive with properties and generics.


With a lot of people all over the world suddenly finding themselves working remotely, I thought I’d share some thoughts on what I think is one of the most challenging parts of a company going fully remote: maintaining relationships. Relationships within a team can be difficult to maintain at the best of times. Howard showed […]

Category: Culture 1 Comment

Configuring model properties in Power BI allows you to create a model which is far more discoverable and is able to better support the visualisations you need. There are several different model properties which can be configured, some of these focus on discoverability whilst others allow you to alter the ways in which data is sorted/displayed/summarised in the reports.


C# 8.0 nullable references enable us to annotate our code with information that lets the compiler discover possible null-related bugs.

Category: Development

Whilst “read/write XMLA endpoint” might seem like a technical mouthful, its addition to Power BI is a significant milestone in the strategy of bringing Power BI and Analysis Services closer together. As well as closing the gap between IT-managed workloads and self-service BI, it presents a number of new opportunities for Power BI developers in terms of tooling, process and integrations. This post highlights some of the key advantages of this new capability and what they mean for the Power BI developer.


If, like me, you often find yourself unable to decide how to spend your time productively, it might be worth giving this post a read! Here Carmel runs through some of the things to consider when deciding which task to tackle next. These tasks can be anything from “send out finance report”, to “call mum”, to “decide where to go on holiday next year”. We have a huge amount of options when deciding how to spend our time, so here are some strategies for whittling down that choice!

Category: Culture 1 Comment

Improve the already-great Windows Terminal experience by following these tips for customizing the application to work best for you.


C# 8.0’s nullable references feature dramatically changes a fundamental aspect of the language. In this post, Ian explains how to you can soften the impact by enabling gradually across your projects.


Azure Key Vault is used to protect encryption keys and secrets. These keys and secrets can be used to access encrypted data and protected services. Individual Key Vaults can be used to preserve security information for isolating keys and secrets. The keys stored can be either hardware or software protected. Access to the keys and secrets is controlled using Azure Active Directory, RBAC and access policies.


Learning DAX and Power BI – CALCULATE

by Carmel Eve

This is the final blog in a series about DAX and Power BI. This post focuses on the CALCULATE function, which is a unique function in DAX. The CALCULATE function has the ability to alter filter contexts, and therefore can be used to enable extremely powerful and complex processing. This post covers some of the most common scenarios for using CALCULATE, and some of the gotchas in the way in which these different features interact!


Despite being inherently difficult to test, the need to validate data modelling, business rules and security boundaries in Power BI reports is important, as well as the need for ensuring that quality doesn’t regress over time as the insights evolve. This post explains that, by connecting to the underlying tabular model, it is possible to execute scenario-based specifications to add quality gates and build confidence in Power BI reports, just as any other software project.


In order to effectively work with our data in Power BI we need to structure the model as best to support the representations we need. This process is called data modelling. Data modelling includes loading, shaping, cleansing and enhancing the data.

This post runs through some of the important steps used in data modelling, and gives an example of loading and shaping data using Power BI.


I doubt that it’s escaped anyone’s notice that we have suddenly been thrown into a world which is pretty unrecognisable from that of even a few weeks ago. And I don’t think any of us can claim to be managine it well all of the time, but in this post Carmel runs through some of the strategies and coping mechanisms which have helped her adjust.

Category: Culture

C# 8.0 nullable references: inferred (non-)nullness

by Ian Griffiths

C# 8.0 has two related but distinct notions of nullability. In this article, Ian explains why inferred nullness is a vitally important part of the language’s new Nullable References feature.


This is the sixth blog in a series about DAX and Power BI. This post focuses on relationships and related tables. These relationships allow us to build up intricate and powerful models using a combination of sources and tables. The use of relationships in DAX powers many of the features around slicing and page filtering of reports.


Jess and Carmel recently gave a talk at Azure Oxford on “Combatting illegal fishing with Machine Learning and Azure – for less than £10 / month). The recording of that talk is now available for viewing!

The talk focuses on the recent work we completed with OceanMind. They run through how to construct a cloud-first architecture based on serverless and data analytics technologies and explore the important principles and challenges in designing this kind of solution. Finally, we see how the architecture we designed through this process not only provides all the benefits of the cloud (reliability, scalability, security), but because of the pay-as-you-go compute model, has a compute cost that we could barely believe!


1 2 3 22