DDBDataLoader вызывает ошибку синтаксического анализа SQL, когда символ в списке превышает ~ 130 элементовPython

Программы на Python
Anonymous
DDBDataLoader вызывает ошибку синтаксического анализа SQL, когда символ в списке превышает ~ 130 элементов

Сообщение Anonymous »

Я использую плагин DataLoader от DolphinDB (

Код: Выделить всё

DDBDataLoader
) для создания конвейера обучения. Мой SQL включает в себя символ где в предложении {stock_name, где stock_name — это список Python. Он отлично работает, когда список содержит менее ~130 элементов, но завершается с ошибкой синтаксического анализа SQL, когда он выходит за это число.

Код: Выделить всё

stock_name = [f"{i:06d}.SZ" for i in range(131)]

train_loader = DDBDataLoader(
ddbSession=s,
sql=f"""select * from loadTable('dfs://stock_snapshot_level2','level2_snapshot_zscore_index_component')
where sym in {stock_name}
and trade_date between 2025.12.08:2025.12.26
and TickTime between 09:40:00.000:14:49:59.999""",
targetCol=['label'],
batchSize=256,
shuffle=True,
windowSize=100,
windowStride=1,
excludeCol=['sym','trade_date','TickTime','label'],
device="cuda",
)
Ошибка:

RuntimeError: произошла ошибка при создании sqlDS, проверьте свой sql и другие аргументы. при запуске: Ответ сервера: '... где sym в array40159f6800000000... Нераспознанное имя столбца [array40159f6800000000]. RefId:S02005'

Похоже, что DDBDataLoader преобразует список Python во внутренний идентификатор DolphinDB (

Код: Выделить всё

array40159f6800000000
), когда список слишком длинный, что нарушает синтаксический анализ SQL. Ограничение списка до 100 элементов позволяет избежать ошибки.
Известно ли это ограничение? Какой обходной путь рекомендуется использовать, если вам нужно отфильтровать большое количество символов?

Вернуться в «Python»