Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, когда задаешь несколько условий в WHERE они действуют на возвращаемый результат, сочетаясь по "и". Можно ли как-нибудь сделать, чтобы они сочетались по "или" ? З.Ы. Извините за косноязычность ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2004, 20:14 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Если речь про sql, то конечно можно: where A or B Если речь про какую-то определенную OLAP-плтаформу, то неплохо было бы ее указать в вопросе %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2004, 13:52 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
идеологически MDX запрос всего лишь определяет множество ячеек куба которые нужно включить в результат соответственно все сочетания ячеек по и/или должны быть определены в кубе, например путем создания дополнительных иерархий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:01 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
олапистидеологически MDX запрос всего лишь определяет множество ячеек куба которые нужно включить в результат соответственно все сочетания ячеек по и/или должны быть определены в кубе, например путем создания дополнительных иерархий иерархия и аггрегация по определению являются "И", а вот "ИЛИ" в МДХ, мне так кажется, можно достигуть только извратом. в том же SQL приводит в 99% к table scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 00:22 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
А по-моему не туда мы смотрим... По определению, операции "и" и "или" предполагают наличие нескольких операций сравнения. Если предположить, что указание конкретного члена измерения это операция сравнения на равенство, то поставленный вопрос можно перефразировать так: "Можно-ли во WHERE перечислить несколько членов одного измерения?" - ответ: Нет, т.к. WHERE используется для создания срезов (slice) и в отличие от осей, которые возвращают данные для нескольких членов, WHERE возвращает данные для одного члена каждого измерения . Для всех не определенных во WHERE измерениях (отсутствие WHERE - частный случай этого) используются DefaultMember. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 09:21 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
В Юконе можно задать условие ИЛИ в WHERE clause указав там не tuple а set. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 10:28 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
MoshaВ Юконе можно задать условие ИЛИ в WHERE clause указав там не tuple а set. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Это то понятно, если ИЛИ между членами одного измерения, а если надо что то вроде select customers.members on 0, products.members on 1 where time.2004 OR country.USA ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 11:10 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
backfireЭто то понятно, если ИЛИ между членами одного измерения, а если надо что то вроде select customers.members on 0, products.members on 1 where time.2004 OR country.USA Нет никакой разницы - будь это члены одной иерархии или разных, все равно set in WHERE clause. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 11:48 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
backfire select customers.members on 0, products.members on 1 where time.2004 OR country.USA ??? то я бы сделал это приблизительно так with member time.mymember as SUM({(time.2004, country.All),(time.All, country.USA)}) // что равносильно // with member country.mymember as SUM({(time.2004, country.All),(time.All, country.USA)}) select customers.members on 0, products.members on 1 where time.mymember ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:15 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Mosha backfireЭто то понятно, если ИЛИ между членами одного измерения, а если надо что то вроде select customers.members on 0, products.members on 1 where time.2004 OR country.USA Нет никакой разницы - будь это члены одной иерархии или разных, все равно set in WHERE clause. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights а примерчик в терминах Юкона и образцовой базы можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:17 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
В хэлпе на MSAS 2000 тоже дан пример: Код: plaintext Я попытался это проделать - у меня не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:19 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
backfire backfire select customers.members on 0, products.members on 1 where time.2004 OR country.USA ??? правильно так (и не только для Юкона) with member time.mymember as 'SUM({(time.2004, country.All),(time.All, country.USA)}) - (time.2004, country.USA)' // что равносильно // with member country.mymember as 'SUM({(time.2004, country.All),(time.All, country.USA)}) - (time.2004, country.USA)' select customers.members on 0, products.members on 1 where time.mymember ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:19 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Пример можно дать и в терминах AS2K - построение set в MDX не меняется, разница только заключается в том, что в AS2K этот set надо вставлять внутрь Aggregate который сидит на calculated member, а в Юконе set напрямую может идти в WHERE clause. Set может выглядеть например так: Код: plaintext Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:22 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
ShIgorВ хэлпе на MSAS 2000 тоже дан пример: Код: plaintext Я попытался это проделать - у меня не получилось. пожалуйста, нельзя ли более точную ссылку на BOL даю голову на отсечение, что этот пример вызывает синтаксическую ошибку в AS2K, ибо там под WHERE может быть только tuple. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:23 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
ShigorВ хэлпе на MSAS 2000 тоже дан пример: Этот пример вряд ли из help AS2K, скорее он из спецификации OLEDB for OLAP backfire'SUM({(time.2004, country.All),(time.All, country.USA)}) - (time.2004, country.USA А зачем делать минус ? Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:24 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Код: plaintext но я же написал, что у меня это не получилось, може потому, что в примере измерение [Route] состоит из 2х членов и оно явно преобразуется в tuple, у меня же таких нет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:26 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Все таки наши BOL это что-то, сразу после этого примера там написано: If the «slicer_specification» cannot be resolved into a single tuple, an error will occur.Зачем тогда было давать такой пример... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:30 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Mosha ShigorВ хэлпе на MSAS 2000 тоже дан пример: Этот пример вряд ли из help AS2K, скорее он из спецификации OLEDB for OLAP backfire'SUM({(time.2004, country.All),(time.All, country.USA)}) - (time.2004, country.USA А зачем делать минус ? Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights а потому что SUM({(time.2004, country.All),(time.All, country.USA)}) считает дважды (time.2004, country.USA) или я смешу ваши тапочки? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:31 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
MoshaВсе таки наши BOL это что-то, сразу после этого примера там написано: If the «slicer_specification» cannot be resolved into a single tuple, an error will occur.Зачем тогда было давать такой пример... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights очень приятно слышать самокритику из ваших уст :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:35 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
backfireа потому что SUM({(time.2004, country.All),(time.All, country.USA)}) считает дважды (time.2004, country.USA) Да, я совсем забыл что в AS2K он действительно посчитает пересечение дважды, в Юконе set in the WHERE clause посчитает все один раз как и надо, да и функция Aggregate тоже (хотя в Beta 2 это еще не подключено). Вычитание пересечения становится непрактичным, когда количество измерений растет - там надо начинать компенсировать компенсации и т.д. - именно поэтому в Юконе мы сами автоматически убираем дупликаты. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 12:45 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Moshaи т.д. - именно поэтому в Юконе мы сами автоматически убираем дупликаты. Ну и хорошо :-)) - можно будет спокойно занятся прикладными задачами, а не потеть над реализацией алгебры множеств при генерации MDX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 14:34 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Mosha[quot backfire] Да, я совсем забыл что в AS2K он действительно посчитает пересечение дважды, в Юконе set in the WHERE clause посчитает все один раз как и надо, да и функция Aggregate тоже (хотя в Beta 2 это еще не подключено). Вычитание пересечения становится непрактичным, когда количество измерений растет - там надо начинать компенсировать компенсации и т.д. - именно поэтому в Юконе мы сами автоматически убираем дупликаты. Пока что все выглядет достаточно удручающе в королевстве Юкона :-( - поведение AGGREGATE как и AS2K (необходимо вводить компенсацию) - поведение SET под WHERE вообще не поддается обьяснению нижеприведенные запросы отрабатывались в декабрьском билде Юкона (9.0.951) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 03:56 |
|
||
|
WHERE ???
|
|||
|---|---|---|---|
|
#18+
Спасибо backfire, это интересный баг связанный с использованием перспективы вместо куба в FROM clause. (Перспектива [Direct Sales], которая не имеет всех measures, накладывается на "неровный" set in WHERE clause и выдает ошибку - мы ее уже чиним :). Если использовать настоющий куб [Adventure Works], то все работает как следует: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Дает правильный ответ. Что касается Aggregate - то попробуйте Ваш set с DistinctCount measure - никакого double counting быть не должно. Для других measures, в CTP build включен старый алгоритм, как я уже писал в другом thread, пока ломать backward compatibility ради производительности не дают, поэтому новый код который убирает дупликаты не включен. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 06:40 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32807340&tid=1871981]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 344ms |

| 0 / 0 |
