Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,15 @@
.history
.history
/CD2/.vs/CD2/FileContentIndex/49877815-d97f-49e2-8a66-698d49906dc5.vsidx
/CD2/.vs/CD2/FileContentIndex/49877815-d97f-49e2-8a66-698d49906dc5.vsidx
/CD2/original1.CanvasAccountsSchoolsColleges.py
/CD2/original1.discussions.md
/CD2/original1.enrollments.md
/CD2/original1.gradebook.md
/CD2/original1.kalturaWikiEmbeds.md
/CD2/original1.MiVideo.md
/CD2/original1.MyLA.md
/CD2/original1.rolled_up_subaccounts.csv
/CD2/original1.rubrics.md
/CD2/original1.subaccounts.csv
/CD2/original1.subaccounts_with_school_college.csv
/CD2/original1.submissions.md
Binary file added CD2/.vs/CD2/v17/.wsuo
Binary file not shown.
12 changes: 12 additions & 0 deletions CD2/.vs/CD2/v17/DocumentLayout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\jennlove\\Documents\\GitHub\\canvas_queries\\CD2\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": []
}
]
}
7 changes: 7 additions & 0 deletions CD2/.vs/VSWorkspaceState.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\enrollments.md",
"PreviewInSolutionExplorer": false
}
Binary file added CD2/.vs/slnx.sqlite
Binary file not shown.
44 changes: 44 additions & 0 deletions CD2/CanvasAccountsSchoolsColleges.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#Roll up Canvas subaccounts into schools and colleges

import pandas as pd

# Read the CSV file (assuming it's named "subaccounts.csv")
df = pd.read_csv("subaccounts.csv")

# Create a dictionary to store the parent-child relationships
parent_child_map = {}

# Populate the dictionary with parent-child relationships
for _, row in df.iterrows():
parent_id = row["parent_account"]
child_id = row["id"]
if parent_id not in parent_child_map:
parent_child_map[parent_id] = []
parent_child_map[parent_id].append(child_id)

# Function to recursively find all child accounts under a parent account
def find_all_child_accounts(parent_id):
child_accounts = []
if parent_id in parent_child_map:
for child_id in parent_child_map[parent_id]:
child_accounts.append(child_id)
child_accounts.extend(find_all_child_accounts(child_id))
return child_accounts

# Find all child accounts under the top-level account (account_id = 1)
top_level_account_id = 1
all_child_accounts = find_all_child_accounts(top_level_account_id)

# Print the rolled-up subaccounts
print("Rolled-up subaccounts:")
for account_id in all_child_accounts:
print(f"Subaccount ID: {account_id}")

# Optionally, you can create a new DataFrame with the rolled-up subaccounts
rolled_up_df = df[df["id"].isin(all_child_accounts)]

# Save the rolled-up subaccounts to a new CSV file (e.g., "rolled_up_subaccounts.csv")
rolled_up_df.to_csv("rolled_up_subaccounts.csv", index=False)

# Print a success message
print(f"Rolled-up subaccounts saved to 'rolled_up_subaccounts.csv'")
92 changes: 91 additions & 1 deletion CD2/MiVideo.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MiVideo Queries

*This query is an attempt to find pages that have MiVideo content embedded for courss in a specified term and subaccount. Use the option to for wp.value.body like '%resource_link_lookup_uuid%' for LTI 1.3 video embeds and use wp.value.body like '%aakaf.mivideo.it.umich.edu%' for LTI 1.1 video embeds*
*Use this query to find pages that have MiVideo content embedded for courss in a specified term and subaccount. Use the option to for wp.value.body like '%resource_link_lookup_uuid%' for LTI 1.3 video embeds and use wp.value.body like '%aakaf.mivideo.it.umich.edu%' for LTI 1.1 video embeds*



Expand Down Expand Up @@ -28,4 +28,94 @@ WHERE co.value.enrollment_term_id = <TERM_ID>
-- AND wp.value.body like '%resource_link_lookup_uuid%'
-- AND wp.value.body like '%aakaf.mivideo.it.umich.edu%'
;
```

*Use this query to find pages that have MiVideo content embedded in specified courses. Use the option to for wp.value.body like '%resource_link_lookup_uuid%' for LTI 1.3 video embeds and use wp.value.body like '%aakaf.mivideo.it.umich.edu%' for LTI 1.1 video embeds*


```
SELECT co.value.enrollment_term_id as term_id
,et.value.name as term_name
,co.value.account_id as subaccount
,ac.value.name as subaccount_name
,co.key.id as course_id
,co.value.name as course_name
,co.value.workflow_state as course_status
,wp.value.title as page_title
,wp.value.body as page_body
,wp.value.url as page_url
FROM udp-umich-prod.canvas.courses co
JOIN udp-umich-prod.canvas.wiki_pages wp on wp.value.context_id = co.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on et.key.id = co.value.enrollment_term_id
JOIN udp-umich-prod.canvas.accounts ac on ac.key.id = co.value.account_id
WHERE co.key.id in <(list of course_id)>
AND co.value.workflow_state !='deleted'
AND wp.value.workflow_state != 'deleted'
AND wp.value.context_type = 'Course'
-- AND wp.value.body like '%resource_link_lookup_uuid%'
-- AND wp.value.body like '%aakaf.mivideo.it.umich.edu%'
;
```

*Use this query to find pages that have MiVideo content embedded in Canvas pages. Use enrollment terms to limit the amount of data returned*

```
SELECT DISTINCT et.value.name as term
,c.key.id as course_id
,wp.key.id as wiki_page_id
,wp.value.title as wiki_page_title
,wp.value.workflow_state as wiki_page_workflow_state
,wp.value.url as wiki_page_url
,wp.value.body as wiki_page_body
FROM udp-umich-prod.canvas.wiki_pages wp
JOIN udp-umich-prod.canvas.courses c on wp.value.context_id = c.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on c.value.enrollment_term_id = et.key.id
WHERE wp.value.body LIKE '%aakaf.mivideo.it.umich.edu%browseandembed%playerSkin%2F%'
AND wp.value.context_type = 'Course'
AND c.value.enrollment_term_id in (311,312)
AND wp.value.workflow_state !='deleted'
AND c.value.workflow_state !='deleted'
and wp.value.updated_at > TIMESTAMP('2023-02-15T00:00:00 UTC')
;

```
*Use this query to find the player types for MiVideo content embedded on Canvas pages. Limit the terms and last updated date.*
```
SELECT DISTINCT et.value.name as term
,c.key.id as course_id
,wp.key.id as wiki_page_id
,wp.value.title as wiki_page_title
,wp.value.workflow_state as wiki_page_workflow_state
,wp.value.url as wiki_page_url
,wp.value.body as wiki_page_body
FROM udp-umich-prod.canvas.wiki_pages wp
JOIN udp-umich-prod.canvas.courses c on wp.value.context_id = c.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on c.value.enrollment_term_id = et.key.id
WHERE wp.value.body LIKE '%aakaf.mivideo.it.umich.edu%browseandembed%playerSkin%2F%'
AND wp.value.context_type = 'Course'
AND c.value.enrollment_term_id in (311,312)
AND wp.value.workflow_state !='deleted'
AND c.value.workflow_state !='deleted'
--and wp.value.updated_at > TIMESTAMP('2023-02-15T00:00:00 UTC')
;

```
*Use this query to find thumbnail embeds for MiVideo content embeded on Canvas pages.*
```
SELECT et.value.name as term
,wp.value.context_id as course_id
,wp.key.id as page_id
,wp.value.workflow_state as page_workflow_state
,wp.value.title as page_title
FROM udp-umich-prod.canvas.wiki_pages wp
JOIN udp-umich-prod.canvas.courses c on wp.value.context_id = c.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on c.value.enrollment_term_id = et.key.id
WHERE wp.value.body LIKE '%aakaf.mivideo.it.umich.edu%browseandembed%playerSkin%thumbEmbed%'
AND wp.value.context_type = 'Course'
AND c.value.enrollment_term_id in (313, 314, 315)
AND wp.value.workflow_state !='deleted'
AND c.value.workflow_state !='deleted'
ORDER BY term, course_id
;

