Tabular Viewer — це Streamlit-додаток для зручного перегляду табличних даних і супутніх метаданих з локального каталогу. Підтримуються популярні формати даних, включаючи SAS (.sas7bdat, .xpt), CSV, Excel, а також автоматичне зіставлення зовнішніх специфікацій.
- Підтримка різних форматів:
.sas7bdat,.xpt,.csv,.xlsx - Автоматичне зчитування метаданих з SAS-файлів через
pyreadstat - Інтеграція зовнішніх метаданих: Завантаження та спроба зіставлення зовнішніх CSV/Excel файлів як метаданих (наприклад, файлів специфікацій змінних).
- Кастомний вибір директорії: Можливість вказати або вибрати довільний каталог для даних.
- Інтерфейс з вкладками:
- Метадані — перелік змінних, типів, довжини, форматів, описів
- Дані — перегляд таблиці з кількістю рядків і колонок
- Кешування для швидшої робот
Щоб запустити цей додаток, виконайте наступні кроки:
- Python 3.7+
- pip (менеджер пакетів Python)
-
Клонуйте репозиторій (якщо ви розмістите його на GitHub) або завантажте файли.
-
Відкрийте термінал або командний рядок у каталозі з файлом
app.py(або як ви назвали свій основний файл). -
Встановіть усі залежності з requirements.txt:
pip install -r requirements.txt
або вручну:
pip install streamlit pandas pyreadstat openpyxl tk
openpyxlпотрібен для роботи з файлами.xlsx.tk(Tkinter) потрібен для вікна вибору каталогу.
-
Створіть папку з назвою
data(або будь-яку іншу назву, яку ви вкажете в додатку) у тому ж каталозі, де знаходиться ваш файлmain.py. -
Помістіть свої табличні дані (файли
.sas7bdat,.xpt,.csv,.xlsx) та супутні метадані (якщо є, у форматах.csvабо.xlsx) в цю папку.Приклад структури каталогу:
. ├── main.py └── data/ ├── adam_atr.sas7bdat ├── adam_base.sas7bdat ├── adam_emp_b.sas7bdat ├── SDTM_spec_Variables.csv ├── dm.xpt ├── ADAM_spec.xlsx ├── t.sas7bdat ├── t.xpt └── t3.sas7bdat
-
У терміналі або командному рядку, перебуваючи в каталозі з файлом
main.py, виконайте:streamlit run main.py
Створити образ:
docker build -t tabular-viewer .Запустити:
docker run -p 8501:8501 tabular-viewerЯкщо потрібно змонтувати локальну папку data
docker run -p 8501:8501 -v "$(pwd)/data:/app/data" tabular-viewerПісля цього додаток буде доступний у браузері за адресою: http://localhost:8501
ВАЖЛИВО!! В контейнері немає графічного оточення. Контейнери не підтримують GUI за промовчанням, оскільки вони працюють у headless-режимі (без екрану)..Тому кнопка обирання папки працювати не буде
Після запуску додатку зʼявиться веб-інтерфейс Streamlit у наступному вигляді:

- Кнопка для вибору локальної папки з файлами даних
- Після вибору — список доступних файлів у цій папці
- Dropdown-меню для вибору конкретного файлу (SAS, XPT, CSV, XLSX)
- Автоматичне завантаження даних і метаданих після вибору
Інтерфейс містить дві вкладки:
- Таблиця зі змінними, їх описами, типами, форматами
- Джерело: або вбудовані SAS-метадані, або зовнішні специфікації
- Автоматичне зіставлення відповідного набору метаданих
- Можливість фільтрувати дані прямо через інтерфейс Streamlit (наприклад, за допомогою стандартного пошуку/фільтрів у таблицях)
- Підтримка інтерактивної роботи з таблицею: сортування, пошук, скрол
- Таблиця з даними (
DataFrame) - Відображення кількості рядків і колонок
- Можливість скролу для великих таблиць
- Можливість фільтрувати дані прямо через інтерфейс Streamlit (наприклад, за допомогою стандартного пошуку/фільтрів у таблицях)
- Підтримка інтерактивної роботи з таблицею: сортування, пошук, скрол
Streamlit — основа UI
tkinter — вибір директорії
pyreadstat — зчитування SAS/XPT і метаданих
pandas — робота з таблицями
@st.cache_data — кешування завантажень
Відкриває вікно вибору директорії (через tkinter) і повертає шлях.
Завантажує дані з обраного файлу. Повертає DataFrame та метадані (якщо є).
Підтримувані формати: .sas7bdat, .xpt, .csv, .xlsx.
Шукає у каталозі всі CSV/XLSX файли, які потенційно містять метадані.
Парсить їх і зберігає у словник.
Обробляє специфічний файл SDTM_spec_Variables.csv.
Автоматичне зіставлення метаданих до файлу даних:
- За назвою файлу
- За полем
Dataset - За перетином змінних між даними та метаданими
Описує кожну колонку на основі зовнішніх (metadata_df) і внутрішніх (_meta) метаданих.



