# Structuring My Data

**URL:** <https://community.glideapps.com/t/structuring-my-data/74478>\
**Category:** Ask for Help\
**Created:** [June 29, 2024, 4:24pm UTC](https://community.glideapps.com/t/structuring-my-data/74478 "2024-06-29T16:24:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [June 29, 2024, 4:24pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/1 "2024-06-29T16:24:46Z")

</div>

My app is a voter contact app being built for a nonprofit. they have a large Data sheet of voters they wish to contact, and my app provides their volunteers with a map of voters they are assigned to, and a survey to ask those voters.

I am struggling to wrap my head around the best way to structure my data in the app. I am currently building based off of a small data sheet example, but I have come to realize that the data sheets they use are essentially going to be switched out for each campaign. Every State they are working in has its own spreadsheet of data, and they may be working in multiple states across the country at any given time. The company would desire to have reporting based upon how many surveys each team of volunteers contacts within each campaign, and have their answers to the survey appended onto the data.They don’t necessarily need stats for every volunteer, but rather, stats for each group of volunteers.

So there needs to be some kind of master spread sheet I think, but I am not sure how to accomplish that structure. They purchase individual sets of data for each location their volunteers will work in from another company. Maybe I can have a master template they upload that sheet into, but I am not sure how to have multiple sheets going at the same time if they have multiple states with their own sheets working in the app at the same time, if that makes sense. Another option may be to simply make a copy of the app with the new spreadsheet and distribute it to that Campaign’s teams? However, I cant delete the original spreadsheet when I make a copy without breaking the app to replace it with the new one.

I currently have a business plan free trial. at any given time I may need 10 different master spreadsheets with around 5 teams or users in each.

I am also looking for resources to better understand how I can assign each team their section of the spreadsheet to work on. so rather than having the app load 1000 voters in KY for example, the team will log in and blue team has 50 voters to contact, red team has 50, ect. I think the answer lies in something like row owners but when I watch related videos I cant quite understand how to make that work.

Any Insight would be much appreciated. I have attached a chart to show the flow of my app. it does not include details on the analytics portion as of yet. The company would like reporting to have its own dashboard that can send them periodic PDF’s on a schedule to their email. The reporting needs would be things like, “How many voters did we contact in Indiana” and “How many voted yes or no to question 1” and “how many conversations with voters did team Blue have in Tennessee on Saturday?”. So, with the Form function as a survey, time stamps will need to be recorded that they can filter through for reporting

Finally, I want to check that I am thinking about real time updates correctly. Each user login is for a team of 2-10 people. they individually will complete surveys on their device, but under the same login. if multiple users are using the blue team login to complete separate surveys, will they all update in real time or will this cause weird interferance issues?

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/e/b/eb9300f48c79003356b443cad833dc3420e3c24b.png)

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 30, 2024, 12:48am UTC](https://community.glideapps.com/t/structuring-my-data/74478/2 "2024-06-30T00:48:52Z")

</div>

> [@Kris\_Hale](#):
>
> I am struggling to wrap my head around the best way to structure my data in the app. I am currently building based off of a small data sheet example, but I have come to realize that the data sheets they use are essentially going to be switched out for each campaign.

This will be a problem. Is there a way for you to convince them to just use one data sheet, or consolidate the existing data into Glide Tables?

> [@Kris\_Hale](#):
>
> Maybe I can have a master template they upload that sheet into, but I am not sure how to have multiple sheets going at the same time if they have multiple states with their own sheets working in the app at the same time, if that makes sense.

Continuing with the problem above, this looks like your best bet, but would spreadsheets still be used in tandem with Glide? I would suggest trying to get people to use only the Glide app, with a consolidated, standardized data source in Glide Tables.

> [@Kris\_Hale](#):
>
> I am also looking for resources to better understand how I can assign each team their section of the spreadsheet to work on. so rather than having the app load 1000 voters in KY for example, the team will log in and blue team has 50 voters to contact, red team has 50, ect. I think the answer lies in something like row owners but when I watch related videos I cant quite understand how to make that work.

This looks like a setup for roles & row owners.

[![](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/c/c/cc5bc22c1cf4493a04d0a5b9c9d427898fe6bf68.jpeg "Glide: Row Owners and Roles DEMYSTIFIED") ](https://www.youtube.com/watch?v=RmMLZINOwjQ)

> [@Kris\_Hale](#):
>
> if multiple users are using the blue team login to complete separate surveys, will they all update in real time or will this cause weird interferance issues?

I haven’t had a setup like this before, but is there a reason why they can’t have different accounts?

---

<div class="post-metadata">

**Author:** ![slscustom.ru](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/slscustom.ru/32/77336_2.png) [@slscustom.ru](https://community.glideapps.com/u/slscustom.ru)\
**Post date:** [June 30, 2024, 11:11am UTC](https://community.glideapps.com/t/structuring-my-data/74478/3 "2024-06-30T11:11:50Z")

</div>

Hi everyone, i would like to show you “Hey Glide staging AI generator”, which helps to easily creates data templates for apps

Just add your description and it will creates basically data structure and simple screens

It is good start point to thinking about data structure for the application.

> **[Hey Glide staging AI generator](https://plvideo.ru/watch?v=DFFAqA11Lzt4)**
>
> In this video i shoving how to create basically data structure and screens for the Glide app just by entering text description. This generator in a early Beta stage.

[Link to Hey Glide staging](https://staging.heyglide.com)

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 1, 2024, 4:18pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/4 "2024-07-01T16:18:58Z")

</div>

If I were to keep one master spreadsheet in glide for them to add to as they purchase more data sets, how can I upload them to glide and remove old data without breaking anything?

For further detail, they are going to be purchasing data for each location they have volunteers work in. the data comes to them in the form of excel spreadsheet, and each sheet is full of data for that location. would you advise a way to maybe import those spreadsheets and have them assigned to different groups of volunteers?

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 1, 2024, 4:21pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/5 "2024-07-01T16:21:32Z")

</div>

the only reason not to give each user an account is that there will be too many users and we only need to track their progress by team, not by individual. we could easily have 40 volunteers in one location working at the same time as 100 in another, but they are in groups of 4-6 so that helps cut down on how many users we need taking up space in the 40 user quota

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 1, 2024, 4:32pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/6 "2024-07-01T16:32:04Z")

</div>

I think if i were going to do row owners, it wont work, because i actually need it to be ROWS that are owned by each user. the sheet has 1 contact per row, and each user needs to be assigned about 100 rows each to work on.

Roles looks like it could work, but in the video he is only grouoping within the same users table. I would need to apply a Role like Team Blue, and team blue can access maybe 100 rows of the KY spreadsheet of data. so it would be a role sorting another sheet into sections, assigning the role some portions of that data sheet

---

<div class="post-metadata">

**Author:** ![slscustom.ru](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/slscustom.ru/32/77336_2.png) [@slscustom.ru](https://community.glideapps.com/u/slscustom.ru)\
**Post date:** [July 1, 2024, 8:14pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/7 "2024-07-01T20:14:12Z")

</div>

I think you can use master table for multiply location, just use unique key for each uploaded set of data.

---

<div class="post-metadata">

**Author:** ![slscustom.ru](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/slscustom.ru/32/77336_2.png) [@slscustom.ru](https://community.glideapps.com/u/slscustom.ru)\
**Post date:** [July 1, 2024, 8:15pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/8 "2024-07-01T20:15:49Z")

</div>

In my opinion it is very bad idea to multiple users using same email to login!

---

<div class="post-metadata">

**Author:** ![slscustom.ru](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/slscustom.ru/32/77336_2.png) [@slscustom.ru](https://community.glideapps.com/u/slscustom.ru)\
**Post date:** [July 1, 2024, 8:20pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/9 "2024-07-01T20:20:07Z")

</div>

If you have hundreds of users and tons southands of data each month, so dont try for economy, think about how co cunsruct the data structure anp apps flow well.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [July 1, 2024, 11:25pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/10 "2024-07-01T23:25:57Z")

</div>

> [@Kris\_Hale](#):
>
> If I were to keep one master spreadsheet in glide for them to add to as they purchase more data sets, how can I upload them to glide and remove old data without breaking anything?

So you need to remove old data each time? Do you ever need to access historical data, or run on multiple “datasets” at once?

> [@Kris\_Hale](#):
>
> would you advise a way to maybe import those spreadsheets and have them assigned to different groups of volunteers?

As long as you have the same column names, you should be able to just import that into the right table.

> [@Kris\_Hale](#):
>
> the only reason not to give each user an account is that there will be too many users and we only need to track their progress by team, not by individual. we could easily have 40 volunteers in one location working at the same time as 100 in another, but they are in groups of 4-6 so that helps cut down on how many users we need taking up space in the 40 user quota

Yeah, I can understand this.

> [@Kris\_Hale](#):
>
> I think if i were going to do row owners, it wont work, because i actually need it to be ROWS that are owned by each user. the sheet has 1 contact per row, and each user needs to be assigned about 100 rows each to work on.
> 
> Roles looks like it could work, but in the video he is only grouoping within the same users table. I would need to apply a Role like Team Blue, and team blue can access maybe 100 rows of the KY spreadsheet of data. so it would be a role sorting another sheet into sections, assigning the role some portions of that data sheet

If you have only 1 user account per team, wouldn’t row owners work?

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 4, 2024, 6:44pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/11 "2024-07-04T18:44:27Z")

</div>

We need the master data to be updated with the answers to the survey being performed in the app. That Data wont need to be accessed again within the app after the team completes that trip, but the data does need to be stored for later use outside the app after having been updated with the survey answers. The next time a team goes out, it would be with a new fresh spreadsheet of data contacts to go out and do surveys for

I think row owners is actually going to be the answer for separating the data out, I am just trying to figure out how to get it setup to function properly.

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 4, 2024, 9:45pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/12 "2024-07-04T21:45:56Z")

</div>

Is there a way to apply 2 layers of row owners? So, If I need to sort first by the Campaign Name, and then within each of those, a team name?

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [July 5, 2024, 12:07am UTC](https://community.glideapps.com/t/structuring-my-data/74478/13 "2024-07-05T00:07:30Z")

</div>

Why do you need two layers here though? Would there ever be a campaign with 2+ teams?

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 5, 2024, 3:52am UTC](https://community.glideapps.com/t/structuring-my-data/74478/14 "2024-07-05T03:52:33Z")

</div>

Yes, so every spreadsheet is 1 campaign, and 3 to 6 teams will work that campaign at once. There are many campaigns throughout the next few months, some of them in the same day but in different states. The data for the campaign is a list of voters who the teams contact to ask a survey about the upcoming election

---

<div class="post-metadata">

**Author:** ![slscustom.ru](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/slscustom.ru/32/77336_2.png) [@slscustom.ru](https://community.glideapps.com/u/slscustom.ru)\
**Post date:** [July 5, 2024, 9:03am UTC](https://community.glideapps.com/t/structuring-my-data/74478/15 "2024-07-05T09:03:36Z")

</div>

1. Each user must login with their unique Email - it’s exactly and clear.
2. You need a team table, ROW-ID of its rows - it is the role for the users.
3. Master table contains:  
PK\_Campaign\_id|voter\_data|FK\_Admin\_role(row owner) |FK\_Team\_Role(row owner) |Set\_of\_survey’s\_columns|
4. You need external service which will prepare the content for Master table with necessary columns  
Every Admin\_role column must set to admin role value  
Team\_Role column must be set according to assigned teams access.  
a. You can use google sheet as DB and AppsScript to process Role set. There is you process data in a not connected sheet and then copy it to a connected google sheet you will have some economy for updates. But then when users will fill out survey you will reach lot of updates. The workaround may be creating a new survey row in native Glide table with a foreign key sourced primary’s key of the master table. Then you can easily generate csv for exporting.  
**b. You can construct an array column in Google sheet to provide several teams to access same campaign.**
5. In another hand you said you need teams to access several campaigns at same time, so it is possible in the above-described way.

If you need to clear the DB after the survey is finished, it is also possible (delete by multiple relation or by AS).  
I think.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [July 5, 2024, 1:14pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/16 "2024-07-05T13:14:15Z")

</div>

> [@Kris\_Hale](#):
>
> Yes, so every spreadsheet is 1 campaign

I still feel like this is an approach that will make it super hard to maintain the app later. Is there a reason why you don’t just keep them all in the same table?

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 5, 2024, 2:30pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/17 "2024-07-05T14:30:55Z")

</div>

I can explore that with them, I think they are going to want to export data from the separate locations to create a pdf report. So they want to be able to get a pdf email saying, here are how many surveys completed in Texas Saturday. Their longterm storage of the list can be one I think, especially if I can query the list somehow

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [July 5, 2024, 5:23pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/18 "2024-07-05T17:23:23Z")

</div>

It sounds like it would be best to keep them all in one table. Then you could use a query or relation to filter the data for export/ pdf.

---

<div class="post-metadata">

**Author:** ![Kris\_Hale](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kris_hale/32/60331_2.png) [@Kris\_Hale](https://community.glideapps.com/u/Kris_Hale)\
**Post date:** [July 5, 2024, 5:54pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/19 "2024-07-05T17:54:01Z")

</div>

Thank you, do you have an example of relation or query on the data I can look at?

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [July 5, 2024, 5:58pm UTC](https://community.glideapps.com/t/structuring-my-data/74478/20 "2024-07-05T17:58:19Z")

</div>

Given your example how many surveys completed in Texas on Saturday. I would create a one row table with some user specific columns to hold the State and the Day of the week. Then I would create a query from the one row table to the data. Finally add a rollup column via the query for the count.

[Next page](https://community.glideapps.com/t/structuring-my-data/74478.md?page=2)