```
51 changes: 51 additions & 0 deletions CD2/discussions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Discussions Queries

*This query is used to find discussions in courses by subaccount and term for selected terms.*

```
SELECT dt.value.type as content_type
,dt.value.discussion_type as discussion_type
,dt.value.title as discussion_title
,dt.value.assignment_id as assignment_id
,dt.value.is_section_specific as section_specific
,dt.value.context_id as course_id
,co.value.name as course_name
,co.value.account_id as subaccount_id
,ac.value.name as subaccount_name
,co.value.enrollment_term_id as term_id
,et.value.name as term
FROM udp-umich-prod.canvas.discussion_topics dt
JOIN udp-umich-prod.canvas.courses co on dt.value.context_id = co.key.id
JOIN udp-umich-prod.canvas.accounts ac on co.value.account_id = ac.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on co.value.enrollment_term_id = et.key.id
WHERE dt.value.workflow_state !='deleted'
AND dt.value.context_type = 'Course'
AND co.value.workflow_state !='deleted'
AND et.key.id in (<LIST OF TERMS>)
;
```

*This query is used to find discussions in courses by subaccount and term for selected terms along with teachers for those courses.*

```
SELECT dt.value.type as content_type
,dt.value.discussion_type as discussion_type
,dt.value.title as discussion_title
,dt.value.assignment_id as assignment_id
,dt.value.is_section_specific as section_specific
,dt.value.context_id as course_id
,co.value.name as course_name
,co.value.account_id as subaccount_id
,ac.value.name as subaccount_name
,co.value.enrollment_term_id as term_id
,et.value.name as term
FROM udp-umich-prod.canvas.discussion_topics dt
JOIN udp-umich-prod.canvas.courses co on dt.value.context_id = co.key.id
JOIN udp-umich-prod.canvas.accounts ac on co.value.account_id = ac.key.id
JOIN udp-umich-prod.canvas.enrollment_terms et on co.value.enrollment_term_id = et.key.id
WHERE dt.value.workflow_state !='deleted'
AND dt.value.context_type = 'Course'
AND co.value.workflow_state !='deleted'
AND et.key.id in (<LIST OF TERMS>)
;
```
69 changes: 67 additions & 2 deletions CD2/enrollments.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,43 @@ WHERE en.value.course_id = <COURSE_ID>
AND en.value.type = 'StudentEnrollment'
AND en.value.workflow_state = 'active'
;


```

## Get enrolled courses for a user

*This query finds courses with an active enrollment for given Canvas users.*

```
SELECT courses.*
FROM
(
SELECT
co.value.name as course_name
,en.value.type as enrollment_type
,en.value.workflow_state as enrollment_status
,co.key.id as Course_ID
,co.value.sis_source_id as SIS_course_ID
,acc.key.id as account_id
,acc.value.name as account_name
,et.key.id as term_id
,et.value.name as term_name
FROM udp-umich-prod.canvas.enrollments as en
JOIN udp-umich-prod.canvas.pseudonyms ps on en.value.user_id = ps.value.user_id
JOIN udp-umich-prod.canvas.courses co on en.value.course_id = co.key.id
JOIN udp-umich-prod.canvas.users us on en.value.user_id = us.key.id
JOIN udp-umich-prod.canvas.enrollment_terms as et on co.value.enrollment_term_id = et.key.id
JOIN udp-umich-prod.canvas.accounts as acc on co.value.account_id = acc.key.id
WHERE ps.value.unique_id='<student_login_id>'
AND en.value.workflow_state != 'deleted'
) as courses,
ORDER BY courses.term_id DESC, courses.course_name DESC
;
```

## Get enrolled courses and course instructors

*This query finds courses with an active enrollment for given Canvas users and also returns the instructor name and email list.
*This query finds courses with an active enrollment for given Canvas users and also returns the instructor name and email list.*

```
select courses.*
Expand Down Expand Up @@ -119,3 +152,35 @@ and en.value.workflow_state != 'deleted'
where courses.Course_ID = cast(mart_co.lms_course_offering_id as INT64)
ORDER BY courses.term_id DESC, courses.course_name DESC;
```



## Get teacher enrollments on courses for a specified term.
*This query finds all people who are enrolled with a TeacherEnrollment type for courses within a specified term.*

```
SELECT courses.*
FROM
(
SELECT
co.value.name as course_name
,co.key.id as Course_ID
,et.key.id as term_id
,et.value.name as term_name
,ps.value.unique_id as uniqname
,en.value.type as enrollment_type
,ro.value.name as role_name
FROM udp-umich-prod.canvas.enrollments as en
JOIN udp-umich-prod.canvas.roles ro on en.value.role_id = ro.key.id
JOIN udp-umich-prod.canvas.pseudonyms ps on en.value.user_id = ps.value.user_id
JOIN udp-umich-prod.canvas.courses co on en.value.course_id = co.key.id
JOIN udp-umich-prod.canvas.users us on en.value.user_id = us.key.id
JOIN udp-umich-prod.canvas.enrollment_terms as et on co.value.enrollment_term_id = et.key.id
JOIN udp-umich-prod.canvas.accounts as acc on co.value.account_id = acc.key.id
WHERE et.key.id = <term id>
AND en.value.workflow_state = 'active'
AND en.value.type = 'TeacherEnrollment'
) as courses
ORDER BY courses.course_name DESC
;
```
Empty file added CD2/kalturaWikiEmbeds.md
Empty file.
Loading