# Подключение Streamlit

В этой статье мы поэтапно рассмотрим процесс создания дашборда с использованием Streamlit. Чтобы сделать его более наглядным, мы создадим дашборд, который подключается к аналитической базе данных и отслеживает статус транспортных средств в реальном времени.

{% hint style="info" %}
эта документация **IoT Query** и, в частности, описывает подключение Power BI к вашему хранилищу данных. Если вы всё ещё выбираете, какой BI-инструмент использовать, обратитесь к [Выбор BI-инструментов](/docs/analytics/ru/iot-query/connection-setup/selecting-bi-tools.md) обзору.
{% endhint %}

## Функции дашборда

* Отображение общего количества объектов
* Визуализация статусов движения (движется/остановлено/припарковано)
* Визуализация статусов соединения (активно/неактивно/офлайн)
* Подробная таблица с текущим статусом всех транспортных средств
* Фильтрация по типу транспортного средства, группе, статусу движения и статусу соединения
* Автоматическое обновление данных каждые 5 минут
* Переключение между светлой и тёмной темами

## Технические требования

* Python 3.8+
* Доступ в Интернет для подключения к базе данных
* Минимум 2 ГБ ОЗУ

## Установка и настройка

### 1. Клонируйте репозиторий

```sh
git clone https://github.com/SquareGPS/bi-intergrations.git
```

### 2. Создайте виртуальное окружение

```
# Windows
python -m venv venv
venv\Scripts\activate

# Linux/macOS
python -m venv venv
source venv/bin/activate
```

{% hint style="danger" %}
Убедитесь, что у Вас установлена Python 3.8 или выше. Вы можете проверить версию с помощью команды `python --version`.
{% endhint %}

### 3. Установите зависимости

После активации виртуального окружения установите все необходимые библиотеки:

```sh
pip install -r requirements.txt
```

## Подключение к базе данных

### 1. Создайте конфигурационный файл

Создайте `.env` файл в корневом каталоге проекта:

```
DB_HOST=your_db_host
DB_NAME=your_db_name
DB_USER=your_db_user
DB_PASS=your_db_password
DB_PORT=5432
DB_SCHEMA=raw_business_data
```

#### Справка по параметрам подключения

<table><thead><tr><th width="188.81817626953125">Параметр Lakehouse</th><th>Streamlit Setting Location</th><th>Примечания</th></tr></thead><tbody><tr><td><strong>Хост</strong></td><td><code>DB_HOST</code> в <code>.env</code> файл</td><td>Адрес сервера базы данных, указанный в вашем приветственном письме</td></tr><tr><td><strong>Порт</strong></td><td><code>DB_PORT</code> в <code>.env</code> файл</td><td>По умолчанию 5432 для PostgreSQL</td></tr><tr><td><strong>Имя базы данных</strong></td><td><code>DB_NAME</code> в <code>.env</code> файл</td><td>Имя базы данных, назначенное вам</td></tr><tr><td><strong>Имя пользователя</strong></td><td><code>DB_USER</code> в <code>.env</code> файл</td><td>Имя пользователя вашей базы данных</td></tr><tr><td><strong>Пароль</strong></td><td><code>DB_PASS</code> в <code>.env</code> файл</td><td>Ваш надежный пароль для базы данных</td></tr><tr><td><strong>Режим SSL</strong></td><td>Строка подключения в коде Python</td><td>Установите значение <strong>require</strong> в строке подключения</td></tr><tr><td><strong>Схема</strong></td><td><code>DB_SCHEMA</code> в <code>.env</code> файл</td><td>Укажите схему (<strong>raw_business_data</strong> или <strong>raw_telematics_data</strong>)</td></tr></tbody></table>

### 2. Получение учетных данных

Запросите учетные данные для подключения к демонстрационной базе данных, обратившись к администратору.

{% hint style="info" %}
Узел `.env` файл не должен быть включен в систему контроля версий (GitHub), чтобы обеспечить безопасность учетных данных. Файл `.gitignore` уже настроен на исключение этого файла.
{% endhint %}

## Запуск дашборда

После настройки подключения к базе данных запустите дашборд командой:

```
streamlit run moving_status_dashboard.py
```

После запуска Вы увидите сообщение, похожее на:

```
  Теперь Вы можете просмотреть свое приложение Streamlit в браузере.

  Локальный URL: http://localhost:8501
  Сетевой URL: http://192.168.1.5:8501
```

Откройте указанный URL в браузере. Дашборд будет доступен по адресу <http://localhost:8501> (или по сетевому URL, если Вы хотите открыть его с другого устройства в сети).

## Разработка пользовательских компонентов

Если Вы хотите изменить дашборд или создать новые компоненты:

### 1. Изменение существующего дашборда

Streamlit автоматически перезагружает приложение при изменении исходного кода. Просто отредактируйте файл `moving_status_dashboard.py` и сохраните изменения.

### 2. Добавление новых визуализаций

Чтобы добавить новые графики и диаграммы, используйте библиотеки:

* Plotly: `import plotly.express as px` или `import plotly.graph_objects as go`
* Встроенные визуализации Streamlit: `st.bar_chart()`, `st.line_chart()`, и т. д.

Пример добавления нового графика:

```python
import plotly.express as px

# Получение данных из базы данных
df = ... # Ваш запрос к базе данных

# Создание графика
fig = px.pie(df, values='count', names='status', title='Vehicle Statuses')
st.plotly_chart(fig, use_container_width=True)
```

### 3. Отладка

Для отладки используйте

```python
# Вывод в интерфейс Streamlit
st.write(f"Debug: {your_variable}")

# Вывод в консоль
print(f"Console debug: {your_variable}")

# Расширенный вывод данных
st.json(data_dict)
st.dataframe(pandas_dataframe)
```

## Устранение неполадок

### Проблемы с подключением к базе данных

* **Ошибка подключения:** Проверьте корректность учетных данных в `.env` файле и доступность базы данных
* **Ошибка SSL:** Убедитесь, что Ваш IP-адрес включен в allowlist для доступа к базе данных
* **Ошибки тайм-аута:** Проверьте стабильность интернет-соединения и настройки брандмауэра

### Проблемы с зависимостями

**Ошибка при установке psycopg2-binary:**

* Windows: `pip install pipwin && pipwin install psycopg2-binary`
* Linux: `sudo apt install python3-dev libpq-dev`
* macOS: `brew install postgresql`

**Конфликты зависимостей:**

* Создайте новое виртуальное окружение
* Устанавливайте зависимости по одной, начиная с streamlit

### Другие проблемы

Вот несколько приёмов, которые помогут вам устранить распространённые неполадки:

1. Обновление зависимостей: `pip install -r requirements.txt --upgrade`
2. Проверьте совместимость Python: `python --version` (должна быть 3.8+ )
3. При изменении кода добавляйте отладочные сообщения:

```
st.write(f"Debug: {your_variable}")
```

4. Ошибки кеша Streamlit: остановите приложение и запустите с флагом `--clear_cache` параметром:

```
streamlit run moving_status_dashboard.py --clear_cache
```

## Обработка потоковых данных не поддерживается.

После успешного подключения Power BI к вашему экземпляру Private Telematics Lakehouse мы рекомендуем вам:

* Изучить доступные схемы данных, просмотрев раздел [Обзор схемы](/docs/analytics/ru/iot-query/schema-overview.md) чтобы лучше понять структуру данных и взаимосвязи.
* Начните с простых запросов, ориентированных на конкретные бизнес-сущности, прежде чем строить сложные дашборды — ознакомьтесь с нашими [примерами запросов](/docs/analytics/ru/example-queries.md) для справки.

### **Поддержка**

По техническим вопросам или запросам на доступ к демонстрационной базе данных, пожалуйста, свяжитесь с: <support@squaregps.com>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://navixy.com/docs/analytics/ru/iot-query/connection-setup/selecting-bi-tools/connecting-streamlit.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
