RSSAmplifier

Blog

Roland Bouman's blog

Programming - Databases - Analytics

rpbouman.blogspot.comRSS feed ↗25 posts

Latest posts

DuckDb Performance: min, max, and median vs quantile

I was playing with some classical statistics in DuckDB and I ran into something I'd like to share. It's about the measures minimum, maximum and median, and quantiles in general. The short of it is: Descriptive statistical measures minimum , maximum , and median occur rarely on their own: they are typically collected together, along with a number of other core descriptive statistics. These measures…

DataZen winter meetup 2025

The DataZen winter meetup 2025 is nigh! Join us 18 - 20 February 2025 for 3 days of expert-led sessions on AI, LLM, ChatGPT, Big Data, MLOps, and more. This FREE online event is open to data enthusiasts of all levels! Checkout the program here: https://wearecommunity.io/events/winter-data-meetup2025/talks/84304 I'm doing a talk on DuckDB and Huey - an open source browser app for pivoting hundreds…

DuckDB Bag of Tricks: Reading JSON, Data Type Detection, and Query Performance

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is about a particular challenge posted on the DuckDB Discord server which happened to interest me. So, here goes!! Yesterday on the DuckDB discord server user @col_montium asked : I've got a bit of a head scratcher. My json from https://api.census.gov/data/2000/dec/sf1/variables.json is a…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - Rolling up each game's lines into a single game row (6/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the sixth installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN) Ingesting…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - Extracting Tagpairs with Regular Expressions (5/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the fifth installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN) Ingesting…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - Keeping the lines of a game together (4/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the fourth installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN)…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - Distinguishing the Line Type (3/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the third installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN) Ingesting…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - Ingesting raw text with the CSV Reader (2/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the second installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN)…

DuckDB bag of tricks: Processing PGN chess games with DuckDB - An Introduction to PGN (1/6)

DuckDB bag of tricks is the banner I use on this blog to post my tips and tricks about DuckDB . This post is the first installment of a series in which I share tips and tricks on how to use DuckDB for raw text processing. As a model, we will use Portable Game Notation (PGN), a popular format for digitized recording Chess games. The installments are: Chess and Portable Game Notation (PGN) Ingesting…

DuckDB Bag of Tricks: First Splash

Some 1.5 years ago I heard about DuckDB for the first time. I've been using it ever since, and more and more everytime. It's one of those tools that just always delivers, no matter what kind of problem I throw at it. Sounds too good to be true? Maybe. I quickly became a fan, and I'm not ashamed to admit it. Yet despite this confession, I think my favourable opinion towards DuckDB is not merely…

SAP HANA Trick: DISTINCT STRING_AGG

Nowadays, many SQL implementations offer some form of aggregate string concatenation function. Being an aggregate function, it has the effect concatenating values of a group of rows into a single string. In most implementations, including MS SQL, SAP HANA, and PostgreSQL, this function goes by the name STRING_AGG() . In Snowflake it's called LISTAGG() and In MySQL, which is the first product I…

UI5 Tips: Persistent UI State

This tip provides a way to centrally manage UI state, and to persist it - automatically and without requiring intrusive custom code sprinkled through your apps. The UI State Many ui5 controls and widgets allow some aspect of their appearance or behavior to be changed by the user. For example, a panel may be collapsed or expanded, a tab may be selected, columns width in a data grid may be adjused,…

UI5 Tips: Persisting JSONModel data using browser Storage

In this ui5tip, we'll take a look at integrating ui5's sap.ui.model.json.JSONModel with sap.ui.util.Storage utility . Our immediate use case for this was to allow easy and transparent persistence of UI State, which has its own dedicated tip . In this tip, we describe how the actual persistence is implemented. Sample application: a Shopping List To illustrate just the storage model, we developed a…

UI5 Tips: Change expand/collapse icons for Tree, Panel and TreeTable using only CSS

UI5 offers a couple of widgets that can expand and collapse. To do that, these controls render a button with an icon that indicates the current state, and which the user can click to toggle the state. The standard icons that UI5 renders for the expand/collapse button are navigation arrows, which some of our users disliked. In this tip, you'll learn how you can replace them with more appropriate…

UI5 Tips: Buffering Events to avoid a request-storm

