Press "Enter" to skip to content

Day: April 16, 2026

What’s New in R 4.6.0

Russ Hyde has a summary:

R 4.6.0 (“Because it was There”) is set for release on April 24th 2026. Here we summarise some of the more interesting changes that have been introduced. In previous blog posts, we have discussed the new features introduced in R 4.5.0 and earlier versions (see the links at the end of this post).

Once R 4.6.0 is released, the full changelog will be available at the r-release ‘NEWS’ page. If you want to keep up to date with developments in base R, have a look at the r-devel ‘NEWS’ page.

Click through for the highlights.

Leave a Comment

Applying the Pareto Principle to Query Store

Erik Darling channels an Italian economist:

In this video, I dive into an old-school approach to identifying SQL Server performance issues using SP Quickie Store and a novel method inspired by the Pomodoro [“Pareto” – ed] technique. Traditionally, Query Store surfaces queries that consumed a lot of CPU over the last seven days, but often these results are too broad for practical use. To address this, I’ve developed a multi-dimensional scoring system that evaluates queries based on their impact across several key metrics: CPU usage, duration, physical reads, writes, and executions. This approach helps pinpoint the most problematic queries more accurately, even when they run outside of typical working hours or are unparameterized. By sharing these insights, I hope to provide a practical tool for SQL Server administrators looking to optimize their databases without relying solely on modern monitoring tools.

The AI generated summary reminds me that I’ve been working for 25 minutes, so time to take a break.

I like the idea of calculating and calculating & displaying impact scores, as well as breaking it down into core components.

Leave a Comment

Preventing SQL Injection in Stored Procedures

Vlad Drumea fixes a procedure:

In the past few years, I’ve seen quite a few stored procedures that rely on dynamic T-SQL without properly guarding for SQL injection.

Some cases were reporting stored procedures, while others were maintenance type stored procedures (e.g. stats updates) that could be kicked off from the app, or even stored procedures that handled app upgrades/patching.

In all these cases, certain portions of the dynamic T-SQL relied on input provided by users via input parameters.

Read on for an example. The solution is still the classic combination of QUOTENAME() and sp_execute_sql whenever you have user input.

Leave a Comment

When Fabric Mirroring Doesn’t Copy Rows

Koen Verbeeck troubleshoots an issue:

A short blog post about an issue with Fabric Mirroring (with Azure SQL DB as the source) that I’ve managed to run into, twice. I’ve set up mirroring by creating a connection using a service principal and this principal has the proper permissions on the source database. Configuring the replication was without issues, and the replication status went from “starting” to “running”. However, no rows were being copied. The tables were all listed in the monitoring pane, but the counters of “rows replicated” remained at zero. There were no errors in the logs (in OneLake) and nothing suspicious was mentioned in the monitoring.

This was a rather pernicious issue. Based on Koen’s explanation, it sounds like there’s no way to know what the actual problem was.

Leave a Comment

Tracking Changes in Power BI Semantic Models

Jens Vestergaard wants to know who moved his cheese:

Semantic models do not have version control. Not really. You can store .pbip files in Git, and Tabular Editor gives you a .bim file you can diff, but neither of those workflows answers the simplest question a team asks after an update cycle: what changed?

I do not mean “which file was touched.” I mean: which measures were modified, which columns were added, which relationships were removed, and what exactly is different in the DAX expression that someone edited last Tuesday. That is the question I kept running into, and the one I built this notebook to answer.

Click through to learn how.

Leave a Comment

Splitting to Table via STRING_SPLIT() and REGEX_SPLIT_TO_TABLE()

Greg Low might have violated Betteridge’s Law of Headlines:

Using T-SQL it’s quite easy to build a table-valued function that can step through a string, character-by-character, and (based on a delimiter) output the delimited strings. The problem is that the performance of these functions is appalling.

When XML support appeared in SQL Server 2005, there were many attempts to create more efficient string-splitting functions. For many strings, these work quite well, but do have a few oddities that you need to cope with. Plus, most have limitations on the strings that you can split.

Ultimately, what was really needed was an efficient and native built-in function.  

Greg points out two mechanisms and contrasts them.

Leave a Comment

Improving Line and Trend Charts in Power BI Reports

Ruben Van de Voorde shares some tips:

Line charts plot a metric along an ordered axis. Usually that axis is time, which is why they’re the first thing most people reach for when the X axis is a date. They show direction, speed and rhythm in a way that tables and bar charts don’t. That ordering is the key requirement: for unordered categories like regions or product types, connecting the points implies a sequence that isn’t there, and a bar chart is the clearer choice.

Power BI makes line charts easy to build: pick a date column, pick a measure, maybe split by a category, and you are done. The result is technically correct, but maybe not as clear as it could be. This article walks through the most common ways a line chart falls short and how to fix them.

There’s a lot of solid advice and good examples in here.

Leave a Comment