Benutzerdefinierte Anweisungen in Cortex Analyst¶
Mit den benutzerdefinierten Anweisungen haben Sie eine größere Kontrolle über die Erstellung von SQL. Mit Hilfe von natürlicher Sprache können Sie Cortex Analyst genau mitteilen, wie SQL-Abfragen aus Ihrer semantischen YAML-Modelldatei generiert werden sollen. Verwenden Sie zum Beispiel benutzerdefinierte Anweisungen, um Cortex Analyst mitzuteilen, was Sie mit Leistung oder Geschäftsjahr meinen. Auf diese Weise können Sie die Genauigkeit des generierten SQL verbessern, indem Sie eine benutzerdefinierte Logik oder zusätzliche Elemente einbauen.
Für eine detailliertere Kontrolle können Sie auch benutzerdefinierte Anweisungen für einzelne Module in der SQL-Generierungspipeline angeben. Weitere Informationen dazu finden Sie unter Modul benutzerdefinierte Anweisungen.
So funktionieren benutzerdefinierte Anweisungen¶
Cortex Analyst fügt das Feld custom_instructions
in die Datei des semantischen Modells YAML ein. In diesem Feld können Sie definierende Änderungen oder Ergänzungen bei der Erstellung von SQL vornehmen.
Weitere Informationen über die Syntax des semantischen Modells finden Sie unter Cortex Analyst-Spezifikation des semantischen Modells.
Beispiele¶
Um mögliche Anwendungsfälle für benutzerdefinierte Anweisungen zu erkunden, betrachten Sie die folgenden Beispiele.
Formatieren der Datenausgabe¶
Stellen Sie sicher, dass alle Zahlen in der Ausgabe auf zwei Dezimalstellen gerundet werden.
Das Feld custom_instructions
in der Datei des semantischen Modells YAML¶
custom_instructions: "Ensure that all numeric columns are rounded to 2 decimal points in the output."
Generierte SQL-Abfrage¶
SELECT
ROUND(column_name, 2) AS column_name,
...
FROM
your_table;
Prozentsätze anpassen¶
Multiplizieren Sie Prozent- oder Ratenberechnungen automatisch mit 100, um Konsistenz zu gewährleisten.
Das Feld custom_instructions
in der Datei des semantischen Modells YAML¶
custom_instructions: "For any percentage or rate calculation, multiply the result by 100."
Generierte SQL-Abfrage¶
SELECT
(column_a / column_b) * 100 AS percentage_rate,
...
FROM
your_table;
Hinzufügen von Standardfiltern¶
Wenden Sie einen Filter an, wenn der Benutzer keinen angibt (z. B. standardmäßig das letzte Jahr).
Das Feld custom_instructions
in der Datei des semantischen Modells YAML¶
custom_instructions: "If no date filter is provided, apply a filter for the last year."
Generierte SQL-Abfrage¶
SELECT
...
FROM
your_table
WHERE
date_column >= DATEADD(YEAR, -1, CURRENT_DATE);
Verknüpfung von Spaltenfiltern¶
Wenden Sie zusätzliche Filter auf verwandte Spalten an, die auf Benutzereingaben basieren.
Das Feld custom_instructions
in der Datei des semantischen Modells YAML¶
custom_instructions: "If a filter is applied on column X, ensure that the same filter is applied to dimension Y."
Generierte SQL-Abfrage¶
SELECT
...
FROM
your_table
WHERE
column_x = 'filter_value' AND
dimension_y = 'filter_value';
Modul benutzerdefinierte Anweisungen¶
Legen Sie den Schlüssel module_custom_instructions
auf der obersten Ebene Ihres semantischen Modells fest, um benutzerdefinierte Anweisungen für bestimmte Komponenten in der SQL-Generierungspipeline zu definieren. Dieses Feature ist nützlich für Anwendungsfälle wie den folgenden:
Definieren Sie die Logik, die beeinflusst, wie die Fragen der Benutzer interpretiert werden, bevor SQL generiert wird
Pflegen Sie separate, besser strukturierte Anweisungen für verschiedene Teile des Analysten-Workflows
Umstellung von
custom_instructions
auf ein modulareres Format, wenn Ihre Nutzung wächst
Derzeit unterstützt module_custom_instructions
die folgenden Komponenten:
question_categorization
: Legen Sie fest, wie Cortex Analyst die Fragen der Benutzer klassifizieren soll (z. B. indem Sie bestimmte Themen blockieren oder die Verhaltensweise der Benutzer steuern).sql_generation
: Geben Sie an, wie SQL generiert werden soll (z. B. Datenformatierung und Filterung).
Anweisungen für eine oder beide dieser Komponenten können unter dem Schlüssel module_custom_instructions
eingestellt werden.
Wichtig
Migrieren Sie alle vorhandenen custom_instructions
in die Komponente sql_generation
, wie im folgenden Beispiel gezeigt.
Migrieren vorhandener benutzerdefinierter Anweisungen¶
Wenn Ihr Modell bereits über ein Feld custom_instructions
verfügt, migrieren Sie dessen Inhalt in das Feld sql_generation
unter module_custom_instructions
.
Vorher:
custom_instructions: "Ensure that all numeric columns are rounded to 2 decimal points."
Nachher:
module_custom_instructions:
sql_generation: |
"Ensure that all numeric columns are rounded to 2 decimal points."
Blockieren von Fragen zu bestimmten Themen¶
Sie können die Komponente question_categorization
verwenden, um Fragen zu bestimmten Themen zu blockieren. Wenn Sie beispielsweise Fragen über Benutzer blockieren möchten, können Sie die folgenden Anweisungen festlegen. Cortex Analyst lehnt dann Fragen über Benutzer mit einer Nachricht ab, in der es aufgefordert wird, ihren Administrator zu kontaktieren.
module_custom_instructions:
question_categorization: |
Reject all questions asking about users. Ask users to contact their admin.
Sie können auch Anweisungen zur Kategorisierung von Fragen verwenden, um nach fehlenden Details zu fragen. Im folgenden Beispiel fordert Cortex Analyst den Benutzer auf, einen Produkttyp anzugeben, wenn er nach Benutzern fragt und keinen angibt.
module_custom_instructions:
question_categorization: |
- If the question asks for users without providing a product_type, consider this question UNCLEAR and ask the user to specify product_type.
Best Practices¶
- Seien Sie konkret.
Beschreiben Sie die Änderungen klar und deutlich, z. B. „Fügen Sie eine Spalte mit einem festen Wert von 42 hinzu“ oder „Fügen Sie eine Summenberechnung für Spalte X ein“.
- Fangen Sie klein an.
Beginnen Sie mit einfachen Änderungen, wie dem Hinzufügen einer statischen Spalte oder von Standardfiltern, bevor Sie zu komplexeren Szenarien übergehen.
- Zeigen Sie eine Vorschau der generierten SQL-Abfrage an.
Vergewissern Sie sich, dass die Anweisungen wie vorgesehen angewendet werden und dass die generierte SQL-Abfrage korrekt ist.
- Iterieren Sie schrittweise.
Experimentieren Sie mit komplexeren Anwendungsfällen, je vertrauter Sie mit dem Feature werden.