powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / функция $O или что то другое..?
25 сообщений из 66, страница 1 из 3
функция $O или что то другое..?
    #35230609
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как получить все индексы на N-м уровне? И независимо от значений индексов на предыдущих уровнях? В букваре есть пару примеров, включая до 3-го уровня, при известных индексах на предыдущих уровнях... но эт не то... Пробовал пользоваться функциями $Q и $QS - но проблема в том что при этом включаются повторяющиеся индексы!
Что посоветуете? Или делать по второму варианту и удалять повторяющиеся индексы?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35230902
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>И независимо от значений индексов на предыдущих уровнях?

Что это значит ??? индекс N-уровня зависить от своих N-1 индексов - потому что они входять в конечный "ID" узла

>>Пробовал пользоваться функциями $Q и $QS - но проблема в том что при этом включаются повторяющиеся индексы!

Ну так сохрани их в локальный массив, или список, перед добавлением в который по $LF проверяй вхождение
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35231365
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotКак получить все индексы на N-м уровне? И независимо от значений индексов на предыдущих уровнях? В букваре есть пару примеров, включая до 3-го уровня, при известных индексах на предыдущих уровнях... но эт не то... Пробовал пользоваться функциями $Q и $QS - но проблема в том что при этом включаются повторяющиеся индексы!
Что посоветуете? Или делать по второму варианту и удалять повторяющиеся индексы?
Я тоже несколько не понял проблему. Банальный вариант перебора по уровням уже не устраивает?
Можно конечно пользоваться $Q, если только массив не слишком большой, но это неудобно.
А откуда повторяющиеся индексы? Имеются в виду разные ветки?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35231843
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptn>>И независимо от значений индексов на предыдущих уровнях?

Что это значит ??? индекс N-уровня зависить от своих N-1 индексов - потому что они входять в конечный "ID" узла



Значений индексов на N-1 уровне может сколь угодно быть много, правильно?
И чтоб получить все индексы на N-м уровне функцией $O нужно зафиксировать конкретный индекс (индексы) на предыдущих уровнях... а мне нужны все эти индексы.
Вот небольшой пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
s x="Иванов", y=""
f {
 s x=$O(^Glob(x,y))
 q:y=""
 w x
}


Вот все неповторяющиеся индексы на втором уровне, но при фиксированном индексе первого... x="Иванов". И т.д. в этом методе нужно фиксировать предыдущие индексы... Вот в этом и проблема, что хочу найти универсальные метод для определения неповтряющихся индексов на любом уровне и все до одного!
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35231850
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei ObrastsovА откуда повторяющиеся индексы? Имеются в виду разные ветки?

А разве в N-мерном массиве не может быть повторяющихся индексов на одном уровне??
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232090
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, если у вас возникают такие задачи, то изначально структура данных спроектирвоана неправильно.

Вам помогло бы стандартное хранение классов в индексах, но неизветно сколько ради этого придется переделаывать.
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232096
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тфу...
читать так

Вам помогло бы стандартное хранение классов, которое предлагает каше с индексированными полями, но неизветно сколько ради этого придется переделаывать.
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232137
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot Sergei ObrastsovА откуда повторяющиеся индексы? Имеются в виду разные ветки?

А разве в N-мерном массиве не может быть повторяющихся индексов на одном уровне??

На одном уровне - может - если у них разные предыдущие подуровни - по этому и непонятно про "независимо"

Код: plaintext
1.
2.
3.
4.
^Glob("Иванов","Иван")
^Glob("Иванов","Петр")
^Glob("Петров","Иван")
^Glob("Петров","Петр")
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232220
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот если так огранизовано (как я подозреваю) - то это неправильно.
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232317
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странная какая-то задачка "Выбрать все индексы N-го уровня"...
Так или иначе придется пробегать по всем значимым элементам переменной и вырезать N-ный индекс (если он там есть)...

Автор, а можно поподробнее из-за чего возникла такая необходимость?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232438
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Вот если так огранизовано (как я подозреваю) - то это неправильно.

А как правильно, пример привести можно?
У меня примерно так:
Код: plaintext
1.
2.
3.
4.
^Glob("Компьютер", "AMD","Athlon 3000")
^Glob("Компьютер", "AMD","Duron")
^Glob("Компьютер", "Intel","Celeron D320")
^Glob("Компьютер", "Intel",Pentium  4 ")

Вот здесь два повторяющихся индекса "Intel" и "AMD"...на втором уровне, и в зависимости от того, какой выбрать в приведённом мною выше примере, можно получить либо Athlon 3000 и Duron, либо
Celeron D320 и Pentium 4 на третьем... а как здесь по -вашему было бы правильнее?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232450
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa

Автор, а можно поподробнее из-за чего возникла такая необходимость?


У меня была такая идея:
Все индексы N-го уровня должны быть в ниспадающем списке (<select></select>)- и логично предположить, что повотряющиеся индексы там ни к чему...
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232463
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщето я уже сделал то что хотел, но хочу обсудить высказанное предположение о том, что структура данных неправильная, и как её опитмизировать?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232518
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotкак её опитмизировать?
Разделить собственно даные и индексы. Как вариант:
Таблица 1Код объектаКод фирмы производителяНазвание
Таблица 2Название объекта
Таблица 3Фирма производитель
Потом наделать индексов для просмотра и быстродействия задачи...
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232588
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала нужно бы знать постановку задачи и исходные данные

автор^Glob("Компьютер", "AMD","Athlon 3000")
^Glob("Компьютер", "AMD","Duron")
^Glob("Компьютер", "Intel","Celeron D320")
^Glob("Компьютер", "Intel",Pentium 4")

Почему вы избегаете классов?
Сделаете класс, каше вам сама сделает структуру хранения.
Потом нарисуете индексы, возможно даже несколько, будете вертеть ими как хотите - хотите по одному полю пойдете, хотите - по другому.

Будет гораздо меньше головной боли.

Кстати, вы в курсе про нормализацию? Она ведь не только в SQL системах нужна?
(Хотя формализованное описание вроде есть только для SQL)
Что будет например если фирма AMD переименуется?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232594
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotУ меня примерно так:
Код: plaintext
1.
2.
3.
4.
^Glob("Компьютер", "AMD","Athlon 3000")
^Glob("Компьютер", "AMD","Duron")
^Glob("Компьютер", "Intel","Celeron D320")
^Glob("Компьютер", "Intel",Pentium  4 ")

Вот здесь два повторяющихся индекса "Intel" и "AMD"...на втором уровне, и в зависимости от того, какой выбрать в приведённом мною выше примере, можно получить либо Athlon 3000 и Duron, либо
Celeron D320 и Pentium 4 на третьем... а как здесь по -вашему было бы правильнее?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
^Glob
$ "Компьютер"
|
|
$------------------------------$
| "AMD"                        | "Intel"
|                              |
$----------------$             $-------------------$
  "Athlon 3000"    "Duron"       "Celeron D320"      "Pentium 4"

Так понятнее с "повторяющимися" индексами? :)
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232641
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак понятнее с "повторяющимися" индексами? :)
нет, стало более запутанно :-)

Нужно идти по пути, который предложил krvsa
При этом данные будут типа

Код: plaintext
1.
2.
3.
4.
5.
^Comp.T1D(Ид1)=$lb(Код1, КодПроизв1, КодИзделия1 )
^Comp.T1D(Ид2)=$lb(Код2, КодПроизв2, КодИзделия2 )

^Comp.T1D(Индекс1,КодИзделия1 )=Ид1
^Comp.T1D(Индекс1,КодИзделия2 )=Ид2

При это у нас основа - данные, а индексы строит каше и их может много разных.
Но естественно без точного описания задачи таблицы проектировать неудобно.
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232691
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
^Glob
$ "Компьютер"
|
|
$------------------------------$
| "AMD"                                  | "Intel"
|                                           |
$----------------$                   $-------------------$
  "Athlon 3000"    "Duron"       "Celeron D320"      "Pentium 4"

Так понятнее с "повторяющимися" индексами? :)

Не понятно, чем эта схема отличается от моего кода? Трёхмерный массив остаётся трёхмерным, или нет?
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232713
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotТрёхмерный массив остаётся трёхмерным, или нет?
А куда он из cache.dat денется!
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232743
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н. авторТак понятнее с "повторяющимися" индексами? :)
нет, стало более запутанно :-)

Нужно идти по пути, который предложил krvsa
При этом данные будут типа

Код: plaintext
1.
2.
3.
4.
5.
^Comp.T1D(Ид1)=$lb(Код1, КодПроизв1, КодИзделия1 )
^Comp.T1D(Ид2)=$lb(Код2, КодПроизв2, КодИзделия2 )

^Comp.T1D(Индекс1,КодИзделия1 )=Ид1
^Comp.T1D(Индекс1,КодИзделия2 )=Ид2

При это у нас основа - данные, а индексы строит каше и их может много разных.
Но естественно без точного описания задачи таблицы проектировать неудобно.

Где то я кажется это уже слышал, точнее читал.. вроде у Труба, параграф 12,2 "Универсальная модель хранения данных" (с. 163)- там есть листинг 12,4...или то не то??
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232746
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotНе понятно, чем эта схема отличается от моего кода? Трёхмерный массив остаётся трёхмерным, или нет?
Я думал вы увидите. Суть в том, что это ОДИН индекс, он не повторяется.
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232765
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы зря зацепились за один индекс.
Вы очень ограничиваете себя в этом.

Труба не читал. То, что я привел - делает компилятор каше при стандартном способе хранения. Но если он для вас в новинку, то уж извините...

И вообще:
Нет N-мерности в каше!
Глобалы - это не массивы!
И уж тем более каше не многомерная база данных.

Удивительно, когда маркетингу верял люди, работающие с ситемой...
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232787
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.И вообще:
Нет N-мерности в каше!
Глобалы - это не массивы!
И уж тем более каше не многомерная база данных.

Какие интересные новости! Можно поподробнее?
Я весь в смятении, 22 года считал, что это массивы. По-моему, не только я один.
Ужасно интересно, что же такое глобалы? Откройте мне тайну, плиииз!
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35232810
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov22 года считал, что это массивы. По-моему, не только я один.
Аналогично.
Ну если только "разреженые".
...
Рейтинг: 0 / 0
функция $O или что то другое..?
    #35233001
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, уговорили, при некоторой абстрации можно считать глобалы массивами.

Но вообще-то насколько мне помнится, все индексы в каше собираются в одно значение и этот кусочек данных является ключем в B-дереве.
То есть данные в каше хранятся в виде "таблицы" из двух полей - ключ и значение, причем эта "таблица" хранится в B-дереве.

То есть строится B-дерево из ключей (которые "делаются" из индексов) + цепляются данные, тоже упакованные в одно значение.
Отсюда и будут проблемы при задачах типа "хочу зафиксировать значение третьего индекса и пройти по первому"
Их нет, этих индексов. И доступ ко второму индексу (вернее, второй половинке ключа) без знания первой - невозможен.

Мое высказываение, что каше - не многомерная база, доказывать нужно?
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 1 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / функция $O или что то другое..?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]