How would you describe a helper table?

Hi all, ‘helper table’ seems a way to get things done with Glide as ‘invented’ by users. I don’t think I find it in any official Glide docs. How would you describe a ‘helper table’ and in what cases would you use it and how? Maybe this post + reactions can make it to the help section afterward :wink:

1 Like

I use Helper Tables all the time. Most of my Glide Projects are littered with them. They have many uses, here are just a few examples:

Reusable Custom Forms

This is one I learned from @Jeff_Hager. The usual way to create a custom form is with a “Show Detail Screen → this item” action. This gives you a new details screen on your current row with a blank canvas, on which you then build out your form.

However, another way to do this is by using a single row Helper Table. You create a Helper Table and add whatever columns are required for your form, and then build it out using a details screen on top of that table. Then any time you want to use it - from anywhere in your App - all you need is a “Single Value → First ->Whole Row” to your Helper Table, then do a “Show Detail Screen” via that Single Value column, and viola - you have your custom form ready to go.

Transposing Arrays into Lists

Sometimes you might have an array of values that need to be transposed into a list. Maybe you want to use them as the source of a Choice Component, or maybe just in an Inline List. Helper table to the rescue. Just create enough rows to cover the maximum number of items in the array, then unwind them using the RowID->Lookup->Find Element Index method. (This method is described in detail in @Robert_Petitto’s Miracle Method tutorial).

Generating Charts and Tables

Helper Tables are ideal for pulling together data to be used in Charts or HTML tables. Sometimes it will just be a single row table, and sometimes there will be multiple rows. It depends on the use case. One common use is where you might be building a chart/table that has monthly totals of data. In this case, you'd generally have one row for each month of the year. You build relations to your data, and then use rollups to pull in the aggregated data, and feed that into your chart and/or HTML table.

Here is an example of what that might look like:

And that data feeds into a table that looks like so:

Screen Shot 2022-11-19 at 5.50.55 PM

Generating Complex Data Structures

In one App I built, there was a requirement to be able to add anywhere between 1 and 52 rows with a single button click. The way I approached that was to create a 52 row Helper Table, and collect all the data required into that table. Then bundle the whole lot up into a JSON object, send that to Make, and have Make insert the required number of rows back into Glide via the API.

More Advanced methods with complex data structures

I won’t say too much about this one, except to say that I’ve been able to develop a method for storing and extracting up to thousands of “rows” of data in a single table row. The use of a Helper Table was key in being able to do this successfully.

Consolidating Data from multiple tables

Another use for a helper table is to dynamically consolidate data from two or more tables into a single table for a particular purpose. An example of where I’ve done this is as follows:

  • I have 3 almost identical tables
    – Table 1 contains data for the past 7 days
    – Table 2 contains data for the past 8-30 days
    – Table 3 contains all data older than 30 days

My users need to to be able to generate a CSV export, and specify a date range. That date range could potentially mean that I need data from all 3 tables. In order to deal with this, a Helper Table is used.

So that’s just a few examples. I could probably go on about Helper Tables all day :wink:

10 Likes

Wow! Thanks so much! Really valuable!

In addition to @Darren_Murphy’s thorough description…in simplest terms, a helper table is a table that does not store data…at least not long term. It’s a table that does “work” (or performs a specific function).

This is done with the use of user specific columns and/or computed columns. When put together, it allows the helper table to perform it’s intended function and give you whatever result you need.

It’s just a matter of allowing the user to enter data, or using various computed columns to bring data into the helper table from other tables, to allow the helper table to do it’s work.

Sometimes you will see them referred to as work, or working tables. At my company, we have tables that only store data for a short amount of time while a program is running. Once the program is finished, then the table can be cleared, so it’s ready for the next run. We tend to call these work tables.

Another way to think of it is like RAM on a computer. RAM is a temporary place for data to be stored while a program is running on a computer.

I think of them as a creative way to “write code”, or get a “code like” experience in a no-code environment. There are a ton of uses for them.

6 Likes

Great explanation!

1 Like

ah yes… hehe now I realise that whilst I gave plenty of examples of how you can use a Helper Table, I didn’t actually address the question of what it is :crazy_face:

Thanks for filling in the gaps

5 Likes

A new entry for Glidipedia! Thanks @Darren_Murphy and @Jeff_Hager !

4 Likes

Darren, I think I’m missing bits of knowledge or logic on the way :wink:
So right now I have a One Pager table with columns like Name / Header / Subheader.
And so far I have made a button > show form screen, writing to a new row in that One Pager table but with some explanation texts in between (see picture below).

Do I understand it right?

  • To be able to easily re-use that option I need to make a new table with the same columns (helper texts included?)
  • Do I understand it right that in the end I still write the data to my first One Pager table and not to the One Pager Helper table?
  • To build a reusable form page, I add a button and build the form page on top of a One Pager Helper table?
  • Is this a button I really use? Does the user see it?
  • Then I add a column “Single Value → First ->Whole Row" in the One Pager table, referencing the One Pager Helper table.
  • Then I get stuck a little. When I then pick a button with ‘Show detail screen’ I don’t get the option to go to the One Pager table > Single Value.
    I do things wrong, but I hope you can point me to what.
    Thanks in advance!

Yeah, you’ve got that all wrong :slight_smile:

But before we dive into troubleshooting, let me ask a question: Do you actually need a reusable Custom Form (or even a Custom Form at all), or are you just doing this as a learning exercise?

For me now it’s mainly a learning exercise in my phase of understanding when and how I need / can use a helper table. So maybe all this is not necessary :wink:

1 Like

It might be easier if I make a short video guide.
But not now, I’m kinda busy :wink:

I understand!

Question about this. For me, a form contains explainer texts (hints) and image (of the product) and if then else logic, does this way of working bring that over as well? So do I have my ready-to-go form then elsewhere?

Plus: Can it make sense to start using this in an already up and running app? Can I add the info to an already filled table too?

Thanks in advance!

Yes. As long as you open the Custom Form with a Show Details Screen action, you’ll get exactly the same form no matter where you use it in your App. The way I usually do it is as follows:

  • In the table where I want to trigger the form from, create a Single Value → First → Whole Row column that targets my Helper Table
  • Then when I want to trigger the Custom Form, I create a custom action with two steps:
    – Set Column Values via the Single Value column. This is used to initialise the form: clear user specific columns, set any default values, etc
    – Show Details Screen via the Single Value column

If I understand your question correctly, then yes, most certainly.

2 Likes

Tomorrow I am going to try this and understand it! Thanks.

@erwblo - I saw Bob Petitto mention something about golf last night…

… which reminded me of one of my most “extreme” uses of a Helper Table.

I have a Golf App that tracks scores in PGA Tour events, pulling in scores via an API every 5 minutes when an event is on. When the scores hit my App, they go into a table that looks like so:

GolferID should be obvious, Raw is a comma separated list of their scores - 72 holes for a 4 round tournament.

I use a 72 row Helper Table to dynamically transform those comma separated lists in that table to the following:

As you could imagine, the Helper Table has some pretty crazy logic, and somewhere around 200 computed columns. Here is what it looks like:

You would think that with that much going on it might be pretty slow. But it isn’t. Golfers are presented in the App as an Inline List. When you tap on a Golfer, an action sets a couple of User Specific columns in the Helper Table. This triggers the calculations for that Golfer, and their scorecard is dynamically built and instantly displayed on their details screen. Here is what that looks like:

You can do some pretty neat stuff with a Helper Table :slight_smile:

4 Likes

WOW! This is next level stuff :wink: Impressive!
My level will stay at a reusable about page and a reusable form for now :wink:

1 Like

Wow - this is a spectacular and tight UI. Great job…great golf app.

1 Like