The aws:quicksight/refreshSchedule:RefreshSchedule resource, part of the Pulumi AWS provider, defines when and how QuickSight datasets reload data from their sources. This guide focuses on three capabilities: refresh intervals (hourly, weekly, monthly), full vs incremental refresh types, and timezone and time-of-day controls.
Refresh schedules depend on existing QuickSight datasets. Incremental refreshes require datasets configured with ingestion time columns that track when records were added or modified. The examples are intentionally small. Combine them with your own dataset configurations and data source connections.
Schedule hourly full refreshes
Hourly schedules provide near-real-time visibility for dashboards tracking operational metrics.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.quicksight.RefreshSchedule("example", {
dataSetId: "dataset-id",
scheduleId: "schedule-id",
schedule: {
refreshType: "FULL_REFRESH",
scheduleFrequency: {
interval: "HOURLY",
},
},
});
import pulumi
import pulumi_aws as aws
example = aws.quicksight.RefreshSchedule("example",
data_set_id="dataset-id",
schedule_id="schedule-id",
schedule={
"refresh_type": "FULL_REFRESH",
"schedule_frequency": {
"interval": "HOURLY",
},
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/quicksight"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := quicksight.NewRefreshSchedule(ctx, "example", &quicksight.RefreshScheduleArgs{
DataSetId: pulumi.String("dataset-id"),
ScheduleId: pulumi.String("schedule-id"),
Schedule: &quicksight.RefreshScheduleScheduleArgs{
RefreshType: pulumi.String("FULL_REFRESH"),
ScheduleFrequency: &quicksight.RefreshScheduleScheduleScheduleFrequencyArgs{
Interval: pulumi.String("HOURLY"),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Quicksight.RefreshSchedule("example", new()
{
DataSetId = "dataset-id",
ScheduleId = "schedule-id",
Schedule = new Aws.Quicksight.Inputs.RefreshScheduleScheduleArgs
{
RefreshType = "FULL_REFRESH",
ScheduleFrequency = new Aws.Quicksight.Inputs.RefreshScheduleScheduleScheduleFrequencyArgs
{
Interval = "HOURLY",
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.quicksight.RefreshSchedule;
import com.pulumi.aws.quicksight.RefreshScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleScheduleFrequencyArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new RefreshSchedule("example", RefreshScheduleArgs.builder()
.dataSetId("dataset-id")
.scheduleId("schedule-id")
.schedule(RefreshScheduleScheduleArgs.builder()
.refreshType("FULL_REFRESH")
.scheduleFrequency(RefreshScheduleScheduleScheduleFrequencyArgs.builder()
.interval("HOURLY")
.build())
.build())
.build());
}
}
resources:
example:
type: aws:quicksight:RefreshSchedule
properties:
dataSetId: dataset-id
scheduleId: schedule-id
schedule:
refreshType: FULL_REFRESH
scheduleFrequency:
interval: HOURLY
The refreshType property controls whether QuickSight reloads all data (FULL_REFRESH) or only new records (INCREMENTAL_REFRESH). The scheduleFrequency block sets the interval; HOURLY runs at the top of each hour. This configuration keeps dashboards current without specifying exact times or timezones.
Schedule weekly incremental refreshes
Large datasets often use incremental refreshes to reduce processing time by loading only changed records.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.quicksight.RefreshSchedule("example", {
dataSetId: "dataset-id",
scheduleId: "schedule-id",
schedule: {
refreshType: "INCREMENTAL_REFRESH",
scheduleFrequency: {
interval: "WEEKLY",
timeOfTheDay: "01:00",
timezone: "Europe/London",
refreshOnDay: {
dayOfWeek: "MONDAY",
},
},
},
});
import pulumi
import pulumi_aws as aws
example = aws.quicksight.RefreshSchedule("example",
data_set_id="dataset-id",
schedule_id="schedule-id",
schedule={
"refresh_type": "INCREMENTAL_REFRESH",
"schedule_frequency": {
"interval": "WEEKLY",
"time_of_the_day": "01:00",
"timezone": "Europe/London",
"refresh_on_day": {
"day_of_week": "MONDAY",
},
},
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/quicksight"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := quicksight.NewRefreshSchedule(ctx, "example", &quicksight.RefreshScheduleArgs{
DataSetId: pulumi.String("dataset-id"),
ScheduleId: pulumi.String("schedule-id"),
Schedule: &quicksight.RefreshScheduleScheduleArgs{
RefreshType: pulumi.String("INCREMENTAL_REFRESH"),
ScheduleFrequency: &quicksight.RefreshScheduleScheduleScheduleFrequencyArgs{
Interval: pulumi.String("WEEKLY"),
TimeOfTheDay: pulumi.String("01:00"),
Timezone: pulumi.String("Europe/London"),
RefreshOnDay: &quicksight.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs{
DayOfWeek: pulumi.String("MONDAY"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Quicksight.RefreshSchedule("example", new()
{
DataSetId = "dataset-id",
ScheduleId = "schedule-id",
Schedule = new Aws.Quicksight.Inputs.RefreshScheduleScheduleArgs
{
RefreshType = "INCREMENTAL_REFRESH",
ScheduleFrequency = new Aws.Quicksight.Inputs.RefreshScheduleScheduleScheduleFrequencyArgs
{
Interval = "WEEKLY",
TimeOfTheDay = "01:00",
Timezone = "Europe/London",
RefreshOnDay = new Aws.Quicksight.Inputs.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs
{
DayOfWeek = "MONDAY",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.quicksight.RefreshSchedule;
import com.pulumi.aws.quicksight.RefreshScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleScheduleFrequencyArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new RefreshSchedule("example", RefreshScheduleArgs.builder()
.dataSetId("dataset-id")
.scheduleId("schedule-id")
.schedule(RefreshScheduleScheduleArgs.builder()
.refreshType("INCREMENTAL_REFRESH")
.scheduleFrequency(RefreshScheduleScheduleScheduleFrequencyArgs.builder()
.interval("WEEKLY")
.timeOfTheDay("01:00")
.timezone("Europe/London")
.refreshOnDay(RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs.builder()
.dayOfWeek("MONDAY")
.build())
.build())
.build())
.build());
}
}
resources:
example:
type: aws:quicksight:RefreshSchedule
properties:
dataSetId: dataset-id
scheduleId: schedule-id
schedule:
refreshType: INCREMENTAL_REFRESH
scheduleFrequency:
interval: WEEKLY
timeOfTheDay: 01:00
timezone: Europe/London
refreshOnDay:
dayOfWeek: MONDAY
Incremental refreshes require a dataset column that tracks ingestion time. The timeOfTheDay property sets when the refresh runs (24-hour format), and timezone ensures it fires in the correct region. The refreshOnDay block specifies dayOfWeek for weekly schedules. This configuration extends the basic example with precise timing controls.
Schedule monthly refreshes on specific days
Monthly refreshes suit datasets that aggregate historical data or support month-end reporting.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.quicksight.RefreshSchedule("example", {
dataSetId: "dataset-id",
scheduleId: "schedule-id",
schedule: {
refreshType: "INCREMENTAL_REFRESH",
scheduleFrequency: {
interval: "MONTHLY",
timeOfTheDay: "01:00",
timezone: "Europe/London",
refreshOnDay: {
dayOfMonth: "1",
},
},
},
});
import pulumi
import pulumi_aws as aws
example = aws.quicksight.RefreshSchedule("example",
data_set_id="dataset-id",
schedule_id="schedule-id",
schedule={
"refresh_type": "INCREMENTAL_REFRESH",
"schedule_frequency": {
"interval": "MONTHLY",
"time_of_the_day": "01:00",
"timezone": "Europe/London",
"refresh_on_day": {
"day_of_month": "1",
},
},
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/quicksight"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := quicksight.NewRefreshSchedule(ctx, "example", &quicksight.RefreshScheduleArgs{
DataSetId: pulumi.String("dataset-id"),
ScheduleId: pulumi.String("schedule-id"),
Schedule: &quicksight.RefreshScheduleScheduleArgs{
RefreshType: pulumi.String("INCREMENTAL_REFRESH"),
ScheduleFrequency: &quicksight.RefreshScheduleScheduleScheduleFrequencyArgs{
Interval: pulumi.String("MONTHLY"),
TimeOfTheDay: pulumi.String("01:00"),
Timezone: pulumi.String("Europe/London"),
RefreshOnDay: &quicksight.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs{
DayOfMonth: pulumi.String("1"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Quicksight.RefreshSchedule("example", new()
{
DataSetId = "dataset-id",
ScheduleId = "schedule-id",
Schedule = new Aws.Quicksight.Inputs.RefreshScheduleScheduleArgs
{
RefreshType = "INCREMENTAL_REFRESH",
ScheduleFrequency = new Aws.Quicksight.Inputs.RefreshScheduleScheduleScheduleFrequencyArgs
{
Interval = "MONTHLY",
TimeOfTheDay = "01:00",
Timezone = "Europe/London",
RefreshOnDay = new Aws.Quicksight.Inputs.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs
{
DayOfMonth = "1",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.quicksight.RefreshSchedule;
import com.pulumi.aws.quicksight.RefreshScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleScheduleFrequencyArgs;
import com.pulumi.aws.quicksight.inputs.RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new RefreshSchedule("example", RefreshScheduleArgs.builder()
.dataSetId("dataset-id")
.scheduleId("schedule-id")
.schedule(RefreshScheduleScheduleArgs.builder()
.refreshType("INCREMENTAL_REFRESH")
.scheduleFrequency(RefreshScheduleScheduleScheduleFrequencyArgs.builder()
.interval("MONTHLY")
.timeOfTheDay("01:00")
.timezone("Europe/London")
.refreshOnDay(RefreshScheduleScheduleScheduleFrequencyRefreshOnDayArgs.builder()
.dayOfMonth("1")
.build())
.build())
.build())
.build());
}
}
resources:
example:
type: aws:quicksight:RefreshSchedule
properties:
dataSetId: dataset-id
scheduleId: schedule-id
schedule:
refreshType: INCREMENTAL_REFRESH
scheduleFrequency:
interval: MONTHLY
timeOfTheDay: 01:00
timezone: Europe/London
refreshOnDay:
dayOfMonth: '1'
For monthly intervals, use dayOfMonth instead of dayOfWeek to specify which day of the month triggers the refresh. The value “1” runs on the first day of each month. This configuration replaces the weekly day-of-week control with monthly day-of-month scheduling.
Beyond these examples
These snippets focus on specific refresh schedule features: refresh intervals (hourly, weekly, monthly), full vs incremental refresh types, and timezone and time-of-day scheduling. They’re intentionally minimal rather than complete data pipeline configurations.
The examples reference pre-existing infrastructure such as QuickSight datasets with defined schemas, and datasets configured for incremental refresh where applicable. They focus on scheduling configuration rather than dataset provisioning.
To keep things focused, common scheduling patterns are omitted, including:
- Daily refresh schedules (interval: DAILY)
- Start date configuration for schedule activation
- Error handling and retry behavior
- Multiple schedules per dataset
These omissions are intentional: the goal is to illustrate how each scheduling feature is wired, not provide drop-in data refresh modules. See the QuickSight RefreshSchedule resource reference for all available configuration options.
Let's configure AWS QuickSight Refresh Schedules
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Configuration & Scheduling
FULL_REFRESH and INCREMENTAL_REFRESH.interval to HOURLY in scheduleFrequency. The hourly example doesn’t specify timeOfTheDay or timezone.interval to WEEKLY and configure refreshOnDay with dayOfWeek (e.g., MONDAY). You must also specify timeOfTheDay and timezone.interval to MONTHLY and configure refreshOnDay with dayOfMonth (e.g., "1"). You must also specify timeOfTheDay and timezone.HOURLY example doesn’t include timeOfTheDay or timezone, while the WEEKLY and MONTHLY examples do. This suggests they’re required for non-hourly intervals.Import & Management
123456789012,dataset-id,schedule-id.Using a different cloud?
Explore analytics guides for other cloud providers: