1

这似乎应该是直截了当的,但是对于长列表还没有能够干净地工作:

上一个单元格:

val myList = List(111,222)

当前单元格:

%sql
DROP TABLE IF EXISTS myTable;

CREATE TABLE myTable AS
    SELECT * FROM datalake.someTable t
      WHERE t.someColumn IN myList --correctly parse the list here

一种解决方案可能是使用小部件,但这似乎是针对字符串的,而对于长列表会受到最大字符串长度的限制?任何帮助表示赞赏!

4

1 回答 1

2

您可以注册一个包含您的变量的用户定义函数。用户定义的函数可以传递给 SQL 单元,如此处所述

您的代码将在您的 scala 单元格中:

val myList = List(111, 222)
val myListUdf = () => myList
spark.udf.register("my_list", myListUdf)

然后,您可以在 SQL 单元中执行查询:

%sql

DROP TABLE IF EXISTS myTable;

CREATE TABLE myTable AS
    SELECT * FROM datalake.someTable t
      WHERE array_contains(my_list(), t.someColumn)
于 2020-10-28T21:25:58.380 回答