arrays_overlap(a1, a2)
Описание
Функция arrays_overlap()
проверяет, имеют ли два массива общие элементы. Возвращает true, если массивы содержат хотя бы один общий ненулевой элемент; NULL, если оба массива непусты и любой из них содержит нулевой элемент; false в противном случае.
Параметры
a1
: Array - первый массив для сравненияa2
: Array - второй массив для сравнения
Возвращаемое значение
Boolean - true если есть общие элементы, false если нет, NULL если массивы содержат NULL
Пример использования
from pyspark.sql.functions import arrays_overlap, array, lit
# Создаем DataFrame с массивами
df = spark.createDataFrame([
([1, 2, 3], [3, 4, 5]),
(["a", "b", "c"], ["x", "y", "z"]),
([1, 2, 3], [4, 5, 6]),
([1, 2, None], [3, None, 4]),
(None, [1, 2, 3])
], ["array1", "array2"])
# Проверяем пересечение массивов
df.select(
"array1",
"array2",
arrays_overlap("array1", "array2").alias("overlap")
).show(truncate=False)
# Результат:
# +------------+------------+-------+
# |array1 |array2 |overlap|
# +------------+------------+-------+
# |[1, 2, 3] |[3, 4, 5] |true |
# |[a, b, c] |[x, y, z] |false |
# |[1, 2, 3] |[4, 5, 6] |false |
# |[1, 2, null]|[3, null, 4]|null |
# |null |[1, 2, 3] |null |
# +------------+------------+-------+
# Пример с разными типами данных
df = spark.createDataFrame([
([1.0, 2.0, 3.0], [3.0, 4.0, 5.0]),
([True, False], [False, True]),
([None, 1], [2, None])
], ["array1", "array2"])
df.select(
"array1",
"array2",
arrays_overlap("array1", "array2").alias("overlap")
).show(truncate=False)
Примечания
- Если любой из массивов NULL, возвращается NULL
- Если массивы содержат NULL элементы, возвращается NULL
- Для получения пересечения массивов используйте
array_intersect()
- Для получения объединения массивов используйте
array_union()
- Для создания массива используйте
array()