Only() возвращает значение, если есть только один возможный результат, который может быть получен из агрегированных данных. Например, при поиске одного продукта, где стоимость единицы = 9, будет возвращено значение NULL, если стоимость единицы 9 есть у нескольких продуктов.
Выражение или поле, содержащее данные для измерения.
SetExpression
По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен выражением анализа множества.
TOTAL
Если слово TOTAL стоит перед аргументами функции, вычисление выполняется по всем возможным значениям, указанным в текущих выборках, а не только в тех, которые относятся к значению текущего измерения, т. е. измерения диаграммы игнорируются.
При использовании выражения TOTAL [<fld {.fld}>], где префикс TOTAL предшествует списку из одного или нескольких имен полей, выступающих в качестве подмножества переменных измерения диаграммы, создается подмножество всех возможных значений.
Загрузите данные и откройте лист. Создайте новую таблицу со следующими мерами:
=Only({<UnitPrice={9}>} Product), чтобы вычислить единственный элемент Product, который имеет UnitPrice=9.
=Only({<Product={DD}>} Customer), чтобы вычислить единственного клиента Customer, который продает Product под названием DD.
=Only({<UnitPrice={20}>} UnitSales), чтобы подсчитать количество UnitSales, где UnitPrice=20.
=Only({<UnitPrice={15}>} UnitSales), чтобы вычислить значения UnitSales, где UnitPrice = 15.
Results table
Only({<UnitPrice={9}>} Product)
Only({<Product={DD}>} Customer)
Only({<UnitPrice={20}>} UnitSales)
Only({<UnitPrice={15}>} UnitSales)
BB
Betacab
2
-
В этом примере обратите внимание на следующие данные:
Первый столбец возвращает значение BB, потому что это единственный элемент Product, который имеет UnitPrice=9.
Второй столбец возвращает Betacab, поскольку это единственный клиент Customer, который продает Product под названием DD.
Третий столбец возвращает значение 2, потому что это единственный элемент UnitSales, где UnitPrice = 20.
Четвертый столбец возвращает NULL, потому что нет ни одного результата, где UnitPrice = 15. В этом наборе данных есть два значения UnitSales, где UnitPrice =15.
Пример. Сценарий использования функции Only
Обзор
Набор данных содержит продажи продуктов по периодам. Компании требуется определить, продается продукт в одном магазине или в нескольких.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу данных под именем Example.
Следующие поля в таблице данных:
Date
RecordID
StoreProduct
Sales
Скрипт загрузки
Example:
Load * inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
StoreProduct
Создайте следующие меры:
=Only(Store), чтобы вычислить уникальный магазин, в котором продается продукт.
=If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store'), чтобы вычислить, продается товар в одном магазине или в нескольких.
=Sum(Sales), чтобы вычислить общий объем продаж продукта.
Результаты показывают, что Apples и Bananas продаются только в одном магазине, в то время как Carrots продается в нескольких магазинах.
Пример. Расширенный сценарий для создания таблицы записей за один месяц
Обзор
В этом примере используется функция Only, чтобы показать построчную таблицу записей за один месяц. С этой целью используется анализ множеств, чтобы определить нужный набор записей. Для анализа множеств требуется как минимум одна мера, хотя, поскольку на самом деле не нужно агрегировать набор записей, можно эффективно использовать функцию агрегирования Only для размещения области анализа набора.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных, который загружается в таблицу данных под именем Example.
Предшествующий оператор загрузки, который получает поле MonthYear на основе поля Date путем усечения дня месяца с помощью функции MonthStart, и возвращает представление даты 1-го числа каждого месяца. Этот результат передается в функцию Date для установки формата отображения MMM YY, например Jan 24.
Следующие поля в таблице данных:
Date
RecordID
StoreProduct
Sales
Store
Скрипт загрузки
Example:
Load
*,
date(MonthStart (Date),'MMM YY') AS MonthYear
inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
MonthYear
RecordID
Date
StoreProduct
Store
Создайте следующие меры:
=Only({$<MonthYear={'$(=MaxString(MonthYear))'}>} Sales), чтобы оценить значение Sales и вернуть только те продажи, в которых MonthYear является последним (самым последним) из доступных MonthYear, исходя из текущей выборки в таблице. Pасширение со знаком доллара ($) выполняет встроенное вычисление с помощью функции MaxString, $(=MaxString(MonthYear)), которая возвращает текстовое представление самого последнего значения MonthYear.
Примечание к информацииПопытка отфильтровать MonthYear на основе числового представления, например, с помощью функции Max , Max(MonthYear), не даст никакого результата. Анализ множества применяет выборки фильтров, основанные только на текстовом представлении любого двойного типа данных; тип данных с числовым и текстовым представлением, например Date.
На выходе функции Only получается таблица записей, в которой по умолчанию представлена стоимость продажи для самого последнего, то есть самого недавнего, MonthYear, имеющегося в данных. Если выбрать более ранний месяц в столбце MonthYear, например Feb 24, то появится самое последнее значение продаж за этот месяц.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!