Указание имени столбца в SQL-запросе DolphinDB во время выполнения - PullRequest
3 голосов
/ 30 апреля 2019

В DolphinDB я хотел бы написать функцию, которая принимает в качестве аргументов таблицу t и строку colName и запускает SQL-запрос в соответствии с t и colName. Мой код такой:

def doQuery(t, colName) {
    return select colName from t
}

Но эта функция вернет таблицу, содержащую только один элемент colName независимо от аргументов, которые я дал.

Например, когда я бегал

t = table(1..5 as col0)
doQuery(t, `col0)

То, что я ожидал, это столбец col0, содержащий элементы 1, 2, 3, 4 и 5, тогда как я получил

colName
-------
col0

Интересно, что не так с моим кодом?

1 Ответ

1 голос
/ 01 мая 2019

В выражении sql необходимо явно записать имена столбцов в предложении select. Это правило почти для всех баз данных, включая DolphinDB. В вашем случае имя столбца динамически передается аргументом функции. То есть вы не можете указать столбец при написании кода (SQL-запрос). Однако DolphinDB предлагает вам технологию метапрограммирования для точного решения проблемы.

def doQuery(t, colName) {
    return sql(sqlCol(colName), t).eval()
}

http://www.dolphindb.com/help/index.html?Metaprogramming.html

...