Public
Edited
Jul 10, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
viewof daily = Inputs.file({label: "UI Daily"})
Insert cell
raw_daily = daily.csv({typed: true})
Insert cell
Insert cell
Insert cell
Insert cell
viewof clean_daily = aq.from(raw_daily)
.derive({
'Active Jobs': d => +op.replace(d['Active Jobs'], ',',''),
'Exported Jobs': d => +op.replace(d['Exported Jobs'], ',',''),
'Expansion Jobs': d => +op.replace(d['Expansion Jobs'], ',',''),
'Original Jobs': d => +op.replace(d['Original Jobs'], ',',''),
Sponsored: d => +op.replace(d.Sponsored, ',',''),
Actual: d => +op.replace(d.Actual, ',',''),
'Total Applies': d => +d['Total Applies']
})
.derive({
spend_per_job: d => d.Actual / d['Exported Jobs'],
apps_per_job: d => d['Total Applies'] / d['Exported Jobs']
})
.view()
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
viewof clean_campaigns_tab = clean_base_campaigns_tab
.groupby('Parent Campaign name', 'business_line', 'Status')
.rollup({
active_jobs: d => op.sum(d['Active Jobs']),
exported_jobs: d => op.sum(d.Exported),
spend_goal: d => op.max(d['Spend Goal']),
spend: d => op.sum(d.Actual)
})
.derive({
'Parent Campaign name': d => op.replace(d['Parent Campaign name'], '?', '-'),
})
.derive({
'Parent Campaign name': d => op.replace(d['Parent Campaign name'], '- Paused', ''),
})
.derive({
'Parent Campaign name': d => op.trim(d['Parent Campaign name'])
})
.orderby(aq.desc('Parent Campaign name'))
.view()
Insert cell
viewof clean_base_campaigns_tab = aq.from(raw_campaigns)
.derive({
'Active Jobs': d => +op.replace(d['Active Jobs'], ',',''),
Exported: d => +op.replace(d.Exported, ',',''),
'Spend Goal': d => +op.replace(d['Spend Goal'], ',',''),
Actual: d => +op.replace(d.Actual, ',',''),
})
.derive({
business_line: d => op.includes(op.lower(d.Campaign), 'allied') == true ? 'Allied' :
op.includes(op.lower(d.Campaign), 'school') == true ? 'schools/education' :
op.includes(op.lower(d.Campaign), 'therapy/rehab') == true ? 'therapy/rehab' :
op.includes(op.lower(d.Campaign), 'per diem') == true ? 'per diem' :
op.includes(op.lower(d.Campaign), 'rn') == true ? 'RN' :
op.includes(op.lower(d.Campaign), 'interim') == true ? 'Interim Leadership' :
'Other'
})
.orderby(aq.desc('Campaign'))
.view()
Insert cell
raw_campaigns = campaigns_tab.csv({typed: true})
Insert cell
Insert cell
clean_budgets = aq.from(raw_budgets)
.filter(d => d.Employer == 'Aya Healthcare' || d.Employer == 'Aya Locums' || d.Employer == 'Aya Corporate')
.rename({Campaign: 'segment'}, {'Parent Campaign': 'campaign'})
.reify()
.derive({
campaign: d => d.campaign == null ? d.segment : d.campaign
})
.derive({
'Parent Campaign ID': d => d['Parent Campaign ID'] == null ? d['Campaign ID'] : d['Parent Campaign ID']
})
.groupby('Employer', 'campaign', 'Status')
.rollup({
'Monthly Budget': d => op.max(d['Monthly Budget'])
})
.filter(d => d['Monthly Budget'] != undefined)
.objects()
Insert cell
raw_budgets = FileAttachment("Campaigns-Premium - Campaigns-Premium (4).csv").csv({typed: true})
Insert cell
Insert cell
viewof performance_by_campaign = clean
.groupby('parent_campaign', 'business_line')
.rollup({
clicks: d => op.sum(d.clicks),
applies: d => op.sum(d.applies),
spend: d => op.sum(d.spend),
aco_array: d => op.array_agg_distinct(d.aco_type)
})
.orderby('business_line')
//.filter(d => op.includes(d.parent_campaign, 'Opera') == true)
.view()
Insert cell
Insert cell
Insert cell
viewof clean = aq.from(raw_data)
.filter(aq.escape(d => d.date >= start_date && d.date <= end_date))
.derive({
business_line: d => op.includes(op.lower(d.parent_campaign), 'allied') == true ? 'Allied' :
op.includes(op.lower(d.parent_campaign), 'school') == true ? 'schools/education' :
op.includes(op.lower(d.parent_campaign), 'therapy/rehab') == true ? 'therapy/rehab' :
op.includes(op.lower(d.segment), 'per diem') == true ? 'per diem' :
op.includes(op.lower(d.parent_campaign), 'rn') == true ? 'RN' :
op.includes(op.lower(d.segment), 'interim') == true ? 'Interim Leadership' :
'Other'
})
.derive({
parent_campaign: d => d.business_line == 'per diem' ? d.segment : d.parent_campaign
})
.derive({
segment_type: d => op.includes(op.lower(d.segment), 'low submissions') == true ? 'low submissions' :
op.includes(op.lower(d.segment), 'strategic') == true ? 'strategic' :
op.includes(op.lower(d.segment), 'catch') == true ? 'catch all' :
'Other'
})
.rename({parent_id: 'campaign_id'})
.orderby(aq.desc('parent_campaign'))
.view()
Insert cell
raw_data = file.csv({typed: true})
Insert cell
Insert cell
Insert cell
md `**Dates, etc**`
Insert cell
month_start = d3.utcMonth(new Date())
Insert cell
month_end = d3.utcDay.offset(d3.utcMonth(d3.utcMonth.offset(new Date(), 1)), -1)
Insert cell
month_domain = [month_start, month_end]
Insert cell
days_in_month = d3.timeDay.count(d3.utcDay.offset(month_start, -1), month_end)
Insert cell
days_since_start_of_month = d3.timeDay.count(month_start, new Date())
Insert cell
month_progress = days_since_start_of_month / days_in_month
Insert cell
year = d3.utcYear(new Date()).toISOString()
Insert cell
month = d3.utcMonth(new Date()).toISOString()
Insert cell
my_date = d3.utcParse('%Y-%m-%d')(year.slice(0,4) + '-' + month.slice(5,7) + '-' + days_since_start_of_month.toString())
Insert cell
data = [
{date: my_date}
]
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
// this is a really cool way of displaying tables. Much more aesthetically pleasing than the defaults of arquero and input.table

import { formatTable } from "@saneef/pretty-tables"
Insert cell
Insert cell
import {toc} from "@nebrius/indented-toc"
Insert cell
Insert cell
function sparkbar(max) {
return x => htl.html`<div style="
background: rgb(255, 155, 119, 0.75);
color: transparent;
width: ${100 * x / max}%;
float: right;
padding-right: 3px;
box-sizing: border-box;
overflow: visible;
display: flex;
justify-content: end;">${x.toLocaleString("en")}`
}
Insert cell
date_parser = d3.utcParse('%m/%d/%Y')
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
// sample of how to place html blocks in a grid

// html `<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; column-gap: 0px; row-gap: 5px;">
// ${viewof spend}
// ${viewof cpl}
// ${viewof cpc}
// </div>`
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more