diff --git a/build.gradle.kts b/build.gradle.kts index e160c83..6714ac6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import java.util.* plugins { - kotlin("jvm") version "2.0.0" + kotlin("jvm") version "2.0.20" id("org.jetbrains.kotlinx.dataframe") version "0.14.1" } @@ -10,6 +10,7 @@ version = "1.0-SNAPSHOT" repositories { mavenCentral() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") } dependencies { @@ -17,16 +18,16 @@ dependencies { implementation ("org.jetbrains.kotlinx:kandy-lets-plot:0.7.0") implementation ("org.jetbrains.kotlinx:kandy-api:0.7.0") implementation ("org.mariadb.jdbc:mariadb-java-client:3.1.4") + kotlinCompilerPluginClasspath("org.jetbrains.kotlinx.dataframe:compiler-plugin-all:0.14.1") testImplementation(kotlin("test")) } - val props = Properties() file("local.properties").inputStream().use { props.load(it) } dataframes { schema { - data = "jdbc:mariadb://localhost:3306/imdb" + data = "jdbc:mariadb://localhost:3307/imdb" name = "org.jetbrains.kotlinx.dataframe.examples.jdbc.Actors" jdbcOptions { user = props.getProperty("db.user") @@ -35,7 +36,7 @@ dataframes { } } schema { - data = "jdbc:mariadb://localhost:3306/imdb" + data = "jdbc:mariadb://localhost:3307/imdb" name = "org.jetbrains.kotlinx.dataframe.examples.jdbc.TarantinoFilms" jdbcOptions { user = System.getenv("DB_USER") ?: props.getProperty("db.user") @@ -58,4 +59,12 @@ tasks.test { } kotlin { jvmToolchain(11) +} + +tasks.compileKotlin { + compilerOptions { + freeCompilerArgs.addAll("-P", "plugin:org.jetbrains.kotlinx.dataframe:path=${projectDir.absolutePath}") + freeCompilerArgs.addAll("-P", "plugin:org.jetbrains.kotlinx.dataframe:schemas=${layout.buildDirectory.file("generated").get().asFile.absolutePath}") + } + compilerExecutionStrategy.set(org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy.IN_PROCESS) } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 7fc6f1f..6899da9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,2 @@ kotlin.code.style=official +kotlin.dataframe.add.ksp=false diff --git a/notebooks/imdb.ipynb b/notebooks/imdb.ipynb index 3642eec..4ba020d 100644 --- a/notebooks/imdb.ipynb +++ b/notebooks/imdb.ipynb @@ -3,8 +3,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-09-24T09:53:20.609282200Z", - "start_time": "2024-09-24T09:53:19.934276Z" + "end_time": "2024-09-25T13:21:21.666609Z", + "start_time": "2024-09-25T13:21:19.485739700Z" } }, "cell_type": "code", @@ -19,8 +19,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-09-24T09:53:24.989290300Z", - "start_time": "2024-09-24T09:53:20.661280400Z" + "end_time": "2024-09-25T13:21:39.311710900Z", + "start_time": "2024-09-25T13:21:21.685689400Z" } }, "cell_type": "code", @@ -31,8 +31,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-09-24T09:53:25.058811300Z", - "start_time": "2024-09-24T09:53:24.996291700Z" + "end_time": "2024-09-25T13:21:39.481706Z", + "start_time": "2024-09-25T13:21:39.328404800Z" } }, "cell_type": "code", @@ -64,7 +64,7 @@ { "cell_type": "code", "source": [ - "val URL = \"jdbc:mariadb://localhost:3306/imdb\"\n", + "val URL = \"jdbc:mariadb://localhost:3307/imdb\"\n", "val USER_NAME = \"root\"\n", "val PASSWORD = \"pass\"\n", "\n", @@ -81,8 +81,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:25.768841300Z", - "start_time": "2024-09-24T09:53:25.065812400Z" + "end_time": "2024-09-25T13:21:40.939474Z", + "start_time": "2024-09-25T13:21:39.494671Z" } }, "outputs": [ @@ -152,8 +152,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:26.531840800Z", - "start_time": "2024-09-24T09:53:25.804841100Z" + "end_time": "2024-09-25T13:21:42.191895Z", + "start_time": "2024-09-25T13:21:40.981362600Z" } }, "outputs": [ @@ -275,8 +275,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:27.309887500Z", - "start_time": "2024-09-24T09:53:26.611841900Z" + "end_time": "2024-09-25T13:21:43.333417300Z", + "start_time": "2024-09-25T13:21:42.229129Z" } }, "outputs": [ @@ -461,7 +461,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529152"></table>\n", + " <table class="dataframe" id="df_50331648"></table>\n", "\n", "<p class="dataframe_description">... showing only top 20 of 10000 rows</p><p class="dataframe_description">DataFrame: rowsCount = 10000, columnsCount = 4</p>\n", "\n", @@ -746,10 +746,10 @@ "{ name: "<span title=\"first_name: String\">first_name</span>", children: [], rightAlign: false, values: ["Michael","Eloy","Dieguito","Antonio","Jos&#233;","F&#233;lix","Marcial","Jos&#233;","Francisco","V&#237;ctor","Antonio","Luis","Janny","Antonio","Baltazar","Luis Roberto","Murray the","N&#233;stor","Tony","Pollino"] }, \n", "{ name: "<span title=\"last_name: String\">last_name</span>", children: [], rightAlign: false, values: ["&#39;babeepower&#39; Viera","&#39;Chincheta&#39;","&#39;El Cigala&#39;","&#39;El de Chipiona&#39;","&#39;El Franc&#233;s&#39;","&#39;El Gato&#39;","&#39;El Jalisco&#39;","&#39;El Morito&#39;","&#39;El Ni&#241;o de la Manola&#39;","&#39;El Payaso&#39;","&#39;El Pesca&#237;to&#39;","&#39;El Plojo&#39;","&#39;el Portugues&#39;","&#39;El Rilete&#39;","&#39;El Toro&#39;","&#39;Formiga&#39;","&#39;K&#39;","&#39;Kick Boxer&#39;","&#39;La Chispa&#39;","&#39;Romero&#39;"] }, \n", "{ name: "<span title=\"gender: String\">gender</span>", children: [], rightAlign: false, values: ["M","M","M","M","M","M","M","M","M","M","M","M","M","M","M","M","M","M","M","M"] }, \n", - "], id: 788529152, rootId: 788529152, totalRows: 10000 } ) });\n", + "], id: 50331648, rootId: 50331648, totalRows: 10000 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529152) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331648) });\n", "\n", "\n", " </script>\n", @@ -921,10 +921,10 @@ " \n", " \n", " \n", - "
idfirst_namelast_namegender
2Michael'babeepower' VieraM
3Eloy'Chincheta'M
4Dieguito'El Cigala'M
5Antonio'El de Chipiona'M
6José'El Francés'M
7Félix'El Gato'M
8Marcial'El Jalisco'M
9José'El Morito'M
10Francisco'El Niño de la Manola'M
11Víctor'El Payaso'M
12Antonio'El Pescaíto'M
13Luis'El Plojo'M
14Janny'el Portugues'M
15Antonio'El Rilete'M
16Baltazar'El Toro'M
17Luis Roberto'Formiga'M
18Murray the'K'M
19Néstor'Kick Boxer'M
20Tony'La Chispa'M
21Pollino'Romero'M
\n", + "
idfirst_namelast_namegender
2Michael'babeepower' VieraM
3Eloy'Chincheta'M
4Dieguito'El Cigala'M
5Antonio'El de Chipiona'M
6José'El Francés'M
7Félix'El Gato'M
8Marcial'El Jalisco'M
9José'El Morito'M
10Francisco'El Niño de la Manola'M
11Víctor'El Payaso'M
12Antonio'El Pescaíto'M
13Luis'El Plojo'M
14Janny'el Portugues'M
15Antonio'El Rilete'M
16Baltazar'El Toro'M
17Luis Roberto'Formiga'M
18Murray the'K'M
19Néstor'Kick Boxer'M
20Tony'La Chispa'M
21Pollino'Romero'M
\n", " \n", " \n", " " ], @@ -960,8 +960,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:28.007882900Z", - "start_time": "2024-09-24T09:53:27.402882700Z" + "end_time": "2024-09-25T13:21:44.471809600Z", + "start_time": "2024-09-25T13:21:43.365963400Z" } }, "outputs": [ @@ -1146,7 +1146,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529154"></table>\n", + " <table class="dataframe" id="df_50331650"></table>\n", "\n", "<p class="dataframe_description">DataFrame: rowsCount = 20, columnsCount = 2</p>\n", "\n", @@ -1429,10 +1429,10 @@ "/*<!--*/\n", "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"first_name: String\">first_name</span>", children: [], rightAlign: false, values: ["David","John","Daniel","Peter","Robert","Michael","Antonio","Luis","Paul","Jos&#233;","Richard","A.","Carlos","Frank","Joe","Steve","Jorge","Roberto","Tony","James"] }, \n", "{ name: "<span title=\"count: Int\">count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">80</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">74</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">49</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">46</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">46</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">45</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">42</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">41</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">40</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">39</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">38</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">36</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">35</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">34</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">34</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">33</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">33</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">33</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">32</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] }, \n", - "], id: 788529154, rootId: 788529154, totalRows: 20 } ) });\n", + "], id: 50331650, rootId: 50331650, totalRows: 20 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529154) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331650) });\n", "\n", "\n", " </script>\n", @@ -1604,10 +1604,10 @@ " \n", " \n", " \n", - "
first_namecount
David80
John74
Daniel49
Peter46
Robert46
Michael45
Antonio42
Luis41
Paul40
José39
Richard38
A.36
Carlos35
Frank34
Joe34
Steve33
Jorge33
Roberto33
Tony32
James30
\n", + "
first_namecount
David80
John74
Daniel49
Peter46
Robert46
Michael45
Antonio42
Luis41
Paul40
José39
Richard38
A.36
Carlos35
Frank34
Joe34
Steve33
Jorge33
Roberto33
Tony32
James30
\n", " \n", " \n", " " ], @@ -1637,8 +1637,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:28.893437Z", - "start_time": "2024-09-24T09:53:28.200883300Z" + "end_time": "2024-09-25T13:21:46.185596700Z", + "start_time": "2024-09-25T13:21:44.786695900Z" } }, "outputs": [ @@ -1652,7 +1652,7 @@ " <script type="text/javascript" data-lets-plot-script="library" src="https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.3.3/js-package/distr/lets-plot.min.js"></script>\n", " </head>\n", " <body>\n", - " <div id="LafJQH"></div>\n", + " <div id="QI6wBa"></div>\n", " <script type="text/javascript" data-lets-plot-script="plot">\n", " var plotSpec={\n", ""mapping":{\n", @@ -1682,11 +1682,11 @@ "}\n", "}]\n", "};\n", - " var plotContainer = document.getElementById("LafJQH");\n", + " var plotContainer = document.getElementById("QI6wBa");\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " </script>\n", " </body>\n", - "</html>\"> \n", + "</html>\"> \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1884,7 +1884,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1932,7 +1932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2203,10 +2203,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", "\n", - " " + " " ], "application/plot+json": { "output_type": "lets_plot_spec", @@ -2308,8 +2308,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-09-24T09:53:29.721376800Z", - "start_time": "2024-09-24T09:53:29.267436600Z" + "end_time": "2024-09-25T13:21:47.347514500Z", + "start_time": "2024-09-25T13:21:46.328383400Z" } }, "cell_type": "code", @@ -2506,7 +2506,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529158"></table>\n", + " <table class="dataframe" id="df_50331654"></table>\n", "\n", "<p class="dataframe_description">... showing only top 20 of 23000 rows</p><p class="dataframe_description">DataFrame: rowsCount = 23000, columnsCount = 4</p>\n", "\n", @@ -2791,10 +2791,10 @@ "{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1971</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1971</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1939</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1999</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1996</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1906</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1983</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1987</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1983</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1989</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1989</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1988</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1981</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1921</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1935</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1966</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1999</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1942</span></span>"] }, \n", "{ name: "<span title=\"rank: Float\">rank</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,7</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,5</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">9,6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,8</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,7</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1,6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,4</span></span>"] }, \n", "{ name: "<span title=\"genre: String\">genre</span>", children: [], rightAlign: false, values: ["Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Horror","Comedy","Horror","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Horror","Comedy","Comedy"] }, \n", - "], id: 788529158, rootId: 788529158, totalRows: 23000 } ) });\n", + "], id: 50331654, rootId: 50331654, totalRows: 23000 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529158) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331654) });\n", "\n", "\n", " </script>\n", @@ -2966,10 +2966,10 @@ " \n", " \n", " \n", - "
nameyearrankgenre
$19716,400000Comedy
$1,000,000 Duck19715,000000Comedy
$1000 a Touchdown19396,700000Comedy
$3019997,500000Comedy
$40,00019969,600000Comedy
'?' Motorist, The19066,800000Comedy
'A' gai waak19837,200000Comedy
'A' gai waak juk jaap19877,200000Comedy
'Babicky dobjejte presne!'19835,600000Horror
'burbs, The19895,900000Comedy
'burbs, The19895,900000Horror
'Crocodile' Dundee II19884,900000Comedy
'E'19817,900000Comedy
'High Sign', The19217,700000Comedy
'Hyp-Nut-Tist', The19356,100000Comedy
'Java Madness' formerly titled 'Coffe...19956,600000Comedy
'J to tedy beru, sfe...!'19775,200000Comedy
'Manos' the Hands of Fate19661,600000Horror
'Ne gnstige Gelegenheit19994,600000Comedy
'Neath Brooklyn Bridge19425,400000Comedy
\n", + "
nameyearrankgenre
$19716,400000Comedy
$1,000,000 Duck19715,000000Comedy
$1000 a Touchdown19396,700000Comedy
$3019997,500000Comedy
$40,00019969,600000Comedy
'?' Motorist, The19066,800000Comedy
'A' gai waak19837,200000Comedy
'A' gai waak juk jaap19877,200000Comedy
'Babicky dobjejte presne!'19835,600000Horror
'burbs, The19895,900000Comedy
'burbs, The19895,900000Horror
'Crocodile' Dundee II19884,900000Comedy
'E'19817,900000Comedy
'High Sign', The19217,700000Comedy
'Hyp-Nut-Tist', The19356,100000Comedy
'Java Madness' formerly titled 'Coffe...19956,600000Comedy
'J to tedy beru, sfe...!'19775,200000Comedy
'Manos' the Hands of Fate19661,600000Horror
'Ne gnstige Gelegenheit19994,600000Comedy
'Neath Brooklyn Bridge19425,400000Comedy
\n", " \n", " \n", " " ], @@ -2997,8 +2997,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:30.327375100Z", - "start_time": "2024-09-24T09:53:29.825376Z" + "end_time": "2024-09-25T13:21:48.471285800Z", + "start_time": "2024-09-25T13:21:47.515805400Z" } }, "outputs": [ @@ -3183,7 +3183,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529162"></table>\n", + " <table class="dataframe" id="df_50331658"></table>\n", "\n", "<p class="dataframe_description">... showing only top 20 of 204 rows</p><p class="dataframe_description">DataFrame: rowsCount = 204, columnsCount = 3</p>\n", "\n", @@ -3467,10 +3467,10 @@ "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1896</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1896</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1897</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1898</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1898</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1899</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1899</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1900</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1901</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1902</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1903</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1904</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1905</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1906</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1907</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1908</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1909</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1909</span></span>"] }, \n", "{ name: "<span title=\"genre: String\">genre</span>", children: [], rightAlign: false, values: ["Comedy","Comedy","Comedy","Horror","Comedy","Comedy","Horror","Comedy","Horror","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Comedy","Horror"] }, \n", "{ name: "<span title=\"meanRank: Double\">meanRank</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,100000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,850000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3,550000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,250000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,500000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,620000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3,200000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,280000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3,300000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,612500</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,741667</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,366667</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,375000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,953846</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4,563636</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6,066667</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,480000</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,416667</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,066667</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,100000</span></span>"] }, \n", - "], id: 788529162, rootId: 788529162, totalRows: 204 } ) });\n", + "], id: 50331658, rootId: 50331658, totalRows: 204 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529162) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331658) });\n", "\n", "\n", " </script>\n", @@ -3642,10 +3642,10 @@ " \n", " \n", " \n", - "
yeargenremeanRank
1892Comedy5,100000
1895Comedy6,850000
1896Comedy3,550000
1896Horror4,250000
1897Comedy4,500000
1898Comedy4,620000
1898Horror3,200000
1899Comedy4,280000
1899Horror3,300000
1900Comedy4,612500
1901Comedy4,741667
1902Comedy4,366667
1903Comedy5,375000
1904Comedy4,953846
1905Comedy4,563636
1906Comedy6,066667
1907Comedy5,480000
1908Comedy5,416667
1909Comedy5,066667
1909Horror5,100000
\n", + "
yeargenremeanRank
1892Comedy5,100000
1895Comedy6,850000
1896Comedy3,550000
1896Horror4,250000
1897Comedy4,500000
1898Comedy4,620000
1898Horror3,200000
1899Comedy4,280000
1899Horror3,300000
1900Comedy4,612500
1901Comedy4,741667
1902Comedy4,366667
1903Comedy5,375000
1904Comedy4,953846
1905Comedy4,563636
1906Comedy6,066667
1907Comedy5,480000
1908Comedy5,416667
1909Comedy5,066667
1909Horror5,100000
\n", " \n", " \n", " " ], @@ -3674,8 +3674,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:30.707404900Z", - "start_time": "2024-09-24T09:53:30.425375300Z" + "end_time": "2024-09-25T13:21:49.062169900Z", + "start_time": "2024-09-25T13:21:48.498043300Z" } }, "outputs": [ @@ -3689,7 +3689,7 @@ " <script type="text/javascript" data-lets-plot-script="library" src="https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.3.3/js-package/distr/lets-plot.min.js"></script>\n", " </head>\n", " <body>\n", - " <div id="nNHO9x"></div>\n", + " <div id="03e0bi"></div>\n", " <script type="text/javascript" data-lets-plot-script="plot">\n", " var plotSpec={\n", ""mapping":{\n", @@ -3725,11 +3725,11 @@ "}\n", "}]\n", "};\n", - " var plotContainer = document.getElementById("nNHO9x");\n", + " var plotContainer = document.getElementById("03e0bi");\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " </script>\n", " </body>\n", - "</html>\"> \n", + "</html>\"> \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3893,7 +3893,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3909,7 +3909,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4084,10 +4084,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", "\n", - " " + " " ], "application/plot+json": { "output_type": "lets_plot_spec", @@ -4786,8 +4786,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:31.512405300Z", - "start_time": "2024-09-24T09:53:30.859408900Z" + "end_time": "2024-09-25T13:21:50.906639Z", + "start_time": "2024-09-25T13:21:49.473326Z" } }, "outputs": [ @@ -4972,7 +4972,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529168"></table>\n", + " <table class="dataframe" id="df_50331664"></table>\n", "\n", "<p class="dataframe_description">... showing only top 20 of 92266 rows</p><p class="dataframe_description">DataFrame: rowsCount = 92266, columnsCount = 3</p>\n", "\n", @@ -5256,10 +5256,10 @@ "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["$1,000 Reward","$10,000 Under a Pillow","$10,000 Under a Pillow","$10,000 Under a Pillow","$100,000","$1000 a Touchdown","$20,000 Carat, The","$20,000 Carat, The","$20,000 Carat, The","$2500 Bride, The","$2500 Bride, The","$2500 Bride, The","$5,000 Reward","$5,000,000 Counterfeiting Plot, The","$5,000,000 Counterfeiting Plot, The","$50,000 Jewel Theft, The","$50,000 Reward","$500 Reward, The","$500 Reward, The","$500,000 Reward"] }, \n", "{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1923</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1921</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1921</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1921</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1915</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1939</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1913</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1913</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1913</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1912</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1912</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1912</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1918</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1914</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1914</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1915</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1924</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1911</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1911</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1911</span></span>"] }, \n", "{ name: "<span title=\"genre: String\">genre</span>", children: [], rightAlign: false, values: ["Western","Animation","Comedy","Short","Drama","Comedy","Crime","Drama","Short","Drama","Romance","Short","Mystery","Crime","Thriller","Short","Western","Comedy","Short","Comedy"] }, \n", - "], id: 788529168, rootId: 788529168, totalRows: 92266 } ) });\n", + "], id: 50331664, rootId: 50331664, totalRows: 92266 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529168) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331664) });\n", "\n", "\n", " </script>\n", @@ -5431,10 +5431,10 @@ " \n", " \n", " \n", - "
nameyeargenre
$1,000 Reward1923Western
$10,000 Under a Pillow1921Animation
$10,000 Under a Pillow1921Comedy
$10,000 Under a Pillow1921Short
$100,0001915Drama
$1000 a Touchdown1939Comedy
$20,000 Carat, The1913Crime
$20,000 Carat, The1913Drama
$20,000 Carat, The1913Short
$2500 Bride, The1912Drama
$2500 Bride, The1912Romance
$2500 Bride, The1912Short
$5,000 Reward1918Mystery
$5,000,000 Counterfeiting Plot, The1914Crime
$5,000,000 Counterfeiting Plot, The1914Thriller
$50,000 Jewel Theft, The1915Short
$50,000 Reward1924Western
$500 Reward, The1911Comedy
$500 Reward, The1911Short
$500,000 Reward1911Comedy
\n", + "
nameyeargenre
$1,000 Reward1923Western
$10,000 Under a Pillow1921Animation
$10,000 Under a Pillow1921Comedy
$10,000 Under a Pillow1921Short
$100,0001915Drama
$1000 a Touchdown1939Comedy
$20,000 Carat, The1913Crime
$20,000 Carat, The1913Drama
$20,000 Carat, The1913Short
$2500 Bride, The1912Drama
$2500 Bride, The1912Romance
$2500 Bride, The1912Short
$5,000 Reward1918Mystery
$5,000,000 Counterfeiting Plot, The1914Crime
$5,000,000 Counterfeiting Plot, The1914Thriller
$50,000 Jewel Theft, The1915Short
$50,000 Reward1924Western
$500 Reward, The1911Comedy
$500 Reward, The1911Short
$500,000 Reward1911Comedy
\n", " \n", " \n", " " ], @@ -5461,8 +5461,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:32.099953400Z", - "start_time": "2024-09-24T09:53:31.750425900Z" + "end_time": "2024-09-25T13:21:51.949843800Z", + "start_time": "2024-09-25T13:21:50.932528200Z" } }, "outputs": [ @@ -5647,7 +5647,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529170"></table>\n", + " <table class="dataframe" id="df_50331666"></table>\n", "\n", "<p class="dataframe_description">... showing only top 20 of 752 rows</p><p class="dataframe_description">DataFrame: rowsCount = 752, columnsCount = 3</p>\n", "\n", @@ -5931,10 +5931,10 @@ "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1888</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1890</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1891</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1892</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1893</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1894</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1894</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1894</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1894</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1895</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1896</span></span>"] }, \n", "{ name: "<span title=\"genre: String\">genre</span>", children: [], rightAlign: false, values: ["Short","Short","Short","Animation","Comedy","Documentary","Romance","Short","Short","Comedy","Documentary","Drama","Short","Animation","Comedy","Documentary","Drama","Sci-Fi","Short","Comedy"] }, \n", "{ name: "<span title=\"count: Int\">count</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">16</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">31</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">27</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">44</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">21</span></span>"] }, \n", - "], id: 788529170, rootId: 788529170, totalRows: 752 } ) });\n", + "], id: 50331666, rootId: 50331666, totalRows: 752 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529170) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331666) });\n", "\n", "\n", " </script>\n", @@ -6106,10 +6106,10 @@ " \n", " \n", " \n", - "
yeargenrecount
1888Short2
1890Short3
1891Short2
1892Animation3
1892Comedy1
1892Documentary1
1892Romance1
1892Short4
1893Short1
1894Comedy1
1894Documentary16
1894Drama1
1894Short31
1895Animation1
1895Comedy4
1895Documentary27
1895Drama1
1895Sci-Fi1
1895Short44
1896Comedy21
\n", + "
yeargenrecount
1888Short2
1890Short3
1891Short2
1892Animation3
1892Comedy1
1892Documentary1
1892Romance1
1892Short4
1893Short1
1894Comedy1
1894Documentary16
1894Drama1
1894Short31
1895Animation1
1895Comedy4
1895Documentary27
1895Drama1
1895Sci-Fi1
1895Short44
1896Comedy21
\n", " \n", " \n", " " ], @@ -6146,8 +6146,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:32.539470100Z", - "start_time": "2024-09-24T09:53:32.190471500Z" + "end_time": "2024-09-25T13:21:53.012613600Z", + "start_time": "2024-09-25T13:21:52.149002Z" } }, "outputs": [ @@ -6161,7 +6161,7 @@ " <script type="text/javascript" data-lets-plot-script="library" src="https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.3.3/js-package/distr/lets-plot.min.js"></script>\n", " </head>\n", " <body>\n", - " <div id="T2OLYa"></div>\n", + " <div id="U3ZznU"></div>\n", " <script type="text/javascript" data-lets-plot-script="plot">\n", " var plotSpec={\n", ""mapping":{\n", @@ -6207,11 +6207,11 @@ "}\n", "}]\n", "};\n", - " var plotContainer = document.getElementById("T2OLYa");\n", + " var plotContainer = document.getElementById("U3ZznU");\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " </script>\n", " </body>\n", - "</html>\"> \n", + "</html>\"> \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6415,7 +6415,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7179,7 +7179,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7979,10 +7979,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", "\n", - " " + " " ], "application/plot+json": { "output_type": "lets_plot_spec", @@ -10319,15 +10319,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:33.904574800Z", - "start_time": "2024-09-24T09:53:32.608469700Z" + "end_time": "2024-09-25T13:21:55.801650300Z", + "start_time": "2024-09-25T13:21:53.039240700Z" } }, "outputs": [ { "data": { "text/plain": [ - "C:\\Users\\Aleksey.Zinovev\\IdeaProjects\\KotlinDataFrame-SQL-Examples\\notebooks\\lets-plot-images\\exported_plot.png" + "C:\\Users\\zaleslaw\\IdeaProjects\\KotlinDataFrame-SQL-Examples\\notebooks\\lets-plot-images\\exported_plot.png" ] }, "execution_count": 15, @@ -10380,8 +10380,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:34.688575Z", - "start_time": "2024-09-24T09:53:34.139574Z" + "end_time": "2024-09-25T13:21:56.832325900Z", + "start_time": "2024-09-25T13:21:55.921440800Z" } }, "outputs": [ @@ -10576,7 +10576,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529176"></table>\n", + " <table class="dataframe" id="df_50331672"></table>\n", "\n", "<p class="dataframe_description">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", "\n", @@ -10860,11 +10860,11 @@ "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["My Best Friend&#39;s Birthday","Reservoir Dogs","&#34;ER&#34;","Pulp Fiction","Four Rooms","Jackie Brown","&#34;Jimmy Kimmel Live&#34;","Kill Bill: Vol. 1","Kill Bill: Vol. 2","Inglorious Bastards"] }, \n", "{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1987</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1992</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2004</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>"] }, \n", "{ name: "<span title=\"rank: Float?\">rank</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">3,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,3</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,7</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">5,9</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">7,5</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>"] }, \n", - "{ name: "<span title=\"genres: String?\">genres</span>", children: [], rightAlign: false, values: ["Comedy,Drama","Mystery,Action,Thriller,Crime","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Crime,Drama","Comedy,Drama","Thriller,Crime,Drama","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Crime,Thriller,Action","Thriller,Drama,Romance,Action","War,Action,Drama"] }, \n", - "], id: 788529176, rootId: 788529176, totalRows: 10 } ) });\n", + "{ name: "<span title=\"genres: String?\">genres</span>", children: [], rightAlign: false, values: ["Comedy,Drama","Thriller,Crime,Mystery,Action","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Crime,Drama","Comedy,Drama","Thriller,Crime,Drama","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Thriller,Action,Crime","Drama,Romance,Action,Thriller","Drama,War,Action"] }, \n", + "], id: 50331672, rootId: 50331672, totalRows: 10 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529176) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331672) });\n", "\n", "\n", " </script>\n", @@ -11036,14 +11036,14 @@ " \n", " \n", " \n", - "
nameyearrankgenres
My Best Friend's Birthday19873,900000Comedy,Drama
Reservoir Dogs19928,300000Mystery,Action,Thriller,Crime
"ER"1994nullnull
Pulp Fiction19948,700000Crime,Drama
Four Rooms19955,900000Comedy,Drama
Jackie Brown19977,500000Thriller,Crime,Drama
"Jimmy Kimmel Live"2003nullnull
Kill Bill: Vol. 120038,400000Crime,Thriller,Action
Kill Bill: Vol. 220048,200000Thriller,Drama,Romance,Action
Inglorious Bastards2006nullWar,Action,Drama
\n", + "
nameyearrankgenres
My Best Friend's Birthday19873,900000Comedy,Drama
Reservoir Dogs19928,300000Thriller,Crime,Mystery,Action
"ER"1994nullnull
Pulp Fiction19948,700000Crime,Drama
Four Rooms19955,900000Comedy,Drama
Jackie Brown19977,500000Thriller,Crime,Drama
"Jimmy Kimmel Live"2003nullnull
Kill Bill: Vol. 120038,400000Thriller,Action,Crime
Kill Bill: Vol. 220048,200000Drama,Romance,Action,Thriller
Inglorious Bastards2006nullDrama,War,Action
\n", " \n", " \n", " " ], - "application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"year\",\"rank\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Float?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String?\"}],\"nrow\":10,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"My Best Friend's Birthday\",\"year\":1987,\"rank\":3.9,\"genres\":\"Comedy,Drama\"},{\"name\":\"Reservoir Dogs\",\"year\":1992,\"rank\":8.3,\"genres\":\"Mystery,Action,Thriller,Crime\"},{\"name\":\"\\\"ER\\\"\",\"year\":1994,\"rank\":null,\"genres\":null},{\"name\":\"Pulp Fiction\",\"year\":1994,\"rank\":8.7,\"genres\":\"Crime,Drama\"},{\"name\":\"Four Rooms\",\"year\":1995,\"rank\":5.9,\"genres\":\"Comedy,Drama\"},{\"name\":\"Jackie Brown\",\"year\":1997,\"rank\":7.5,\"genres\":\"Thriller,Crime,Drama\"},{\"name\":\"\\\"Jimmy Kimmel Live\\\"\",\"year\":2003,\"rank\":null,\"genres\":null},{\"name\":\"Kill Bill: Vol. 1\",\"year\":2003,\"rank\":8.4,\"genres\":\"Crime,Thriller,Action\"},{\"name\":\"Kill Bill: Vol. 2\",\"year\":2004,\"rank\":8.2,\"genres\":\"Thriller,Drama,Romance,Action\"},{\"name\":\"Inglorious Bastards\",\"year\":2006,\"rank\":null,\"genres\":\"War,Action,Drama\"}]}" + "application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"year\",\"rank\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Float?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String?\"}],\"nrow\":10,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"My Best Friend's Birthday\",\"year\":1987,\"rank\":3.9,\"genres\":\"Comedy,Drama\"},{\"name\":\"Reservoir Dogs\",\"year\":1992,\"rank\":8.3,\"genres\":\"Thriller,Crime,Mystery,Action\"},{\"name\":\"\\\"ER\\\"\",\"year\":1994,\"rank\":null,\"genres\":null},{\"name\":\"Pulp Fiction\",\"year\":1994,\"rank\":8.7,\"genres\":\"Crime,Drama\"},{\"name\":\"Four Rooms\",\"year\":1995,\"rank\":5.9,\"genres\":\"Comedy,Drama\"},{\"name\":\"Jackie Brown\",\"year\":1997,\"rank\":7.5,\"genres\":\"Thriller,Crime,Drama\"},{\"name\":\"\\\"Jimmy Kimmel Live\\\"\",\"year\":2003,\"rank\":null,\"genres\":null},{\"name\":\"Kill Bill: Vol. 1\",\"year\":2003,\"rank\":8.4,\"genres\":\"Thriller,Action,Crime\"},{\"name\":\"Kill Bill: Vol. 2\",\"year\":2004,\"rank\":8.2,\"genres\":\"Drama,Romance,Action,Thriller\"},{\"name\":\"Inglorious Bastards\",\"year\":2006,\"rank\":null,\"genres\":\"Drama,War,Action\"}]}" }, "execution_count": 16, "metadata": {}, @@ -11063,8 +11063,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:35.117627100Z", - "start_time": "2024-09-24T09:53:34.982624100Z" + "end_time": "2024-09-25T13:21:57.186810300Z", + "start_time": "2024-09-25T13:21:56.858740700Z" } }, "outputs": [], @@ -11078,8 +11078,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-09-24T09:53:35.477626Z", - "start_time": "2024-09-24T09:53:35.377624800Z" + "end_time": "2024-09-25T13:21:57.482526800Z", + "start_time": "2024-09-25T13:21:57.319112400Z" } }, "outputs": [ @@ -11264,7 +11264,7 @@ " </style>\n", " </head>\n", " <body>\n", - " <table class="dataframe" id="df_788529180"></table>\n", + " <table class="dataframe" id="df_50331676"></table>\n", "\n", "<p class="dataframe_description">DataFrame: rowsCount = 4, columnsCount = 4</p>\n", "\n", @@ -11548,11 +11548,11 @@ "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"name: String\">name</span>", children: [], rightAlign: false, values: ["&#34;Jimmy Kimmel Live&#34;","Kill Bill: Vol. 1","Kill Bill: Vol. 2","Inglorious Bastards"] }, \n", "{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2004</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>"] }, \n", "{ name: "<span title=\"rank: Float?\">rank</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">8,2</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>"] }, \n", - "{ name: "<span title=\"genres: String?\">genres</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Crime,Thriller,Action","Thriller,Drama,Romance,Action","War,Action,Drama"] }, \n", - "], id: 788529180, rootId: 788529180, totalRows: 4 } ) });\n", + "{ name: "<span title=\"genres: String?\">genres</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Thriller,Action,Crime","Drama,Romance,Action,Thriller","Drama,War,Action"] }, \n", + "], id: 50331676, rootId: 50331676, totalRows: 4 } ) });\n", "/*-->*/\n", "\n", - "call_DataFrame(function() { DataFrame.renderTable(788529180) });\n", + "call_DataFrame(function() { DataFrame.renderTable(50331676) });\n", "\n", "\n", " </script>\n", @@ -11724,14 +11724,14 @@ " \n", " \n", " \n", - "
nameyearrankgenres
"Jimmy Kimmel Live"2003nullnull
Kill Bill: Vol. 120038,400000Crime,Thriller,Action
Kill Bill: Vol. 220048,200000Thriller,Drama,Romance,Action
Inglorious Bastards2006nullWar,Action,Drama
\n", + "
nameyearrankgenres
"Jimmy Kimmel Live"2003nullnull
Kill Bill: Vol. 120038,400000Thriller,Action,Crime
Kill Bill: Vol. 220048,200000Drama,Romance,Action,Thriller
Inglorious Bastards2006nullDrama,War,Action
\n", " \n", " \n", " " ], - "application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"year\",\"rank\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Float?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String?\"}],\"nrow\":4,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"\\\"Jimmy Kimmel Live\\\"\",\"year\":2003,\"rank\":null,\"genres\":null},{\"name\":\"Kill Bill: Vol. 1\",\"year\":2003,\"rank\":8.4,\"genres\":\"Crime,Thriller,Action\"},{\"name\":\"Kill Bill: Vol. 2\",\"year\":2004,\"rank\":8.2,\"genres\":\"Thriller,Drama,Romance,Action\"},{\"name\":\"Inglorious Bastards\",\"year\":2006,\"rank\":null,\"genres\":\"War,Action,Drama\"}]}" + "application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"year\",\"rank\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Float?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String?\"}],\"nrow\":4,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"\\\"Jimmy Kimmel Live\\\"\",\"year\":2003,\"rank\":null,\"genres\":null},{\"name\":\"Kill Bill: Vol. 1\",\"year\":2003,\"rank\":8.4,\"genres\":\"Thriller,Action,Crime\"},{\"name\":\"Kill Bill: Vol. 2\",\"year\":2004,\"rank\":8.2,\"genres\":\"Drama,Romance,Action,Thriller\"},{\"name\":\"Inglorious Bastards\",\"year\":2006,\"rank\":null,\"genres\":\"Drama,War,Action\"}]}" }, "execution_count": 18, "metadata": {}, diff --git a/settings.gradle.kts b/settings.gradle.kts index 2c75297..d8fce41 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,11 @@ +pluginManagement { + repositories { + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") + mavenCentral() + gradlePluginPortal() + } +} + plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" } diff --git a/src/main/kotlin/Example_1_Define_schema_manually.kt b/src/main/kotlin/Example_1_Define_schema_manually.kt index 1ff5587..0a981b7 100644 --- a/src/main/kotlin/Example_1_Define_schema_manually.kt +++ b/src/main/kotlin/Example_1_Define_schema_manually.kt @@ -1,32 +1,41 @@ -package org.jetbrains.kotlinx.dataframe.examples.jdbc - import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.annotations.DataSchema +import org.jetbrains.kotlinx.dataframe.api.add import org.jetbrains.kotlinx.dataframe.api.describe import org.jetbrains.kotlinx.dataframe.api.select import org.jetbrains.kotlinx.dataframe.api.cast +import org.jetbrains.kotlinx.dataframe.api.filter import org.jetbrains.kotlinx.dataframe.api.sortByDesc import org.jetbrains.kotlinx.dataframe.api.print import org.jetbrains.kotlinx.dataframe.api.take +import org.jetbrains.kotlinx.dataframe.examples.jdbc.PASSWORD +import org.jetbrains.kotlinx.dataframe.examples.jdbc.TABLE_NAME_MOVIES +import org.jetbrains.kotlinx.dataframe.examples.jdbc.URL +import org.jetbrains.kotlinx.dataframe.examples.jdbc.USER_NAME import org.jetbrains.kotlinx.dataframe.io.readSqlTable import org.jetbrains.kotlinx.dataframe.io.DbConnectionConfig -import org.jetbrains.kotlinx.dataframe.io.readDataFrame +import org.jetbrains.kotlinx.dataframe.io.getSchemaForSqlTable +import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema @DataSchema interface Movies { - val id: Int - val name: String - val year: Int - val rank: Float? + val id: kotlin.Int + val name: kotlin.String + val year: kotlin.Int + val rank: kotlin.Float? } fun main() { // define the database configuration val dbConfig = DbConnectionConfig(URL, USER_NAME, PASSWORD) + val moviesSchema = DataFrame.getSchemaForSqlTable(dbConfig, TABLE_NAME_MOVIES) + moviesSchema.printAsInterfaceWithAnnotation(TABLE_NAME_MOVIES) + // read the table val movies = DataFrame.readSqlTable(dbConfig, TABLE_NAME_MOVIES, 10000).cast(verify=true) + // print the dataframe movies.print() @@ -34,8 +43,31 @@ fun main() { movies.describe().print() // print names of top-10 rated films - movies.sortByDesc { rank } - .take(10) - .select { name } - .print() + val result = movies.sortByDesc { rank } + .select { name and year } + .add("oldFilm") { year < 1973 } + .add("containsReward") { name.contains("Reward") } + + result.filter { oldFilm and containsReward }.take(10).print() +} + +fun String.convertToValidInterfaceName(): String { + return this.split("_", " ") + .joinToString("") { it.replaceFirstChar { char -> char.uppercaseChar() } } +} + +fun DataFrameSchema.printAsInterfaceWithAnnotation(interfaceName: String? = null) { + val schemaBuilder = StringBuilder() + schemaBuilder.appendLine("@DataSchema") + if(interfaceName != null) schemaBuilder.appendLine("interface ${interfaceName.convertToValidInterfaceName()} {") + else schemaBuilder.appendLine("interface GeneratedSchema {") + + columns.forEach { (name, column) -> + val type = column.type + schemaBuilder.appendLine(" val $name: $type") + } + + schemaBuilder.appendLine("}") + + println(schemaBuilder.toString()) } diff --git a/src/main/kotlin/Example_2_Import_schema_annotation.kt b/src/main/kotlin/Example_2_Import_schema_annotation.kt index 3a2c1af..7e8a88a 100644 --- a/src/main/kotlin/Example_2_Import_schema_annotation.kt +++ b/src/main/kotlin/Example_2_Import_schema_annotation.kt @@ -10,8 +10,6 @@ jdbcOptions = JdbcOptions(USER_NAME, PASSWORD, sqlQuery = ACTORS_IN_LATEST_MOVIES) ) -package org.jetbrains.kotlinx.dataframe.examples.jdbc - import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.annotations.ImportDataSchema import org.jetbrains.kotlinx.dataframe.annotations.JdbcOptions @@ -23,13 +21,20 @@ import org.jetbrains.kotlinx.dataframe.api.count import org.jetbrains.kotlinx.dataframe.io.readSqlQuery import org.jetbrains.kotlinx.dataframe.io.readSqlTable import org.jetbrains.kotlinx.dataframe.api.take +import org.jetbrains.kotlinx.dataframe.examples.jdbc.ACTORS_IN_LATEST_MOVIES +//import org.jetbrains.kotlinx.dataframe.examples.jdbc.Directors +//import org.jetbrains.kotlinx.dataframe.examples.jdbc.NewActors +import org.jetbrains.kotlinx.dataframe.examples.jdbc.PASSWORD +import org.jetbrains.kotlinx.dataframe.examples.jdbc.TABLE_NAME_DIRECTORS +import org.jetbrains.kotlinx.dataframe.examples.jdbc.URL +import org.jetbrains.kotlinx.dataframe.examples.jdbc.USER_NAME import org.jetbrains.kotlinx.dataframe.io.DbConnectionConfig fun main() { // Part 1: Reading the table `directors` // define the database configuration - val dbConfig = DbConnectionConfig(URL, USER_NAME, PASSWORD) + /* val dbConfig = DbConnectionConfig(URL, USER_NAME, PASSWORD) // read the table val directors = DataFrame.readSqlTable(dbConfig, TABLE_NAME_DIRECTORS, 1000).cast() @@ -48,5 +53,5 @@ fun main() { // build a report of different roles' popularity newActors.groupBy { role } .count() - .print() + .print()*/ } diff --git a/src/main/kotlin/Example_3_Import_schema_via_Gradle.kt b/src/main/kotlin/Example_3_Import_schema_via_Gradle.kt index f560f87..8c463a2 100644 --- a/src/main/kotlin/Example_3_Import_schema_via_Gradle.kt +++ b/src/main/kotlin/Example_3_Import_schema_via_Gradle.kt @@ -1,5 +1,3 @@ -package org.jetbrains.kotlinx.dataframe.examples.jdbc - import java.sql.DriverManager import java.util.Properties import org.jetbrains.kotlinx.dataframe.DataFrame @@ -7,6 +5,13 @@ import org.jetbrains.kotlinx.dataframe.api.cast import org.jetbrains.kotlinx.dataframe.api.describe import org.jetbrains.kotlinx.dataframe.api.filter import org.jetbrains.kotlinx.dataframe.api.print +import org.jetbrains.kotlinx.dataframe.examples.jdbc.Actors +import org.jetbrains.kotlinx.dataframe.examples.jdbc.PASSWORD +import org.jetbrains.kotlinx.dataframe.examples.jdbc.TABLE_NAME_ACTORS +import org.jetbrains.kotlinx.dataframe.examples.jdbc.TARANTINO_FILMS_SQL_QUERY +import org.jetbrains.kotlinx.dataframe.examples.jdbc.TarantinoFilms +import org.jetbrains.kotlinx.dataframe.examples.jdbc.URL +import org.jetbrains.kotlinx.dataframe.examples.jdbc.USER_NAME import org.jetbrains.kotlinx.dataframe.io.* /** @@ -26,7 +31,7 @@ import org.jetbrains.kotlinx.dataframe.io.* * and demonstrate different ways to establish connection to the database. */ fun main() { - val props = Properties() + /*val props = Properties() props.setProperty("user", USER_NAME) props.setProperty("password", PASSWORD) @@ -34,14 +39,14 @@ fun main() { println("---------------------------- Part 1: SQL Table ------------------------------------") DriverManager.getConnection(URL, props).use { connection -> // read the data from the SQL table - val actors = DataFrame.readSqlTable(connection, TABLE_NAME_ACTORS, 100).cast() + val actors = DataFrame.readSqlTable(connection, TABLE_NAME_ACTORS, 100).cast() actors.print() // filter and print the data actors.filter { firstName!=null && firstName!!.contains("J") }.print() // extract the schema of the SQL table - val actorSchema = DataFrame.getSchemaForSqlTable(connection, TABLE_NAME_ACTORS) + val actorSchema = DataFrame.getSchemaForSqlTable(connection, TABLE_NAME_ACTORS) actorSchema.print() } @@ -89,5 +94,5 @@ fun main() { it.print() it.describe() } - } + }*/ } diff --git a/src/main/kotlin/jdbcUtils.kt b/src/main/kotlin/jdbcUtils.kt index 2f586cb..333fac8 100644 --- a/src/main/kotlin/jdbcUtils.kt +++ b/src/main/kotlin/jdbcUtils.kt @@ -1,6 +1,6 @@ package org.jetbrains.kotlinx.dataframe.examples.jdbc -const val URL = "jdbc:mariadb://localhost:3306/imdb" +const val URL = "jdbc:mariadb://localhost:3307/imdb" const val USER_NAME = "root" const val PASSWORD = "pass" const val TABLE_NAME_ACTORS = "actors"