2024-03-12 19:28:06 +03:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "x-ua-compatible" content = "ie=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta name = "generator" content = "ExDoc v0.31.1" >
< meta name = "project" content = "Plausible v0.0.1" >
< title > Plausible.Exports — Plausible v0.0.1< / title >
< link rel = "stylesheet" href = "dist/html-elixir-FM2CSD74.css" / >
< script src = "dist/handlebars.runtime-NWIB6V2M.js" > < / script >
< script src = "dist/handlebars.templates-43PMFBC7.js" > < / script >
2024-05-13 13:37:12 +03:00
< script src = "dist/sidebar_items-3DA817E9.js" > < / script >
2024-03-12 19:28:06 +03:00
< script src = "docs_config.js" > < / script >
< script async src = "dist/html-L4O5OK2K.js" > < / script >
< / head >
< body data-type = "modules" class = "page-module" >
< script >
try {
var settings = JSON.parse(localStorage.getItem('ex_doc:settings') || '{}');
if (settings.theme === 'dark' ||
((settings.theme === 'system' || settings.theme == null) & &
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
document.body.classList.add('dark')
}
} catch (error) { }
< / script >
< div class = "main" >
< button id = "sidebar-menu" class = "sidebar-button sidebar-toggle" aria-label = "toggle sidebar" aria-controls = "sidebar" >
< i class = "ri-menu-line ri-lg" title = "Collapse/expand sidebar" > < / i >
< / button >
< div class = "background-layer" > < / div >
< nav id = "sidebar" class = "sidebar" >
< div class = "sidebar-header" >
< div class = "sidebar-projectInfo" >
< a href = "readme.html" class = "sidebar-projectImage" >
< img src = "assets/logo.png" alt = "Plausible" / >
< / a >
< div >
< a href = "readme.html" class = "sidebar-projectName" translate = "no" >
Plausible
< / a >
< div class = "sidebar-projectVersion" translate = "no" >
v0.0.1
< / div >
< / div >
< / div >
< ul id = "sidebar-listNav" class = "sidebar-listNav" role = "tablist" >
< li >
< button id = "extras-list-tab-button" role = "tab" data-type = "extras" aria-controls = "extras-tab-panel" aria-selected = "true" tabindex = "0" >
Pages
< / button >
< / li >
< li >
< button id = "modules-list-tab-button" role = "tab" data-type = "modules" aria-controls = "modules-tab-panel" aria-selected = "false" tabindex = "-1" >
Modules
< / button >
< / li >
< li >
< button id = "tasks-list-tab-button" role = "tab" data-type = "tasks" aria-controls = "tasks-tab-panel" aria-selected = "false" tabindex = "-1" >
< span translate = "no" > Mix< / span > Tasks
< / button >
< / li >
< / ul >
< / div >
< div id = "extras-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "extras-list-tab-button" >
< ul id = "extras-full-list" class = "full-list" > < / ul >
< / div >
< div id = "modules-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "modules-list-tab-button" hidden >
< ul id = "modules-full-list" class = "full-list" > < / ul >
< / div >
< div id = "tasks-tab-panel" class = "sidebar-tabpanel" role = "tabpanel" aria-labelledby = "tasks-list-tab-button" hidden >
< ul id = "tasks-full-list" class = "full-list" > < / ul >
< / div >
< / nav >
< main class = "content" >
< output role = "status" id = "toast" > < / output >
< div class = "content-outer" >
< div id = "content" class = "content-inner" >
< div class = "top-search" >
< div class = "search-settings" >
< form class = "search-bar" action = "search.html" >
< label class = "search-label" >
< span class = "sr-only" > Search documentation of Plausible< / span >
< input name = "q" type = "text" class = "search-input" placeholder = "Search Documentation (press /)" autocomplete = "off" autocorrect = "off" autocapitalize = "off" spellcheck = "false" / >
< / label >
< button type = "submit" class = "search-button" aria-label = "Submit Search" >
< i class = "ri-search-2-line ri-lg" aria-hidden = "true" title = "Submit search" > < / i >
< / button >
< button type = "button" tabindex = "-1" class = "search-close-button" aria-hidden = "true" >
< i class = "ri-close-line ri-lg" title = "Cancel search" > < / i >
< / button >
< / form >
< div class = "autocomplete" >
< / div >
< button class = "icon-settings display-settings" >
< i class = "ri-settings-3-line" > < / i >
< span class = "sr-only" > Settings< / span >
< / button >
< / div >
< / div >
< h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L1" title = "View Source" class = "icon-action" rel = "help" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< span translate = "no" > Plausible.Exports< / span >
< small class = "app-vsn" translate = "no" > (Plausible v0.0.1)< / small >
< / h1 >
< section id = "moduledoc" >
< p > Contains functions to export data for events and sessions as Zip archives.< / p >
< / section >
< section id = "summary" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#summary" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< / a >
< span class = "text" > Summary< / span >
< / h1 >
2024-04-11 10:15:44 +03:00
< div class = "summary-types summary" >
< h2 >
< a href = "#types" > Types< / a >
< / h2 >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#t:export/0" translate = "no" > export()< / a >
< / div >
< / div >
< / div >
2024-03-12 19:28:06 +03:00
< div class = "summary-functions summary" >
< h2 >
< a href = "#functions" > Functions< / a >
< / h2 >
2024-03-21 13:36:18 +03:00
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#archive_filename/2" translate = "no" > archive_filename(domain, created_on)< / a >
2024-03-21 13:36:18 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Renders export archive filename.< / p > < / div >
2024-03-21 13:36:18 +03:00
< / div >
2024-03-12 19:28:06 +03:00
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#content_disposition/1" translate = "no" > content_disposition(filename)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Safely renders content disposition for an arbitrary export filename.< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#date_range/2" translate = "no" > date_range(site_id, timezone)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Returns the date range for the site's events data in site's timezone or < code class = "inline" > nil< / code > if there is no data< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#delete_local_export/1" translate = "no" > delete_local_export(site_id)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Deletes local export for a site< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-05-13 11:18:41 +03:00
< a href = "#delete_s3_export!/1" translate = "no" > delete_s3_export!(site_id)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-05-13 11:18:41 +03:00
< div class = "summary-synopsis" > < p > Deletes S3 export for a site. Raises if object storage is unavailable.< / p > < / div >
2024-04-11 10:15:44 +03:00
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#export_queries/2" translate = "no" > export_queries(site_id, opts \\ [])< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Builds Ecto queries to export data from < code class = "inline" > events_v2< / code > and < code class = "inline" > sessions_v2< / code >
tables into the format of < code class = "inline" > imported_*< / code > tables for a website.< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#get_last_export_job/1" translate = "no" > get_last_export_job(site_id)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Gets last CSV export job for a site< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#get_local_export/3" translate = "no" > get_local_export(site_id, domain, timezone)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Gets local export for a site< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-05-13 11:18:41 +03:00
< a href = "#get_s3_export!/2" translate = "no" > get_s3_export!(site_id, retries \\ 0)< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-05-13 11:18:41 +03:00
< div class = "summary-synopsis" > < p > Gets S3 export for a site. Raises if object storage is unavailable.< / p > < / div >
2024-04-09 22:00:31 +03:00
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#oban_listen/0" translate = "no" > oban_listen()< / a >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Subscribes to CSV export job notifications< / p > < / div >
2024-04-09 22:00:31 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
2024-04-11 10:15:44 +03:00
< a href = "#schedule_local_export/2" translate = "no" > schedule_local_export(site_id, email_to)< / a >
2024-04-09 22:00:31 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< div class = "summary-synopsis" > < p > Schedules CSV export job to local storage< / p > < / div >
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#schedule_s3_export/2" translate = "no" > schedule_s3_export(site_id, email_to)< / a >
< / div >
< div class = "summary-synopsis" > < p > Schedules CSV export job to S3 storage< / p > < / div >
2024-03-12 19:28:06 +03:00
< / div >
< div class = "summary-row" >
< div class = "summary-signature" >
< a href = "#stream_archive/3" translate = "no" > stream_archive(conn, named_queries, opts \\ [])< / a >
< / div >
< div class = "summary-synopsis" > < p > Creates a streamable Zip archive from the provided (named) Ecto queries.< / p > < / div >
< / div >
< / div >
< / section >
2024-04-11 10:15:44 +03:00
< section id = "types" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#types" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< / a >
< span class = "text" > Types< / span >
< / h1 >
< div class = "types-list" >
< section class = "detail" id = "t:export/0" >
< div class = "detail-header" >
< a href = "#t:export/0" class = "detail-link" title = "Link to this type" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this type< / span >
< / a >
< h1 class = "signature" translate = "no" > export()< / h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L97" class = "icon-action" rel = "help" title = "View Source" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
< pre translate = "no" > < span class = "attribute" > @type< / span > export() :: %{
path: < a href = "https://hexdocs.pm/elixir/Path.html#t:t/0" > Path.t< / a > (),
name: < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > (),
expires_at: < a href = "https://hexdocs.pm/elixir/DateTime.html#t:t/0" > DateTime.t< / a > () | nil,
size: < a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > ()
}< / pre >
< / div >
< / section >
< / section >
< / div >
< / section >
2024-03-12 19:28:06 +03:00
< section id = "functions" class = "details-list" >
< h1 class = "section-heading" >
< a class = "hover-link" href = "#functions" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< / a >
< span class = "text" > Functions< / span >
< / h1 >
< div class = "functions-list" >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "archive_filename/2" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#archive_filename/2" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > archive_filename(domain, created_on)< / h1 >
2024-03-12 19:28:06 +03:00
2024-04-11 10:15:44 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L71" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
2024-05-13 22:54:08 +03:00
< p > Renders export archive filename.< / p > < p > Examples:< / p > < pre > < code class = "makeup elixir" translate = "no" > < span class = "gp unselectable" > iex> < / span > < span class = "n" > archive_filename< / span > < span class = "p" data-group-id = "8885142922-1" > (< / span > < span class = "s" > " plausible.io" < / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "c" > _created_on< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "ld" > ~D[2024-12-31]< / span > < span class = "p" data-group-id = "8885142922-1" > )< / span > < span class = "w" >
2024-04-11 10:15:44 +03:00
< / span > < span class = "s" > " plausible_io_20241231.zip" < / span > < / code > < / pre >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "content_disposition/1" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#content_disposition/1" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > content_disposition(filename)< / h1 >
2024-03-12 19:28:06 +03:00
2024-04-11 10:15:44 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L87" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
2024-05-13 22:54:08 +03:00
< p > Safely renders content disposition for an arbitrary export filename.< / p > < p > Examples:< / p > < pre > < code class = "makeup elixir" translate = "no" > < span class = "gp unselectable" > iex> < / span > < span class = "n" > content_disposition< / span > < span class = "p" data-group-id = "0986556938-1" > (< / span > < span class = "s" > " plausible_io_20241231.zip" < / span > < span class = "p" data-group-id = "0986556938-1" > )< / span > < span class = "w" >
2024-04-11 10:15:44 +03:00
< / span > < span class = "s" > " attachment; filename=< / span > < span class = "se" > \" < / span > < span class = "s" > plausible_io_20241231.zip< / span > < span class = "se" > \" < / span > < span class = "s" > " < / span > < span class = "w" >
2024-04-09 22:27:01 +03:00
2024-05-13 22:54:08 +03:00
< / span > < span class = "gp unselectable" > iex> < / span > < span class = "n" > content_disposition< / span > < span class = "p" data-group-id = "0986556938-2" > (< / span > < span class = "s" > " 📊.zip" < / span > < span class = "p" data-group-id = "0986556938-2" > )< / span > < span class = "w" >
2024-04-11 10:15:44 +03:00
< / span > < span class = "s" > " attachment; filename=< / span > < span class = "se" > \" < / span > < span class = "s" > plausible-export.zip< / span > < span class = "se" > \" < / span > < span class = "s" > ; filename*=utf-8' ' %F0%9F%93%8A.zip" < / span > < / code > < / pre >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "date_range/2" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#date_range/2" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > date_range(site_id, timezone)< / h1 >
2024-03-12 19:28:06 +03:00
2024-05-13 11:18:41 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L189" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-05-09 09:47:43 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > date_range(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (), < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) :: < a href = "https://hexdocs.pm/elixir/Date.Range.html#t:t/0" > Date.Range.t< / a > () | nil< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Returns the date range for the site's events data in site's timezone or < code class = "inline" > nil< / code > if there is no data< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "delete_local_export/1" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#delete_local_export/1" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > delete_local_export(site_id)< / h1 >
2024-03-12 19:28:06 +03:00
2024-05-02 21:54:28 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L121" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > delete_local_export(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > ()) :: :ok< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Deletes local export for a site< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-05-13 11:18:41 +03:00
< section class = "detail" id = "delete_s3_export!/1" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-05-13 11:18:41 +03:00
< a href = "#delete_s3_export!/1" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-05-13 11:18:41 +03:00
< h1 class = "signature" translate = "no" > delete_s3_export!(site_id)< / h1 >
2024-03-12 19:28:06 +03:00
2024-05-13 11:18:41 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L175" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-05-13 11:18:41 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > delete_s3_export!(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > ()) :: :ok< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-05-13 11:18:41 +03:00
< p > Deletes S3 export for a site. Raises if object storage is unavailable.< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "export_queries/2" >
< span id = "export_queries/1" > < / span >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#export_queries/2" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > export_queries(site_id, opts \\ [])< / h1 >
2024-03-12 19:28:06 +03:00
2024-05-13 11:18:41 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L215" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > export_queries(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (),
extname: < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > (),
date_range: < a href = "https://hexdocs.pm/elixir/Date.Range.html#t:t/0" > Date.Range.t< / a > (),
timezone: < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()
2024-04-30 10:59:09 +03:00
) :: %{required(< a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) => < a href = "https://hexdocs.pm/ecto/3.11.2/Ecto.Query.html#t:t/0" > Ecto.Query.t< / a > ()}< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Builds Ecto queries to export data from < code class = "inline" > events_v2< / code > and < code class = "inline" > sessions_v2< / code >
tables into the format of < code class = "inline" > imported_*< / code > tables for a website.< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "get_last_export_job/1" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#get_last_export_job/1" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > get_last_export_job(site_id)< / h1 >
2024-03-12 19:28:06 +03:00
2024-04-11 10:15:44 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L49" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > get_last_export_job(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > ()) :: < a href = "https://hexdocs.pm/oban/2.17.2/Oban.Job.html#t:t/0" > Oban.Job.t< / a > () | nil< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Gets last CSV export job for a site< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "get_local_export/3" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#get_local_export/3" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > get_local_export(site_id, domain, timezone)< / h1 >
2024-03-12 19:28:06 +03:00
2024-05-02 21:54:28 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L106" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > get_local_export(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (), < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > (), < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) :: < a href = "#t:export/0" > export< / a > () | nil< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Gets local export for a site< / p >
2024-04-09 22:00:31 +03:00
< / section >
< / section >
2024-05-13 11:18:41 +03:00
< section class = "detail" id = "get_s3_export!/2" >
< span id = "get_s3_export!/1" > < / span >
2024-04-09 22:00:31 +03:00
< div class = "detail-header" >
2024-05-13 11:18:41 +03:00
< a href = "#get_s3_export!/2" class = "detail-link" title = "Link to this function" >
2024-04-09 22:00:31 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-05-13 11:18:41 +03:00
< h1 class = "signature" translate = "no" > get_s3_export!(site_id, retries \\ 0)< / h1 >
2024-04-09 22:00:31 +03:00
2024-05-13 11:18:41 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L139" class = "icon-action" rel = "help" title = "View Source" >
2024-04-09 22:00:31 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
2024-04-09 22:27:01 +03:00
< div class = "specs" >
2024-05-13 11:18:41 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > get_s3_export!(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (), < a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > non_neg_integer< / a > ()) :: < a href = "#t:export/0" > export< / a > () | nil< / pre >
2024-04-09 22:27:01 +03:00
< / div >
2024-05-13 11:18:41 +03:00
< p > Gets S3 export for a site. Raises if object storage is unavailable.< / p >
2024-04-11 10:15:44 +03:00
< / section >
< / section >
< section class = "detail" id = "oban_listen/0" >
< div class = "detail-header" >
< a href = "#oban_listen/0" class = "detail-link" title = "Link to this function" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
< h1 class = "signature" translate = "no" > oban_listen()< / h1 >
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L58" class = "icon-action" rel = "help" title = "View Source" >
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< p > Subscribes to CSV export job notifications< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "schedule_local_export/2" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#schedule_local_export/2" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > schedule_local_export(site_id, email_to)< / h1 >
2024-03-12 19:28:06 +03:00
2024-04-11 10:15:44 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L27" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > schedule_local_export(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (), < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) ::
{:ok, < a href = "https://hexdocs.pm/oban/2.17.2/Oban.Job.html#t:t/0" > Oban.Job.t< / a > ()} | {:error, :no_data}< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Schedules CSV export job to local storage< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
2024-04-11 10:15:44 +03:00
< section class = "detail" id = "schedule_s3_export/2" >
2024-03-12 19:28:06 +03:00
< div class = "detail-header" >
2024-04-11 10:15:44 +03:00
< a href = "#schedule_s3_export/2" class = "detail-link" title = "Link to this function" >
2024-03-12 19:28:06 +03:00
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
2024-04-11 10:15:44 +03:00
< h1 class = "signature" translate = "no" > schedule_s3_export(site_id, email_to)< / h1 >
2024-03-12 19:28:06 +03:00
2024-04-11 10:15:44 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L11" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-11 10:15:44 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > schedule_s3_export(< a href = "https://hexdocs.pm/elixir/typespecs.html#basic-types" > pos_integer< / a > (), < a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) ::
{:ok, < a href = "https://hexdocs.pm/oban/2.17.2/Oban.Job.html#t:t/0" > Oban.Job.t< / a > ()} | {:error, :no_data}< / pre >
2024-03-12 19:28:06 +03:00
< / div >
2024-04-11 10:15:44 +03:00
< p > Schedules CSV export job to S3 storage< / p >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
< section class = "detail" id = "stream_archive/3" >
< span id = "stream_archive/2" > < / span >
< div class = "detail-header" >
< a href = "#stream_archive/3" class = "detail-link" title = "Link to this function" >
< i class = "ri-link-m" aria-hidden = "true" > < / i >
< span class = "sr-only" > Link to this function< / span >
< / a >
< h1 class = "signature" translate = "no" > stream_archive(conn, named_queries, opts \\ [])< / h1 >
2024-05-13 11:18:41 +03:00
< a href = "https://github.com/plausible/analytics/blob/main/lib/plausible/exports.ex#L554" class = "icon-action" rel = "help" title = "View Source" >
2024-03-12 19:28:06 +03:00
< i class = "ri-code-s-slash-line" aria-hidden = "true" > < / i >
< span class = "sr-only" > View Source< / span >
< / a >
< / div >
< section class = "docstring" >
< div class = "specs" >
2024-04-30 10:59:09 +03:00
< pre translate = "no" > < span class = "attribute" > @spec< / span > stream_archive(< a href = "https://hexdocs.pm/db_connection/2.6.0/DBConnection.html#t:t/0" > DBConnection.t< / a > (), %{required(< a href = "https://hexdocs.pm/elixir/String.html#t:t/0" > String.t< / a > ()) => < a href = "https://hexdocs.pm/ecto/3.11.2/Ecto.Query.html#t:t/0" > Ecto.Query.t< / a > ()}, [
2024-03-12 19:28:06 +03:00
< a href = "https://hexdocs.pm/ch/0.2.5/Ch.html#t:query_option/0" > Ch.query_option< / a > ()
]) ::
< a href = "https://hexdocs.pm/elixir/Enumerable.html#t:t/0" > Enumerable.t< / a > ()< / pre >
< / div >
2024-05-13 22:54:08 +03:00
< p > Creates a streamable Zip archive from the provided (named) Ecto queries.< / p > < p > Example usage:< / p > < pre > < code class = "makeup elixir" translate = "no" > < span class = "p" data-group-id = "9985512584-1" > {< / span > < span class = "ss" > :ok< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > pool< / span > < span class = "p" data-group-id = "9985512584-1" > }< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "nc" > Ch< / span > < span class = "o" > .< / span > < span class = "n" > start_link< / span > < span class = "p" data-group-id = "9985512584-2" > (< / span > < span class = "ss" > pool_size< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "mi" > 1< / span > < span class = "p" data-group-id = "9985512584-2" > )< / span > < span class = "w" >
2024-03-12 19:28:06 +03:00
2024-05-13 22:54:08 +03:00
< / span > < span class = "nc" > DBConnection< / span > < span class = "o" > .< / span > < span class = "n" > run< / span > < span class = "p" data-group-id = "9985512584-3" > (< / span > < span class = "n" > pool< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "k" data-group-id = "9985512584-4" > fn< / span > < span class = "w" > < / span > < span class = "n" > conn< / span > < span class = "w" > < / span > < span class = "o" > -> < / span > < span class = "w" >
2024-03-12 19:28:06 +03:00
< / span > < span class = "n" > conn< / span > < span class = "w" >
2024-05-13 22:54:08 +03:00
< / span > < span class = "o" > |> < / span > < span class = "w" > < / span > < span class = "n" > stream_archive< / span > < span class = "p" data-group-id = "9985512584-5" > (< / span > < span class = "n" > export_queries< / span > < span class = "p" data-group-id = "9985512584-6" > (< / span > < span class = "c" > _site_id< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "mi" > 1< / span > < span class = "p" data-group-id = "9985512584-6" > )< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "ss" > format< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s" > " CSVWithNames" < / span > < span class = "p" data-group-id = "9985512584-5" > )< / span > < span class = "w" >
< / span > < span class = "o" > |> < / span > < span class = "w" > < / span > < span class = "nc" > Stream< / span > < span class = "o" > .< / span > < span class = "n" > into< / span > < span class = "p" data-group-id = "9985512584-7" > (< / span > < span class = "nc" > File< / span > < span class = "o" > .< / span > < span class = "n" > stream!< / span > < span class = "p" data-group-id = "9985512584-8" > (< / span > < span class = "s" > " export.zip" < / span > < span class = "p" data-group-id = "9985512584-8" > )< / span > < span class = "p" data-group-id = "9985512584-7" > )< / span > < span class = "w" >
< / span > < span class = "o" > |> < / span > < span class = "w" > < / span > < span class = "nc" > Stream< / span > < span class = "o" > .< / span > < span class = "n" > run< / span > < span class = "p" data-group-id = "9985512584-9" > (< / span > < span class = "p" data-group-id = "9985512584-9" > )< / span > < span class = "w" >
< / span > < span class = "k" data-group-id = "9985512584-4" > end< / span > < span class = "p" data-group-id = "9985512584-3" > )< / span > < / code > < / pre >
2024-03-12 19:28:06 +03:00
< / section >
< / section >
< / div >
< / section >
< footer class = "footer" >
< p >
< span class = "line" >
< button class = "a-main footer-button display-quick-switch" title = "Search HexDocs packages" >
Search HexDocs
< / button >
< a href = "Plausible.epub" title = "ePub version" >
Download ePub version
< / a >
< / span >
< / p >
< p class = "built-using" >
Built using
< a href = "https://github.com/elixir-lang/ex_doc" title = "ExDoc" target = "_blank" rel = "help noopener" translate = "no" > ExDoc< / a > (v0.31.1) for the
< a href = "https://elixir-lang.org" title = "Elixir" target = "_blank" translate = "no" > Elixir programming language< / a >
< / p >
< / footer >
< / div >
< / div >
< / main >
< / div >
< script src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" > < / script >
< script > mermaid . initialize ( { startOnLoad : true } ) < / script >
< / body >
< / html >