tutorial

Подключение источников данных в DataLens

Полное руководство по подключению различных источников данных: PostgreSQL, MySQL, Google Sheets, API и облачные хранилища

D
DataLens Team
5 минут
#подключение данных#postgresql#mysql#api#google sheets

Подключение источников данных в DataLens


DataLens поддерживает широкий спектр источников данных. Рассмотрим основные способы подключения с практическими примерами и лучшими практиками.


Поддерживаемые источники данных


### Реляционные базы данных


- ✅ PostgreSQL

- ✅ MySQL

- ✅ Oracle Database

- ✅ Microsoft SQL Server

- ✅ ClickHouse


### Файлы и таблицы


- ✅ CSV файлы

- ✅ Excel файлы

- ✅ Google Sheets

- ✅ Apache Parquet

- ✅ JSON файлы


### API и веб-сервисы


- ✅ REST API

- ✅ GraphQL

- ✅ SOAP веб-сервисы

- ✅ Yandex API

- ✅ Custom API


### Облачные хранилища


- ✅ Yandex Object Storage

- ✅ Amazon S3

- ✅ Google Cloud Storage

- ✅ Azure Blob Storage


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


### Подготовка базы данных


```sql

-- Создание тестовой таблицы для демонстрации

CREATE TABLE sales (

id SERIAL PRIMARY KEY,

product_name VARCHAR(100) NOT NULL,

category VARCHAR(50),

sale_date DATE NOT NULL,

amount DECIMAL(10,2),

quantity INTEGER,

region VARCHAR(50)

);


-- Заполнение тестовыми данными

INSERT INTO sales (product_name, category, sale_date, amount, quantity, region) VALUES

('iPhone 14', 'Electronics', '2025-01-01', 79900.00, 1, 'Moscow'),

('Samsung Galaxy', 'Electronics', '2025-01-01', 65000.00, 1, 'St. Petersburg'),

('MacBook Pro', 'Electronics', '2025-01-02', 120000.00, 1, 'Moscow'),

('iPad Air', 'Electronics', '2025-01-02', 45000.00, 1, 'Yekaterinburg');

```

### Настройка подключения в DataLens


1. **Создание подключения**


```

В DataLens Console:

1. Нажмите "Подключения" → "Создать"

2. Выберите "PostgreSQL"

3. Заполните параметры подключения:

- Хост: your-postgres-host.com

- Порт: 5432 (по умолчанию)

- База данных: your_database

- Пользователь: your_username

- Пароль: your_password

```


2. **Настройка безопасности**


```sql

-- Рекомендуется создать отдельного пользователя для DataLens

CREATE USER datalens_user WITH PASSWORD 'secure_password';

GRANT SELECT ON sales TO datalens_user;

GRANT USAGE ON SCHEMA public TO datalens_user;

```


3. **Настройка SSL (для продакшена)**

```

В настройках подключения:

- Включить SSL: Да

- SSL Mode: Require

- SSL CA Certificate: [загрузить сертификат]

```


Google Sheets: Быстрое подключение


### Подготовка таблицы


1. Создайте Google Sheet с заголовками:


```

| Date | Product | Category | Sales | Quantity |

|------------|----------|-------------|-------|----------|

| 2025-01-01 | Product1 | Electronics | 1000 | 5 |

| 2025-01-02 | Product2 | Books | 500 | 2 |

```


2. Настройте публичный доступ:

```

1. Файл → Настроить доступ

2. "Доступно всем по ссылке" → "Читатель"

3. Скопируйте URL таблицы

```


### Подключение в DataLens


```

1. Создать → Подключение → Google Sheets

2. Вставить URL таблицы

3. Выбрать лист с данными

4. Дождаться загрузки и проверки данных

5. Настроить типы столбцов

```

REST API: Подключение через HTTP


### Подготовка API


```javascript

// Пример Node.js Express API

const express = require('express');

const app = express();


app.get('/api/sales', (req, res) => {

res.json([

{

id: 1,

product: 'Laptop',

amount: 75000,

date: '2025-01-01',

},

{

id: 2,

product: 'Phone',

amount: 25000,

date: '2025-01-01',

},

]);

});


app.listen(3000);

```

### Настройка HTTP подключения


1. **Создание подключения**


```

В DataLens:

1. Создать → Подключение → HTTP

2. URL: https://your-api.com/api/sales

3. Метод: GET

4. Headers:

- Authorization: Bearer your_token

- Content-Type: application/json

```


2. **Настройка параметров**

```

- Timeout: 30 секунд

- Retry count: 3 раза

- Cache TTL: 300 секунд

```


Сложные подключения: Yandex Cloud


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


```yaml

Пример конфигурации ClickHouse

host: your-clickhouse.cloud.yandex.net

port: 8443

database: default

user: datalens_user

password: your_password

ssl: true

```

### Yandex Object Storage


```yaml

Подключение к S3 совместимому хранилищу

endpoint: https://storage.yandexcloud.net

bucket: your-bucket-name

access_key_id: your_access_key

secret_access_key: your_secret_key

region: ru-central1

```

Управление подключениями


### Мониторинг состояния


```sql

-- Проверка статуса подключений через системные таблицы ClickHouse

SELECT

connection_name,

status,

last_updated,

error_message

FROM system.connections

WHERE connection_name LIKE 'datalens_%'

```

### Оптимизация производительности


1. **Кэширование данных**


```

- Настройте TTL для кэширования

- Используйте инкрементное обновление

- Мониторьте размер кэша

```


2. **Оптимизация запросов**

```sql

-- Создание индексов для ускорения запросов

CREATE INDEX idx_sales_date ON sales(sale_date);

CREATE INDEX idx_sales_category ON sales(category);

```


### Резервное копирование


```bash

Скрипт создания дампа PostgreSQL

pg_dump -h your-host -U your-user -d your-database \

--schema-only > schema_backup.sql

pg_dump -h your-host -U your-user -d your-database \

--data-only > data_backup.sql

```

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


### Частые ошибки


1. **Connection timeout**


```

Решения:

- Увеличить timeout в настройках

- Проверить сетевую связность

- Оптимизировать запросы

```


2. **Authentication failed**


```

Решения:

- Проверить учетные данные

- Убедиться в наличии прав доступа

- Проверить срок действия токенов

```


3. **SSL certificate errors**

```

Решения:

- Обновить сертификаты CA

- Настроить правильный SSL mode

- Проверить системное время

```


### Логи и диагностика


```sql

-- Просмотр логов в ClickHouse

SELECT * FROM system.query_log

WHERE query LIKE '%your_table%'

ORDER BY event_time DESC

LIMIT 100;

```

Лучшие практики


### Безопасность


1. 🔒 Используйте отдельные учетные записи для DataLens

2. 🔒 Применяйте принцип наименьших привилегий

3. 🔒 Регулярно обновляйте пароли и токены

4. 🔒 Используйте SSL для всех подключений


### Производительность


1. ⚡ Создавайте индексы на часто запрашиваемые поля

2. ⚡ Используйте партиционирование больших таблиц

3. ⚡ Настройте кэширование для статических данных

4. ⚡ Мониторьте размер результатов запросов


### Мониторинг


1. 📊 Настройте алерты на недоступность источников

2. 📊 Отслеживайте время ответа API

3. 📊 Мониторьте использование квот и лимитов

4. 📊 Ведите логи всех подключений


---


_Помощь с настройкой подключений: [blog@datalens.ru](mailto:blog@datalens.ru)_