0

Expression Editor - автоматический подсчет количества записей в файле

azagoskin 2 years ago in Micromine / Scripting updated 2 years ago 8

Здравствуйте!

Для анализа сходимости дубликатов мне потребовался расчет поля Накопленной частоты. Выражение имеет вид :

[Cumulative Frequency (%)]=if [#record] = 1 then (100*1/19) else ((100*1/19)+ [<Cumulative Frequency (%)]) endif,

где 19 - общее количество записей в файле. Вопрос состоит в том, возможен ли автоматический подсчет этого значения (объем выборки будет изменяться в зависимости от примененных на предыдущих стадиях фильтров)?

С уважением, 

Андрей

+5

Здравствуйте!

Определить количество записей в файле используя выражениях не получится. Но Ваш кейс натолкнул нас на мысль, что такая функция расширила бы возможности выражений.Будем добавлять в следующих версиях ММ. Спасибо Вам, что делаете нас лучше.

Для решение вашей задачи можно использовать скрипт.

Что бы определить количество записей в файле с помощью скрипта  достаточно написать следующее:

path = MMpy.Project.path() + "assay_wr.DAT" #Указываем Путь к файлу
file = MMpy.File()  #Создаем экземпляр файла
file.open(path) #Открываем файл
rec = file.records_count  #Определяем количество записей в файле

print(rec)


Пример скрипта во вложении. Для работы скрипта необходимо скачать и установить Python 3.5.8.

rec.py

Если у вас возникнут вопросы обращайтесь!

С уважением,

Григоровский Илья | Технический специалист ГГИС Micromine, представитель по Уральскому региону

ООО «Майкромайн Рус»

+2

Можно и макросами. Количество записей определяется любым статистическим процессом. Создай поле в файле, пропиши ему 1 для всех значений. Запусти статистику на это поле, на выходе будет файл, в котором будет в том числе и сумма - это и есть количество записей. Затем надо сделать так, чтобы этот файл читался.

Для пущей автоматизации создай файл макриса, и к этому файлу присоедини файл статистики - пропиши это значение в одно из полей переменных. Макрос можно будет вызывать из другого макроса, читать переменную и делать какие-то необходимые действия.

+2

Да, для определения количества записей в файле   и автоматической подстановки этого значения в выражение можно использовать макрос:

1. Определим количество записей используя функцию Файл/Генератор отчетов. Также необходимо создать уникальное поле, например code со значением 1.

2.Объеденим файл отчета и файл макроса (Файл/ Объединить/Майкромайн) как показано ниже.


3. После запуска макроса переменна будет автоматически подставленна из отчета в столбец %1, напротив указанного значений 1 в столбце %2.


4.Далее  используем эту переменную в нужных процессах.

Дмитрий, Илья, спасибо! попробую сегодня такой путь. 

И еще один вопрос по ходу возник, правда уже по фильтрам:

Требуется отфильтровать скважины по дате начала бурения, скажем, за месяц.

Пробовал такое выражение, но оно почему-то не сработало:

2020-07-01<[DATE_COMPLETED]<2020-08-01

+2

Здравствуйте, Андрей.
Здесь Вы можете воспользоваться:

  • либо Классическим режимом фильтра, выглядеть это будет так:
  • либо Выражением, в таком случае оно будет иметь следующий вид:

Спасибо, то, что нужно!

+1

Вот такое бы тоже сработало (внимание на кавычки):

"2020-07-01"<[DATE_COMPLETED]<"2020-08-01"

Спасибо, Денис - я знал, что такое возможно!