malyj_gorgan: (Default)
[personal profile] malyj_gorgan
По роботі, через примху начальства, доводиться переписувати пару шматків коду з SQL на Скалу, тої Скали не знаючи зовсім. Але потрошки, потрошки... Проблема в тому, що це для внутрішнього нашого датастора, там компіляція/перевірка на помилки триває хвилину, а запуск найтривіальнішого коду займає хвилин 5-10, тому все помаленько дуже. Але, 80% уже готово...
...І раптом вперся в помилку, яку уже дві години не можу виправити. З того всього виглядає, що в dataframe.column.when() немає логічного "OR". Воно тупо ламається на значку "||"


Якщо це не баг, а фіча, поясніть мені, тупому, кому така фіча могла прийти в голову. І, основне, НАФІГА?

P.S. Цікаво, скільки з тих, хто користується Скалою, знає безсмертні рядки про
Лупайте сю скалу! Нехай ні жар, ні холод
Не спинять вас. Зносіть і труд, і спрагу, й голод
Бо вам призначено скалу сесю розбить.

Date: 2023-12-03 09:59 pm (UTC)
From: [personal profile] ichthuss
Якщо я правильно пам'ятаю, то в Скалі || (і інші) - це просто назва функції, а "x || y" є красивим записом "x.||(y)". Тому особисто я б спробував викликати логічне or як функцію (а документація підказує, що зветься вона
public static Column bool_or(Column e)
)

Date: 2023-12-04 03:09 pm (UTC)
From: [personal profile] ichthuss
Ні, я мав на увазі when(A.bool_or(B), Y1).otherwise(Y2).

Я майже впевнений, що якщо працюють інші логічні оператори, то і or можна змусити запрацювати в нормальному вигляді. Але це треба поекспериментувати, щоб з'ясувати, чого воно точно хоче і в якому вигляді; і при локальному сетапі це було б зовсім нескладно, а якщо треба сабмітити на гальмівний сайт - то це займе багатенько часу, і питання - чи варто?

Profile

malyj_gorgan: (Default)
malyj_gorgan

June 2025

S M T W T F S
12 345 67
89 1011 121314
151617181920 21
22232425262728
2930     

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 02:10 pm
Powered by Dreamwidth Studios