lookup, opérateur
Étend les colonnes d’une table de faits avec des valeurs recherchées dans une table de dimension.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Ici, le résultat est une table qui étend le FactTable
($left
) avec les données de DimensionTable
(référencées par $right
) en effectuant une recherche de chaque paire (CommonColumn
,Col
) à partir de l’ancienne table avec chaque paire (CommonColumn1
,Col2
) dans la dernière table.
Pour connaître les différences entre les tables de faits et de dimension, consultez Tables de faits et de dimension.
L’opérateur lookup
effectue une opération similaire à l’opérateur de jointure avec les différences suivantes :
- Le résultat ne répète pas les colonnes de la
$right
table qui sont la base de l’opération de jointure. - Seuls deux types de recherche sont pris en charge,
leftouter
etinner
, avecleftouter
étant la valeur par défaut. - En termes de performances, le système suppose par défaut que la
$left
table est la table (faits) plus grande et que la$right
table est la table plus petite (dimensions). Cela est exactement l’opposé de l’hypothèse utilisée par l’opérateurjoin
. - L’opérateur
lookup
diffuse automatiquement la$right
table dans la$left
table (essentiellement, se comporte comme sihint.broadcast
était spécifié). Cela limite la taille de la$right
table.
Notes
Si le côté droit de la recherche est supérieur à plusieurs dizaines de mo, la requête échoue.
Vous pouvez exécuter la requête suivante pour estimer la taille du côté droit en octets :
rightSide
| summarize sum(estimate_data_size(*))
Syntax
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
Conditions RightTable)
on
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
LeftTable | string |
✔️ | Expression de table ou tabulaire qui est la base de la recherche. Désignée sous la forme suivante : $left . |
RightTable | string |
✔️ | Table ou expression tabulaire utilisée pour « remplir » de nouvelles colonnes dans la table de faits. Désignée sous la forme suivante : $right . |
Attributs | string |
✔️ | Liste délimitée par des virgules d’une ou plusieurs règles qui décrivent comment les lignes de LeftTable sont mises en correspondance avec les lignes de RightTable. Les règles multiples sont évaluées à l'aide de l'opérateur logique and . Consultez Règles. |
kind |
string |
Détermine comment traiter les lignes dans LeftTable qui n’ont aucune correspondance dans RightTable. Par défaut, leftouter est utilisé, ce qui signifie que toutes ces lignes s’affichent dans la sortie avec les valeurs null utilisées pour les valeurs manquantes des colonnes RightTable ajoutées par l’opérateur. Si inner est utilisé, ces lignes sont omises de la sortie. Les autres types de jointure ne sont pas pris en charge par l’opérateur lookup . |
Règles
Type de règle | Syntaxe | Predicate |
---|---|---|
Égalité par nom | ColumnName | where Table_gauche.Nom_colonne== Table_droite.Nom_colonne |
Égalité par valeur | $left. Colonne_gauche== $right. Colonne_droite |
where $left. LeftColumn== $right. *RightColumn |
Notes
En cas d'« égalité par valeur », les noms de colonnes doivent être qualifiés avec la table propriétaire applicable, notée par $left
les notations et $right
.
Retours
Une table avec :
- Une colonne pour chaque colonne dans chacune des deux tables, y compris les clés correspondantes. Les colonnes du côté droit seront automatiquement renommées en cas de conflits de noms.
- Une ligne pour chaque correspondance entre les tables d’entrée. Une correspondance est une ligne sélectionnée dans une table, dont tous les champs
on
ont la même valeur qu’une ligne dans l’autre table. - Les attributs (clés de recherche) n’apparaissent qu’une seule fois dans la table de sortie.
- Si
kind
n’est pas spécifié oukind=leftouter
, en plus des correspondances internes, il existe une ligne pour chaque ligne à gauche (et/ou à droite), même si elle n’a aucune correspondance. Dans ce cas, les cellules de sortie sans correspondance contiennent des valeurs null. - Si
kind=inner
, il y a une ligne dans la sortie pour chaque combinaison de lignes correspondantes de gauche et de droite.
Exemples
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
Ligne | Personnel | Famille | Alias |
---|---|---|---|
1 | Bill | Portes | billg |
2 | Bill | Clinton | billc |
3 | Bill | Clinton | billc |
4 | Steve | Ballmer | Steveb |
5 | Tim | Cuisiner | timc |
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour