Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✅Microsoft Fabric✅
Étend les colonnes d’une table de faits avec des valeurs recherchées dans une table de dimension.
Par exemple, la requête suivante génère une table qui étend la FactTable ($left) avec les données de l'DimensionTable ($right) en effectuant une recherche. La recherche correspond à chaque paire (CommonColumn, Col1) de FactTable avec chaque paire (CommonColumn, Col2) dans le DimensionTable. Pour connaître les différences entre les tables de faits et de dimension, consultez les tables de faits et de dimension.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
L’opérateur lookup effectue une opération similaire à l’opérateurde jointure avec les différences suivantes :
- Le résultat ne répète pas les colonnes de la
$righttable qui sont la base de l’opération de jointure. - Seuls deux types de recherche sont pris en charge et
leftouterinner, étantleftouterla valeur par défaut. - En termes de performances, le système suppose par défaut que la
$lefttable est la table plus grande (faits) et que la$righttable est la table plus petite (dimensions). Cela est exactement l’opposé de l’hypothèse utilisée par l’opérateurjoin. - L’opérateur
lookupdiffuse automatiquement la$righttable dans la$lefttable (essentiellement, se comporte comme sihint.broadcastelle était spécifiée). Cela limite la taille de la$righttable.
Remarque
Si le côté droit de la recherche est supérieur à plusieurs dizaines de MB, 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(*))
Syntaxe
|
lookup LeftTable [kind= (leftouter|inner)] (Attributs)onRightTable
En savoir plus sur les conventions de syntaxe.
Paramètres
| Nom | Type | Requise | Description |
|---|---|---|---|
| LeftTable | string |
✔️ | Table ou expression 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 des lignes dans LeftTable qui n’ont aucune correspondance dans RightTable. Par défaut, leftouter est utilisée, ce qui signifie que toutes ces lignes apparaissent dans la sortie avec des valeurs null utilisées pour les valeurs manquantes de colonnes RightTable ajoutées par l’opérateur. Si inner elle est utilisée, ces lignes sont omises à partir de la sortie. D’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
LeftTable.ColumnName==RightTable.ColumnName |
| Égalité par valeur |
$left.
LeftColumn==$right.RightColumn |
where
$left.
LeftColumn==$right.*RightColumn |
Remarque
En cas d'« égalité par valeur », les noms de colonnes doivent être qualifiés avec la table de propriétaire applicable indiquée par $left et $right par notations.
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 sont 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
onont 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
kindelle n’est pas spécifiée oukind=leftouter, en plus des correspondances internes, il y a 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 existe une ligne dans la sortie pour chaque combinaison de lignes correspondantes de gauche et de droite.
Exemple
L’exemple suivant montre comment effectuer une jointure externe gauche entre le FactTable et le DimTable, en fonction des valeurs correspondantes dans les colonnes Personal et Family.
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Rowan", "Murphy",
"2", "Ellis", "Turner",
"3", "Ellis", "Turner",
"4", "Maya", "Robinson",
"5", "Quinn", "Campbell"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Rowan", "Murphy", "rowanm",
"Ellis", "Turner", "ellist",
"Maya", "Robinson", "mayar",
"Quinn", "Campbell", "quinnc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
de sortie
| Ligne | Personnel | Famille | Alias |
|---|---|---|---|
| 1 | Sorbier des oiseleurs | Murphy | rowanm |
| 2 | Ellis | Tourneur | ellist |
| 3 | Ellis | Tourneur | ellist |
| 4 | Maya | Robinson | mayar |
| 5 | Quinn | Campbell | quinnc |
Contenu connexe
- de jointure de diffusion
- jointure de gauche
- jointure interne
- opérateur de jointure