Коллеги, добрый день. Ситуация такая, что я пытаюсь извлечь файлы из архива. Использую, в общем-то, готовые решения из сети, например, такие:
Скрытый текст
Код
(ZIPFile) =>
let
Header = BinaryFormat.Record([
MiscHeader = BinaryFormat.Binary(14),
BinarySize = BinaryFormat.ByteOrder(BinaryFormat.UnsignedInteger32, ByteOrder.LittleEndian),
FileSize = BinaryFormat.ByteOrder(BinaryFormat.UnsignedInteger32, ByteOrder.LittleEndian),
FileNameLen= BinaryFormat.ByteOrder(BinaryFormat.UnsignedInteger16, ByteOrder.LittleEndian),
ExtrasLen = BinaryFormat.ByteOrder(BinaryFormat.UnsignedInteger16, ByteOrder.LittleEndian)
]),
HeaderChoice = BinaryFormat.Choice(
BinaryFormat.ByteOrder(BinaryFormat.UnsignedInteger32, ByteOrder.LittleEndian),
each if _ <> 67324752 // not the IsValid number? then return a dummy formatter
then BinaryFormat.Record([IsValid = false, Filename=null, Content=null])
else BinaryFormat.Choice(
BinaryFormat.Binary(26), // Header payload - 14+4+4+2+2
each BinaryFormat.Record([
IsValid = true,
Filename = BinaryFormat.Text(Header(_)[FileNameLen]),
Extras = BinaryFormat.Text(Header(_)[ExtrasLen]),
Content = BinaryFormat.Transform(
BinaryFormat.Binary(Header(_)[BinarySize]),
(x) => try Binary.Buffer(Binary.Decompress(x, Compression.Deflate)) otherwise null
)
]),
type binary // enable streaming
)
),
ZipFormat = BinaryFormat.List(HeaderChoice, each _[IsValid] = true),
Entries = List.Transform(
List.RemoveLastN( ZipFormat(ZIPFile), 1),
(e) => [FileName = e[Filename], Content = e[Content] ]
)
in
Table.FromRecords(Entries)
Вроде бы всегда это работало, но тут что-то не выходит. Выводится ошибка: В запросе "" произошла ошибка. Expression.Error: Число находится вне диапазона 32-битного целочисленного значения. Сведения: 4294967295
Добрый день. К сожалению, несколько не так. Я бы хотел, чтобы можно было на срезе выключать часть элементов и их сумма автоматически попадала в категорию Прочие Ну вот ещё раз пример... Есть таблица: Прод_1 - 1000 Прод_2 - 500 Прод_3 - 400 Прод_4 - 200 Прочее - 0 Сумма - 2100
Я сделал сводную такую таблицу. На срезе я отжал Прод_3 и Прод_4 и получил такой вид: Прод_1 - 1000 Прод_2 - 500 Прочее - 600 Сумма - 2100
Товарищи, добрый день. Сделайте, плиз, подсказку, возможно ли такое решение получить?
Есть данные, они затягиваются в Pivot, из него строится сводная таблица и делаются срезы. В настройках сводной указывается, чтобы "Включить отобранные фильтром элементы в итоги". Не хватает только категории "Прочее", которая бы подсчитывала те элементы, которые исключены срезом.
Собрал на коленке пример с целевым результатом. Подскажите, плиз, есть ли решение подобное?
Кстати, в качестве дополнения, можно и через несколько этапов преобразования таблиц, где мы сначала удаляем фильтрацию, а потом накладываем дополнительную.
Странно, что некому помочь, ну ладно. Сделал имитацию ситуации, вроде бы работает ожидаемый результат. Прилагаю решение здесь, может быть будет кому-то полезно.
Сообщество, помогите пожалуйста. К сожалению, не могу приложить пример, поскольку не получается воссоздать в сжатом размере. Суть сводится к следующему: есть таблица в которой есть столбцы год, квартал, наименование, значение (оно же [ind_311]). Я пытаюсь выполнить построение сводной таблицы средствами Power Pivot так, чтобы для первого квартала показывалось то же значение, а не для первого - значение предыдущего квартала (сумма, имелась ввиду).
Бьюсь над этим уже второй день. Я попробовал разные варианты, например такой:
Скрытый текст
Код
PreviousQuarterValue_:=VAR CurrentQuarter = MAX('Данные суперсет'[quarter])
VAR CurrentYear = MAX('Данные суперсет'[year_])
// Определяем предыдущий квартал
VAR PreviousQuarter_ = IF(CurrentQuarter = 1; 1; CurrentQuarter - 1) // Для первого квартала оставляем 1
// Создаем отфильтрованную таблицу с использованием ALL для удаления фильтров по year_ и quarter
VAR FilteredTable =
CALCULATETABLE(
'Данные суперсет';
ALL('Данные суперсет'[year_]; 'Данные суперсет'[quarter]); // Удаляем фильтры по year_ и quarter
'Данные суперсет'[ub_branch_typ] = 1;
'Данные суперсет'[okved_type] <> "Иная деятельность в ИТ";
'Данные суперсет'[action] = "Объединение"
)
// Если это первый квартал; просто возвращаем данные за этот квартал
VAR PreviousQuarterValue =
IF(
CurrentQuarter = 1;
SUMX(
FILTER(
FilteredTable;
[year_] = CurrentYear && [quarter] = CurrentQuarter
);
[ind_311]
);
SUMX(
FILTER(
FilteredTable;
[year_] = CurrentYear && [quarter] = PreviousQuarter_
);
[ind_311]
)
)
RETURN
PreviousQuarterValue
Но если для первого квартала значение отражается, то для последующих 0.
Я понимаю, что здесь вопросы контекста. И по этой причине пошёл по пти создания временной таблицы, в которой удаляю контекст квартала и года, а потом их возвращаю, Но не получается.
Дайте, пожалуйста, хоть наводку, как и куда компать? Что я не так делаю? Ну не поддаётся мне понимание контекста ни в какую.
let
fn1 = (a)=> a,
a = PostgreSQL.Database(Сервер_Предыдущая_таблица{0}, База_Предыдущая_таблица{0}),
q = try fn1(a) otherwise
#table(
{"column"},
{{null}}
)
in
q
выдал вместо таблички ответ: DataSource.Error: При чтении данных от поставщика произошла ошибка: 'Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера' Сведения: DataSourceKind=PostgreSQL DataSourcePath=192.168.1.7;super
Коллеги, добрый день. Не нашёл внятный ответ на свой вопрос в сети, потому спрашиваю (ну, или лохо искал). Есть такой код:
Код
let
Источник = try PostgreSQL.Database(Сервер_Предыдущая_таблица{0}, База_Предыдущая_таблица{0}) otherwise null
in
Источник
Этот код должен соединиться с сервером и выдать его содержание. Однако, иногда, соединение может не поизойти. Тогда выдаётся информационное сообщение типа: DataSource.Error: PostgreSQL: 3D000: база данных "super" не существует Сведения: DataSourceKind=PostgreSQL DataSourcePath=192.168.1.7;super Message=3D000: база данных "super" не существует ErrorCode=-2147467259 А как можно выполнить обработку этого, чтобы выдавалась таблица с единственным столбцом и единственной записью null. Простой try ... otherwise не помог.
Ребя, помогите, плиз, немного растерялся. Прошу прощения за длину файла, не получается сжать Ссылка на файл на драйве.
Ситуация такая, что есть таблица с данными за определённые годы. И есть таблица справочник по годам. Они связаны. Я пытаюсь в текущем году показать данные за предыдущий год, написав такую меру:
Код
Рентабельность собственного капитала (по чистой прибыли):=
VAR CurrentYear = MAX('Годы'[Год])
VAR PrevYear = CALCULATE(MAX('Годы'[Год]); 'Годы'[Год] = CurrentYear - 1)
VAR CurrentSK = CALCULATE(
SUM('Перечень_балансов'[Значение]);
FILTER('Перечень_балансов'; [Код строки] = 1300 && 'Годы'[Год] = CurrentYear)
)
VAR LastSK = CALCULATE(
SUM('Перечень_балансов'[Значение]);
FILTER('Перечень_балансов'; [Код строки] = 1300 && 'Годы'[Год] = PrevYear)
)
RETURN LastSK
И вроде бы всё правильно. НО! В сводной таблице, построенной в логике: Предприятия по строкам, Годы (из таблицы справочника) по столбцам, не отображается результат.
При этом, если я вывожу в таблицу PrevYear - всё нормально. Годы показываются.
Я не могу понять, что я делаю не так, что он отказывается показывать значения.
Коллеги, добрый день. Подскажите, пожалуйста, может быть вы в курсе, нет ли онлайн тренажёра DAX с заданиями, как по SQL, например? Я поискал в сети, но что-то меня постигла неудача. Может быть Вы знаете о существовании такого?
Коллеги, добрый день. Я не уверен, что я корректно задаю вопрос. Именно от собственной неуверенности и пытаюсь что-то спросить на тему. Вопрос такой...
Я подключил большую таблицу из базы. Она самодостаточна, т.е. в ней есть все поля, которые мне нужны в качестве срезов. Подключил я её через power Query, импортнул в модель данных. На её основе строю сводные таблицы и графики. Пока всё норм.
Но в какой-то момент своей жизни я видел, что можно создавать собственные наборы для формирования срезов. Причём, это делалось не средствами Power Pivot, а средствами на панели Excel: Анализ сводной диаграммы -> блок "Вычисления" ->Поля, элементы и наборы данных.
Я попытался погуглить эту тему, но у меня что-то либо очень сложное, либо на каких-то узких примерах попалось.
Lari, такой же вопрос... А можно как-то создать меру, чтобы она работала и на кварталы, и месяцы и годы? Ну, откровенно, смешно же держать несколько мер на каждый случай. Должен же быть какой-то универсальный способ.
surkenny, ну вот всё таки... возвращаясь... Ваша мера работает только в квартальном разрезе, что, в общем-то ужасно (( Не знаете ли, как её написать так, чтобы она работа в формате и лет и месяцев?
Ребят, не могу побороть, подскажите, плиз (без пересчёта значений) Как на ось перенести тот же фортам, что установлен в ячейках? Проблема отображение тысяч и миллионов при установлении ПРОБЕЛА в формате. Т.е. в ячейке всё показывается как надо, а вот на графике - фигня какая-то.
Vik_tor написал: Если Вам необходимо делать такую аналитику, то хорошо бы хоть немного поизучать Power Pivot. И моделирование, и язык DAX.
surkenny, Я бы с большим удовольствием! Не могу понять как подступиться к этому. Может быть поможете немного разобраться?
1. Как вы создали таблицу в Power Pivot, которая "Календарь"? Правильно ли я понял, что через "Таблица дат -> Созать" ? 2. Немного не понял эту меру: profit PQ:=CALCULATE ( [profit]; DATEADD ( 'Календарь'[Date]; -1; QUARTER ) ) . В частности , почему именно -1. И у меня пока не складывается концепция этой формулы. 3. И вот этот красивый кусок: profit QoQ %:=IF ( HASONEVALUE ( 'Календарь'[Квартал] ); VAR curVal = [profit] VAR prevVal = [profit PQ] VAR result = DIVIDE ( curVal - prevVal; prevVal ) RETURN result ) Математика и объявление переменных понятны, а вот зачем HASONEVALUE нужна, не понял.
Подскажите, плиз, немного.
И, может быть, кроме документации, какую-то книженцию, пожалуйста?
surkenny написал: А что именно не получается? Покадите Ваши попытки в PP.
Вот, например, сделал я построение в Power Pivot. Сделал, вроде как, отнесение к предыдущему кварталу. Но не считается каждый первый квартал в текущем году к последнему кварталу предыдущего года.
Давай, плиз, может быть, хоть эту ситуацию разберём.
Я правильно понимаю, что штатного решения ни по одному вопросу нет и мы плавно выходим на то, что нужно писать собственную меру, пока не понятно как...
Товарищи, видимо я что-то не до конца осознал, подскажите, плиз. Я создаю сводную таблицу на основе данных с датами и значениями. Строю сводную. В сводной хочу показать прирост, например, текущего квартала к предыдущему. Но вот какая штука... Когда накидываешь на столбцы кварталы и годы, то при построении с дополнительным вычислением "отклонение" считается в каждом году с начала, т.е. не показывается отклонение, например, 1-го квартала 2021 к 4 кварталу 2022.
И второй вопрос, аналогично по датам. А можно ли построить отклонение всегда относительно первого значения в сводной, например, в моём случае, всё относительно первого квартала 2019.
surkenny, спасибо за отклик. А то я уже отчаялся получить ответ. Я прочитал написанное, но половину не понял. Нет ли у вас возможности показать на примере?
Товарищи, добрый день, На днях осознал для себя, что идеальное решение для графика в некоторых ситуациях - изменяющаяся ось X. Под изменяющейся имеется ввиду, что по какому-то управляющему элементу происходит "подстановка" другого поля из списка доступных в сводной таблице.
В поисках такого решения набрёл на ветки по Power BI (ссылка 1, ссылка 2)
Но вот как подступиться к этой задаче в Excel пока ума не приложу.
Сделал примерчик, чтобы лучше понималось, что бы я хотел (сорри, но с Power Pivot вообще не выходит, чтобы файл был меньше 300 кб) В файле есть исходные данные, которые я импортнул в модель. На них построил таблицы и графики. Получилось 3 графика.
А хочется 3 графика совместить в 1, но чтобы любым элементом можно было поменять ось. Может быть даже срезом, не важно чем.
Помогите понять, можно ли такое реализовать вообще?