Космос БД Udf не работает с условием Где - PullRequest
0 голосов
/ 22 сентября 2019

Ссылаясь на это, я создал udf для применения фильтра даты,

Преобразование TimeScript в дату в SQL-запросе Azure CosmosDB .

SELECT udf.convertTime (c.DatetimeEpoch) как CommandDate FROM c, где c.columnH = 'acb' и c.CommandDate = '09 / 21/2019 ',

Но этот запрос не работает, когда я выдал выражение udf, вставленное в условие where.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

В CosmosDb вы не можете использовать псевдоним CommandDate в предложении where, в отличие от MSSQL.Вы должны повторить udf снова в предложении where, когда @Tony Ju ответил.

0 голосов
/ 23 сентября 2019

Я думаю, @Unicorno Marley четко объяснил, почему ваш sql не работал.

Вы можете изменить свой sql следующим образом:

SELECT udf.convertTime(c.DatetimeEpoch) as CommandDate FROM c where c.columnH='acb' and udf.convertTime(c.DatetimeEpoch) = '09/21/2019'

EDIT: Теперь вы можете использовать подзапрос, чтобы избежать повторного выполнения UDF

SELECT s.CommandDate 
FROM (
    SELECT udf.convertTime(c.DatetimeEpoch) AS CommandDate 
    FROM c 
    where c.columnH = 'acb'
) s
WHERE s.CommandDate = '09/21/2019'

В идеале, хотя вы должны выполнять это отображение на стороне клиента вместо UDF на стороне сервера, поскольку фильтры UDF в предложении WHERE будут сканировать.

...