Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
Hi all,
My question is regarding the data format and analysis ideas. Kindly put my post to the right channel if it is incorrect.
I have a sample dataset regarding feedback from students on selected subject and the subject's teacher to their students.
When the students and teachers submit their feedback, maximum 2 feedbacks is allowed and they have the option of not giving any feedback thus NA value will appear. The feedback is recorded into an excel.
My question - what is the suggested data format to import to Power BI for analysis as I find it no objective for displaying the count of each feedback from students and teacher in 2 separate bar chart. Any objectives that I can consider to constuct a storyline when I form my visual in Power BI?
Here is the link of the dataset
Solved! Go to Solution.
You can consider using a "normalized" format with the following approach:
Suggested Data Structure
1. Entity Column: Add a column to identify the source of feedback, i.e., whether it’s from a "Student" or "Teacher".
2. Feedback Index Column: Use another column to indicate the feedback instance (e.g., "Feedback 1" or "Feedback 2").
3. Feedback Value Column: Place the feedback values in a single column rather than having separate columns for Feedback 1 and Feedback 2.
Example Structure
| Subject | Entity | Feedback Index | Feedback Value |
| Math | Student | Feedback 1 | 4 |
| Math | Student | Feedback 2 | 3 |
| Math | Teacher | Feedback 1 | 5 |
| Math | Teacher | Feedback 2 | N/A |
With this format:
- You can easily filter by "Student" or "Teacher" in Power BI.
- To calculate the total feedback count for each entity, you’d only need to count non-null entries in the "Feedback Value" column, grouped by the "Entity" column.
This normalized structure makes it easier to analyze each entity’s feedback separately and helps create flexible Power BI visuals based on user requirements.
Hi @alvin1999 ,
Store each feedback record separately, rather than combining multiple feedbacks into the same row. This allows for easier statistics and analysis. The following is a suggested format:
Analyzing Ideas:
Best Regards,
Adamk Kong
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @alvin1999 ,
Store each feedback record separately, rather than combining multiple feedbacks into the same row. This allows for easier statistics and analysis. The following is a suggested format:
Analyzing Ideas:
Best Regards,
Adamk Kong
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
You can consider using a "normalized" format with the following approach:
Suggested Data Structure
1. Entity Column: Add a column to identify the source of feedback, i.e., whether it’s from a "Student" or "Teacher".
2. Feedback Index Column: Use another column to indicate the feedback instance (e.g., "Feedback 1" or "Feedback 2").
3. Feedback Value Column: Place the feedback values in a single column rather than having separate columns for Feedback 1 and Feedback 2.
Example Structure
| Subject | Entity | Feedback Index | Feedback Value |
| Math | Student | Feedback 1 | 4 |
| Math | Student | Feedback 2 | 3 |
| Math | Teacher | Feedback 1 | 5 |
| Math | Teacher | Feedback 2 | N/A |
With this format:
- You can easily filter by "Student" or "Teacher" in Power BI.
- To calculate the total feedback count for each entity, you’d only need to count non-null entries in the "Feedback Value" column, grouped by the "Entity" column.
This normalized structure makes it easier to analyze each entity’s feedback separately and helps create flexible Power BI visuals based on user requirements.
Hi @alvin1999
I would add an index column which will serve as the record id and then unpivot the feedback columns as shown in the screenshot below:
Keeping the two column means, you'll have to create a measure each for Student and Teacher. If unpivoted, you can just have a single measure (distinct count of index) and be able to slice the feedback by Good/bad/etc and be able to filter which feedback goes to teacher/student.
Here's a sample M code
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("nZDBC8IgFMb/F8+CT6duHVeMuhRBl2DsEDUqGBOWh/78nulE6TIC9cPH+/G997UtOSkATijZX+wDpcZ71gAKFRQDyQSIAj9bY26zdNRzAgvNeMd34zHtOkEzKGeseV/7YehH+wcbLA91hFx193zhu/YQB1Rehjml76bkaMwUIRmdwnKqQhWCoVmAfp0WQOlqCemSqyebzOiaoWBQZTMmiI5rhSzkyq3FGZ58wizCBdg3CO/VfQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Student ID" = _t, Subject = _t, Class = _t, #"Teacher ID" = _t, Date = _t, #"Feedback-student" = _t, #"Feedback-Teacher" = _t]),
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
#"Changed Type" = Table.TransformColumnTypes(#"Added Index",{{"Student ID", type text}, {"Subject", type text}, {"Class", type text}, {"Teacher ID", type text}, {"Date", type date}, {"Feedback-student", type text}, {"Feedback-Teacher", type text}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Index", "Student ID", "Subject", "Class", "Teacher ID", "Date"}, "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Feedback Category"}, {"Value", "Feedback"}}),
#"Extracted Text After Delimiter" = Table.TransformColumns(#"Renamed Columns", {{"Feedback Category", each Text.AfterDelimiter(_, "-"), type text}}),
#"Capitalized Each Word" = Table.TransformColumns(#"Extracted Text After Delimiter",{{"Feedback Category", Text.Proper, type text}}),
#"Reordered Columns" = Table.ReorderColumns(#"Capitalized Each Word",{"Index", "Student ID", "Subject", "Class", "Teacher ID", "Date", "Feedback Category", "Feedback"})
in
#"Reordered Columns"
To analyze your dataset effectively in Power BI, a few formatting adjustments and storyline ideas can enhance the visualization:
Restructure Feedback Fields: Since each student and teacher can give up to two feedback entries, arrange the feedback fields into separate columns for each person’s response (e.g., Student_Feedback_1, Student_Feedback_2, Teacher_Feedback_1, Teacher_Feedback_2). This way, Power BI can calculate and compare responses easily.
Create a Unified Feedback Column:
Handle NA Values: Replace NA values with a blank or "No Response" to distinguish between feedback given and not given. This will help you analyze participation rates.
Feedback Participation Rates:
Feedback Comparison:
Sentiment Analysis (if feedback has a text component):
Overall Feedback Trends:
Please leave a Kudos or Mark as Solution if it helps.
Hi @saurav_0101 ,
Thank your for your suggestion.
For data formating suggestion number 1 -Restructure Feedback Field, by having first feedback of each party to the feedback 1 column and second feedback to feedback 2 column, similar to student and teacher may cause that I am unable to sum the number of feedback provided by student and teacher separately.
Do you have better way to get the total feedback for student and teacher separately?
The Power BI Data Visualization World Championships is back! It's time to submit your entry.
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 56 | |
| 42 | |
| 40 | |
| 21 | |
| 21 |
| User | Count |
|---|---|
| 150 | |
| 105 | |
| 63 | |
| 36 | |
| 36 |