Подключение к базам данных и получение данных
Библиотека Kotlin DataFrame поддерживает наиболее распространённые базы данных SQL:
Посмотрите примеры использования Kotlin DataFrame с SQL на GitHub.
Перед началом
Чтобы выполнить инструкции этого руководства:
Выберите File | New | Kotlin Notebook.
-
Добавьте зависимость от драйвера Java Database Connectivity (JDBC) для вашей базы данных в первую ячейку блокнота.
Например, чтобы подключиться к базе данных MariaDB, добавьте:
USE { dependencies("org.mariadb.jdbc:mariadb-java-client:$version") } -
Импортируйте Kotlin DataFrame:
%use dataframe
Запустите ячейку с кодом, содержащую строку
%use dataframe, прежде чем запускать другие ячейки с кодом, чтобы библиотека DataFrame и её API стали доступны в блокноте.
Для работы с руководством можно также добавить DataFrame в качестве зависимости Gradle или Maven.
Подключение к базе данных
Чтобы подключиться к базе данных, создайте конфигурацию подключения с помощью функции DbConnectionConfig():
-
Импортируйте следующие функции:
import org.jetbrains.kotlinx.dataframe.io.DbConnectionConfig import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
-
Укажите параметры подключения (URL, имя пользователя, пароль) с помощью функции
DbConnectionConfig():val URL = "YOUR_URL" val USER_NAME = "YOUR_USERNAME" val PASSWORD = "YOUR_PASSWORD" val dbConfig = DbConnectionConfig(URL, USER_NAME, PASSWORD)
Изучение схемы базы данных
Перед загрузкой данных изучите схемы базы данных, чтобы узнать, какие таблицы в ней есть и какие столбцы они содержат. Используйте схемы, чтобы выбрать таблицу для загрузки в DataFrame.
Чтобы получить схемы всех созданных пользователями таблиц в базе данных, используйте функцию DataFrameSchema.readAllSqlTables():
val dataSchemas = DataFrameSchema.readAllSqlTables(dbConfig)
dataSchemas.forEach { (tableName, schema) ->
println("---Schema for table: $tableName---")
println(schema)
println()
}
Загрузка данных
Изучив схемы базы данных и выбрав нужные данные, загрузите их в DataFrame.
Kotlin DataFrame предлагает два способа загрузки данных из базы данных:
Загрузить данные непосредственно из таблицы.
Загрузить результат пользовательского SQL-запроса.
Оба способа возвращают DataFrame, который можно изучать, преобразовывать и анализировать.
Загрузка данных из таблицы
Чтобы загрузить данные из таблицы, используйте функцию DataFrame.readSqlTable().
В следующем примере загружаются первые 100 строк из таблицы movies:
val moviesDf = DataFrame.readSqlTable(
dbConfig = dbConfig,
tableName = "movies",
limit = 100
)
moviesDf
Загрузка данных с помощью SQL-запроса
Чтобы выполнить конкретный SQL-запрос к базе данных, используйте функцию DataFrame.readSqlQuery(). Этот способ удобен, когда нужно загрузить определённые столбцы, объединить таблицы, отфильтровать строки или агрегировать данные в базе данных.
Получим набор данных о фильмах режиссёра Квентина Тарантино. Этот запрос выбирает сведения о фильмах и объединяет жанры для каждого фильма:
val TARANTINO_FILMS_SQL_QUERY = """
SELECT name, year, rank, GROUP_CONCAT(genre) as "genres"
FROM movies JOIN movies_directors ON movie_id = movies.id
JOIN directors ON directors.id=director_id LEFT JOIN movies_genres ON movies.id = movies_genres.movie_id
WHERE directors.first_name = "Quentin" AND directors.last_name = "Tarantino"
GROUP BY name, year, rank
ORDER BY year
"""
val tarantinoMoviesDf = DataFrame.readSqlQuery(dbConfig, TARANTINO_FILMS_SQL_QUERY)
tarantinoMoviesDf
Обработка данных
Загрузив данные из базы данных в DataFrame, вы можете обрабатывать их с помощью операций DataFrame.
Например, обработаем данные из предыдущего раздела. Следующий код:
Заменяет отсутствующие значения в столбце
yearс помощью функции.fillNA().Преобразует столбец в
Intс помощью функции.convert().Оставляет только фильмы, выпущенные после 2000 года, с помощью функции
.filter().
val filteredTarantinoMovies = tarantinoMoviesDf
.fillNA { year }.with { 0 }
.convert { year }.toInt()
.filter { year > 2000 }
filteredTarantinoMovies
Анализ данных
Используйте библиотеку DataFrame, чтобы группировать, сортировать и агрегировать данные, выявляя и изучая закономерности.
Например, прочитаем данные об актёрах из таблицы actors и найдём 20 самых распространённых имён:
// Extract data from the actors table
val actorDf = DataFrame.readSqlTable(dbConfig, "actors", 10000)
val top20ActorNames = actorDf
// Groups the data by the first_name column
.groupBy { first_name }
// Counts the occurrences of each unique first name
.count()
// Sorts the results in descending order of count
.sortByDesc("count")
// Selects the top 20 most frequent names for analysis.
.take(20)
Что дальше
Изучите визуализацию данных с помощью библиотеки Kandy
Дополнительные сведения о визуализации данных см. в разделе Визуализация данных с помощью Kandy
Подробный обзор инструментов и ресурсов для работы с данными и их анализа в Kotlin см. в разделе Библиотеки Kotlin и Java для анализа данных
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/data-analysis-connect-to-db.html