reading data attachments in confluence and jira
Not every record is down a shaft. Some were left on a page or an issue, where they wait for whoever opens the attachment, and this brief is about reading them there: how Data Lens reads inside your Atlassian site, what it asks for, and how the macro and the panel are used.
Data Lens, in its Confluence and its Jira edition, renders a data file attachment as a paged table inside the page or the issue, with no download first, and the file never leaves Atlassian.
how it reads
Attachments are read in small byte ranges through the Confluence or Jira API, as the viewing user. A large file is up before it has been read through, because a page fetches only the slice on screen; a whole-file search, the record index of a JSONL file, the level scan of a log or a plain text file and the inflate of a gzipped file do read the whole attachment, in ranges. A reader who cannot download an attachment cannot see it here either: permissions follow the site. The table is built in your browser. The apps have no backend of their own and make no request to any server outside Atlassian, and no copy of an attachment is kept anywhere.
what it asks for
The Confluence app asks for two scopes and both are reads: read:page:confluence, to list the data file attachments of the page the macro sits on and of a second page named in its configuration, and read:attachment:confluence, to fetch byte ranges of the file you open. The Jira app asks for one, read:jira-work, the classic read scope, which lists the issue's attachments and reads the one you open. Neither app holds a write scope.
what it stores
Almost nothing. The Confluence macro stores its own settings inside the page it sits on, a pinned attachment for instance, and both apps keep a few things in your browser storage (the theme, the ids of the attachments you open and the text of your searches, up to 200 of each, the notices they have shown and your review answer; the Confluence app also keeps the view you left each file on), never a copy of a file. Nothing goes to a server outside Atlassian; the security policy says how the apps handle data in more detail.
in confluence
Edit a page that has data file attachments and insert the Data Lens macro (type /lens in the editor). The macro lists the page's data files; click one and it opens as a table, and any row opens as JSON with a copy button. To pin a file, edit the macro and pick an attachment in its configuration; the page then opens straight into that file for every reader. The list shows the first 50 attachments of a page. The configuration can also name a second page, whose data files list beside this page's.
in jira
In Jira the viewer is a panel: on an issue with data files attached, the app actions button under the title has a Data Lens entry, and the panel it opens lists those files. If only one of them is a format the viewer knows, it opens straight away. In both apps a log or a plain text file is line indexed on the way in; when the level scan has finished, chips appear with the number of ERROR, WARN, INFO, DEBUG and TRACE lines in the file. Clicking a chip narrows the view to that level, clicking it again lets the whole log back in, and the continuation lines of a stack trace stay with the view, unleveled.
formats
Both apps open CSV and TSV (delimiter sniffing, header detection, quoted fields), JSONL and NDJSON, Parquet with snappy, gzip, zstd or lz4 columns, Excel .xlsx and .xlsm, read as data with macros never run and a legacy .xls refused with a plain message, .log, .txt and .out files, and gzipped line formats: .log.gz, .jsonl.gz and .csv.gz in Jira, gzipped JSONL, NDJSON, CSV, TSV and logs in Confluence. A gzipped file is inflated in the browser under a 384 MB decompressed ceiling, and a larger one asks for a download instead. Both write the open table to a CSV download.
search and schema
Search scans the whole file and reports a hit count; the arrows jump between matches and Aa toggles case. Excel workbooks render the first visible sheet and list every sheet in the Schema tab with row counts, and Parquet files get a Schema tab with column types, codecs, encodings and per-column statistics.