Оператор lookup
Расширяет столбцы таблицы фактов со значениями, отображаемыми в таблице измерений.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Здесь результатом является таблица, которая расширяет FactTable
($left
) данные из DimensionTable
(на которые ссылается$right
) путем выполнения подстановки каждой пары (,Col
) из предыдущей таблицы с каждой парой (CommonColumn1
CommonColumn
,),Col2
в последней таблице.
Различия между таблицами фактов и измерений см. в таблицах фактов и измерений.
Оператор lookup
выполняет операцию, аналогичную оператору соединения со следующими различиями:
- Результат не повторяет столбцы из
$right
таблицы, которая является основой для операции соединения. - Поддерживаются только два типа подстановки,
leftouter
иinner
приleftouter
этом используется значение по умолчанию. - С точки зрения производительности система по умолчанию предполагает, что
$left
таблица является большей (фактами), а$right
таблица — меньшей (измерениями). Это совершенно противоположно предположению, используемомуjoin
оператором. - Оператор
lookup
автоматически передает$right
таблицу в$left
таблицу (по сути, ведет себя так, как еслиhint.broadcast
бы он был указан). Это ограничивает размер$right
таблицы.
Примечание.
Если справа от подстановки больше нескольких десятков мб, запрос завершится ошибкой.
Чтобы оценить размер правой стороны в байтах, выполните следующий запрос:
rightSide
| summarize sum(estimate_data_size(*))
Синтаксис
LeftTable lookup
)
|
on
[kind
=
(leftouter
inner
|)] (
Условия правой таблицы
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
ЛеваяTable | string |
✔️ | Табличное или табличное выражение, которое является основой подстановки. Обозначается как $left . |
RightTable | string |
✔️ | Табличное или табличное выражение, которое используется для заполнения новых столбцов в таблице фактов. Обозначается как $right . |
Атрибуты | string |
✔️ | Список с разделителями-запятыми одного или нескольких правил, описывающих сопоставление строк из LeftTable со строками из RightTable. Несколько правил оцениваются с помощью логического оператора and . См . правила. |
kind |
string |
Определяет, как обрабатывать строки в ЛевойTable, которые не соответствуют в RightTable. По умолчанию используется, что означает, leftouter что все эти строки будут отображаться в выходных данных со значениями NULL, используемыми для отсутствующих значений столбцов RightTable , добавленных оператором. Если inner используется, такие строки опущены из выходных данных. Другие виды соединения не поддерживаются оператором lookup . |
Правила
Тип правила | Синтаксис | Предикат |
---|---|---|
Равенство по имени | ColumnName | where LeftTable.ColumnName == RightTable.ColumnName |
Равенство по значению | $left. LeftColumn == $right. RightColumn |
where $left. LeftColumn *RightColumn == $right. |
Примечание.
В случае равенства по значению имена столбцов должны быть квалифицированы с соответствующей таблицей владельца, обозначаемой $left
и $right
нотациями.
Возвраты
Таблица со следующими элементами.
- Столбец для каждого столбца в каждой из двух таблиц, в том числе соответствующие ключи. Столбцы правой стороны будут автоматически переименованы в случае конфликтов имен.
- Строка для каждого соответствия во входных таблицах. Соответствие — это строки из обеих таблиц, у которых совпадают значения всех полей
on
. - Атрибуты (ключи подстановки) будут отображаться только один раз в выходной таблице.
- Если
kind
не указано илиkind=leftouter
, в дополнение к внутренним совпадениям, есть строка для каждой строки слева (или или справа), даже если она не соответствует. В этом случае ячейки выходных данных без соответствий содержат значения NULL. - Если
kind=inner
есть строка в выходных данных для каждого сочетания соответствующих строк слева и справа.
Примеры
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Bill", "Gates",
"2", "Bill", "Clinton",
"3", "Bill", "Clinton",
"4", "Steve", "Ballmer",
"5", "Tim", "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Bill", "Gates", "billg",
"Bill", "Clinton", "billc",
"Steve", "Ballmer", "steveb",
"Tim", "Cook", "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Строка | Персональный | Семья | Псевдоним |
---|---|---|---|
1 | Билл | Шлюзы | выставление счетов |
2 | Билл | Клинтон | выставление счетов |
3 | Билл | Клинтон | выставление счетов |
4 | Стив | Балмер | стивб |
5 | Tim | Повар | тимк |
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по