Standard UI5 event handling will usually go a long way. Yet sometimes, certain user actions can cause ui5 objects to generate a lot of similar events within a small period of time, and it is often not useful to handle each and all of them: only the last event needs handling. A very common scenario is doing a search in response to the liveChange event : if you'd attach a handler to handle the…

UI5 Tips: Manipulating the sap.m.TabContainer close buttons with custom CSS

Here's a ui5tip to show how you can change the look and feel of the sap.m.TabContainer with a minimal amount of custom CSS. If you want to try this for yourself, be sure to check out the sample application from github . The sap.m.TabContainer The sap.m.TabContainer provides a simple, no-nonsense widget to build a tabbed user interface (check out the samples ). Tabs can be added via the items…

UI5 Tips: Adding a Splash-Screen / Loading indicator

UI5 apps always take a little time to load. If you don't take any precautions, the user will be looking at a blank screen while the app is loading. It is fairly simple to add a splash screen and loading indicator to improve the user experience. This will give your app a more professional appearance, and it will cost minimal effort. This post shows you exactly how to do this. You might also be…

Year-to-Date on Synapse Analytics 5: Using Window Functions

For one of our Just-BI customers we implemented a Year-to-Date calculation in a Azure Synapse Backend. We encountered a couple of approaches and in this series I'd like to share some sample code, and discuss some of the merits and benefits of each approach. TL;DR : A Year-to-Date solution based on a SUM () window function is simple to code and maintain as well as efficient to execute. This as…

Year-to-Date on Synapse Analytics 4: Using UNION and GROUP BY

For one of our Just-BI customers we implemented a Year-to-Date calculation in a Azure Synapse Backend. We encountered a couple of approaches and in this series I'd like to share some sample code, and discuss some of the merits and benefits of each approach. TL;DR : A Year-to-Date solution based on a SUM () window function is simple to code and maintain as well as efficient to execute. This as…

Year-to-Date on Synapse Analytics 3: Using a Subquery

For one of our Just-BI customers we implemented a Year-to-Date calculation in a Azure Synapse Backend. We encountered a couple of approaches and in this series I'd like to share some sample code, and discuss some of the merits and benefits of each approach. TL;DR : A Year-to-Date solution based on a SUM () window function is simple to code and maintain as well as efficient to execute. This as…

Year-to-Date on Synapse Analytics 2: Using a self-JOIN and GROUP BY

For one of our Just-BI customers we implemented a Year-to-Date calculation in a Azure Synapse Backend. We encountered a couple of approaches and in this series I'd like to share some sample code, and discuss some of the merits and benefits of each approach. TL;DR : A Year-to-Date solution based on a SUM () window function is simple to code and maintain as well as efficient to execute. This as…

Year-to-Date on Synapse Analytics 1: Background

For one of our Just-BI customers we implemented a Year-to-Date calculation in a Azure Synapse Backend. We encountered a couple of approaches and in this series I'd like to share some sample code, and discuss some of the merits and benefits of each approach. (While our use case deals with Azure Synapse, most of the code will be directly compatible with other SQL Engines and RDBMS-es.) TL;DR : A…

Building a UI5 Demo for SAP HANA Text Analysis: Part 4

This is the last of a series of blogposts describing a simple web front end tool to explore SAP HANA's Text Analysis features on documents uploaded by the user. As a reminder, the following overview outlines all the posts in the series: Part 1 - an Overview: SAP HANA Text Analysis on Documents uploaded by an end-user Part 2 - Hands on: Building the backend for a SAP HANA Text Analysis application…

Building a UI5 Demo for SAP HANA Text Analysis: Part 3

We now continue our series on building a simple web application for exploring SAP HANA Text Analysis features. As a reminder, here are the links to the other installments in the series: Part 1 - an Overview: SAP HANA Text Analysis on Documents uploaded by an end-user Part 2 - Hands on: Building the backend for a SAP HANA Text Analysis application Part 3 - Presenting: A UI5 front-end to upload…

Building a UI5 Demo for SAP HANA Text Analysis: Part 2

In the previous blog post , I explained some of the pre-requisites for building a SAP HANA Text Analysis application, and some thoughts were dedicated on how to expose these features to a end-user facing web-application. In this blog post, these considerations are put to practice and a basic but functional backend is created to support such an application. Part 1 - an Overview: SAP HANA Text…