Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122

Group-object и пустые значения

29.02.2024, 06:23. Показов 3558. Ответов 78
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобраться. Собирается некий
Code
1
2
3
4
5
6
7
8
foreach ($val in $vals)
 $arr += [pscustomobject]@{
a = $val1
b = $val2
c = $val3
d = $val4
}
$arr | ft
. Собирается все это в некую табличку.
Мне нужно сгруппировать строки по нескольким свойствам.
Code
1
$doubl = ($arr | Group-Object  a, b,  c | Where{$_.count -ne 1}).Group
Все прекрасно до тех пор пока в значениях перечисленных свойств не начинаю попадать пустые значения. Просто уходит в ошибку шел, ругается на позиционирование.
я конечно воткнул костыль:
Code
1
$arr | ? {$_.a -eq $null} | % {$_.a = 'Null'}
Но свойств много, не буду же я писать этот кастыль для каждого, форичем пробежатся по всем свойствам и заменить значения на нулл тоже так себе, но уже лучше. Почитал справку, не че не нашел. Неужели нельзя включить в Group-object $NULL?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.02.2024, 06:23
Ответы с готовыми решениями:

Изменение существующей группы object-group
Существует группа на CISCO object-group service Ports tcp eq 2555 tcp eq 3444 и т.д. какими командами можно добавить в...

Внесение изменений в Group Policy Object
Привет всем! Может кто-нибудь подсказать, как внутри Group Policy Object делать изменения с помощью Powershell? Например создать...

Cisco ASA, object group - remark?
День добрый, я тут пытаюсь нагуглить можно ли оставить комментарий к добавленному хосту в object-group? Делаю network-object host 1.2.3.4...

78
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.03.2024, 11:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от sergey020487 Посмотреть сообщение
в этом случае номера и даты этих накладных (в разрезе одного заказа) нужно сложить, в то время в значение даты анулировать
Это Вы рассказываете, как Вы пытаетесь поступать... а какова конечная цель?
Т.е. сложили даты, обнулили значения во всех узлах (это не проблема), а что дальше Вы с ними делаете?
1
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 11:45  [ТС]
YuS_2, В скуль нужно передать строками, где одна строка один заказ. В большинстве случаев так оно и есть, парсится и парсится. Но иногда в одном заказе две накладные, их нужно соединить в одну (обьеденить в одном заказе). Так как поле "накладная" в скуле имеет тип варчар, в случае когда в одном заказе массив номеров накладных и массив дат накладных, сваливаем через запятую эту информацию в это поле - номер заказа1, номер заказа2, дата1, дата2. В то же время аннулирую поле с датой, так как по дате будет производится фильтрация и там массивы там нахрен не нужны, да и тип дам datetime. Вот это я и пытаюсь сделать, в том числе. А нюансов еще куча.
0
2812 / 509 / 122
Регистрация: 26.09.2020
Сообщений: 964
Записей в блоге: 5
05.03.2024, 11:46
sergey020487
PowerShell
1
2
3
4
5
6
7
8
$Заказ.Товары.Товар | ForEach-Object {
            [PSCustomObject] @{
                НомерЗаказа              = $Заказ.НомерЗаказа
                ДатаЗаказа               = $Заказ.ДатаЗаказа
                НомерТоварнойНакладной   = $Заказ.ТоварнаяНакладная.Номер
                ДатаТоварнойНакладной    = if ($Заказ.ТоварнаяНакладная.Дата -is [array]) { 2222 } else { $Заказ.ТоварнаяНакладная.Дата }
и.т.д.
…
2
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.03.2024, 11:47
Цитата Сообщение от sergey020487 Посмотреть сообщение
а самое интересное, что исключение то он вываливает, но если собрать в файл, собирает он правильно.
Возможно там другой код, который не выполняет таких действий...
Но Вы опишите, что Вы пытаетесь делать в ситуации, когда в одном заказе несколько накладных?
1
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 11:51  [ТС]
YuS_2, 62 сообщение
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.03.2024, 12:20
Цитата Сообщение от sergey020487 Посмотреть сообщение
В то же время аннулирую поле с датой, так как по дате будет производится фильтрация и там массивы там нахрен не нужны, да и тип дам datetime. Вот это я и пытаюсь сделать, в том числе. А нюансов еще куча.
Не надо ничего аннулировать... это лишнее и ненужное действие.
В случае, когда Вы получаете массив дат, можно взять одну из них, например так:
PowerShell
1
$Заказ.ТоварнаяНакладная.Дата[0]
и внести как единственную, ну или присвоить в создаваемый объект другое значение, которое необходимо.

то бишь, в целом, вот такую строку кода сделайте:
PowerShell
1
2
3
4
...
ДатаТоварнойНакладной    = if ($Заказ.ТоварнаяНакладная.Дата.count -gt 1) { 
    $Заказ.ТоварнаяНакладная.Дата[0]} else { $Заказ.ТоварнаяНакладная.Дата }
…
как в примере здесь #63
1
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 12:37  [ТС]
iNNOKENTIY21, YuS_2, Спасибо товарищи, работает.
Правильно ли я понял, что
Code
1
if ($Заказ.ТоварнаяНакладная.Дата -is [array]) { 2222 }
{ 2222 } присваивается не одному а всем узлам (без точного адреса в виде $Заказ.ТоварнаяНакладная.Дата =....)?
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.03.2024, 13:03
Цитата Сообщение от sergey020487 Посмотреть сообщение
{ 2222 } присваивается не одному а всем узлам (без точного адреса в виде $Заказ.ТоварнаяНакладная.Дата =....)?
Нет, здесь нет присвоения. Это условный блок, который в зависимости от выполнения условия, на выходе дает число 2222 или ничего.
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
05.03.2024, 13:17
Цитата Сообщение от sergey020487 Посмотреть сообщение
Так как поле "накладная" в скуле имеет тип варчар, в случае когда в одном заказе массив номеров накладных и массив дат накладных, сваливаем через запятую эту информацию в это поле - номер заказа1, номер заказа2, дата1, дата2.
ха-ха

Кто. Тебе. Сказал. Что. Так. Надо. Делать ?

Реально товаров два ? Один в одной накладной, второй в другой ?
Значит надо менять схему в сиквеле, чтоб соответств. жизненным реалиям.
И если кто-то говорит, что не надо, а перечислять строкой через запятую, то он идиот.
0
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 13:36  [ТС]
volodin661, Что же Вы такой категоричный. Там есть свои администраторы, они крутят базы, кубы... Ну если им так нравится/удобнее/привыкли, а скорее всего просто в связи с заменой схемы, поплывет все, придется переделать кучу хранимок, переделать процессинг кубов, из кубов тянется куча экселешных отчетов написанных на vba/vbs. Все это писали еще австралопитеки. Как только польется в базу что-то не то, это все встанет. И что, потом палкой ковырять эту засохшую кучу?
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
05.03.2024, 13:45
sergey020487,
а ты не пиши в их таблицы, пиши в свою; если понадобится, переложат в кубы вместе с запятыми.

XML разобрал, в таблицы в норм. форме разложил, данные не потерял, всё, как на ладони. Какие тут могут быть претензии ?
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
05.03.2024, 13:48
Цитата Сообщение от sergey020487 Посмотреть сообщение
Ну если им так нравится/удобнее/привыкли
скорее следуют основному правилу админа: работает - не трогай

Цитата Сообщение от sergey020487 Посмотреть сообщение
И что, потом палкой ковырять эту засохшую кучу?
Многое зависит от задачи... и от заказчика, естественно...
Если надо чтобы просто как-то работало, придется подстраиваться, а если необходимо, чтобы работало правильно и вкупе со всеми плюшками... придется таки разворошить муравейник
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
05.03.2024, 13:50
По большому счету здесь не для powershell задача вовсе.

а) Загрузчик по отношению к БД внешний, написать на C#.
b) Загрузчик внутренний; у MSSQL свой XQuery, разложит всё одним запросом.
0
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 13:52  [ТС]
YuS_2, полностью согласен. Да и я не выполняю новую задачу, а перенашу ее на PS с другой платформы которая работала медленно. Но исходный код у меня есть, и я его придерживаюсь.
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
05.03.2024, 13:59
Цитата Сообщение от sergey020487 Посмотреть сообщение
Да и я не выполняю новую задачу, а перенашу ее на PS с другой платформы которая работала медленно.
и поэтому прикладываешь все возможные усилия, чтобы новая версия работала ещё медленнее ?
традиции надо чтить. прально.
0
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
05.03.2024, 14:13  [ТС]
volodin661, Да я вот наооборот к Вам обращаюсь, чтоб по моей глупости не допустить, ну или хотябы посторатся недопустить "новая версия работала ещё медленнее "
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
05.03.2024, 14:59
sergey020487,
в третий раз ( задвоения нежелательны, а три раза повторять мне одно и то же - норм ! )

не надо переливать из одной бочки по имени 'мильон xml-nodes' в бочку 'массив pcustomobjects', ничего не даёт.

хотя бы в качестве первой версии
создай свои таблицы со связями в mssql как это и задумано в реляц. БД ( Заказы, Товары, Накладные, итд)
и холодно за один проход перелей туда этот XML, никаких запятых, в нормальной форме.

почувствуешь уверенность, оценишь скорость.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
06.03.2024, 15:46
Цитата Сообщение от volodin661 Посмотреть сообщение
создай свои таблицы со связями в mssql как это и задумано в реляц. БД ( Заказы, Товары, Накладные, итд)
А схему вручную составлять?

Цитата Сообщение от volodin661 Посмотреть сообщение
и холодно за один проход перелей туда этот XML
это да... только ведь подготовить сначала всё надо
0
 Аватар для volodin661
7180 / 2357 / 354
Регистрация: 10.12.2013
Сообщений: 8,164
06.03.2024, 17:01
Цитата Сообщение от YuS_2 Посмотреть сообщение
это да... только ведь подготовить сначала всё надо
понятное дело.

три раза уже сказал - плясать надо от задачи.
главная задача какая? => загрузить xml в базу.

значит что надо делать ? => пойти на стэковерфло, найти готовый пример загрузки xml из powershell в mssql,
приготовить свою таблицу в MSSQL ( любую!) и загрузить свой XML из 5 простых узлов.

затем загрузить реальный xml, оценить время.

затем всё то же самое с C# => найти готовый пример, загрузить реальный XML итд.
оценить время.
думаю, что будет быстрее, чем powershell, раз в 10.

сделать выводы и начать думать уже о конкретной задаче.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2024, 17:01

Распространить один object-group на все cisco
Здравствуйте. Есть несколько железок Cisco ASA, на всех есть object-group network PERMITED_INET_HOST и он везде одинаковый. Если его надо...

Нулевые значения баз данных. Object reference not set to an instance of an object
В базе данных существуют пустые поля. Из базы осуществляется вывод на веб страницу в поля ввода. Поля соответствующие нулевым значениям...

Mixing of GROUP columns (MIN(),MAX(),COUNT(),.) with no GROUP columns is illegal if there is no GROUP BY clause
Такая ошибка: КОД: $result=mysql_query("SELECT description, min(schedule.date) as date FROM schedule where...

Method union of object global failed при попытке затиреть пустые строки
Добрый день есть скрипт в котором я использую код описанный ниже для того, что бы затирать пустые строки. Данный код я использую на...

Пустые поля приводят к ошибке Microsoft VBScript runtime error '800a01a8' Object required
в таблице часть полей не заполняется, делаю селект *, получаю нужные записи, в цикле прохожу, должен вывести результат запроса: while...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
79
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru