Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Añadir acciones de devolución de llamada integradas en tiempo de ejecución en Amazon QuickSight
Utilice acciones de devolución de llamadas de puntos de datos integradas para crear integraciones más estrechas entre su aplicación de software como servicio (SaaS) y sus cuadros de mando y elementos visuales integrados en Amazon. QuickSight Los desarrolladores pueden registrar los puntos de datos para recuperarlos con la incrustación. QuickSight SDK Al registrar una acción de devolución de llamada para un elemento visual, los lectores pueden seleccionar un punto de datos del elemento visual para recibir una devolución de llamada que proporcione datos específicos del punto de datos seleccionado. Esta información se puede usar para marcar registros clave, compilar datos sin procesar específicos del punto de datos, capturar registros y compilar datos para los procesos de backend.
No se admiten las llamadas integradas en el contenido del elemento visual personalizado, los cuadros de texto o información.
Antes de empezar a registrar los puntos de datos para la devolución de llamadas, actualice la incrustación SDK a la versión 2.3.0. Para obtener más información sobre el uso de la QuickSight incrustaciónSDK, consulte la amazon-quicksight-embedding-sdk
Se puede registrar una devolución de llamada a un punto de datos en uno o más elementos visuales en tiempo de ejecución mediante el. QuickSight SDK También puede registrar una devolución de llamada a un punto de datos para cualquier interacción compatible con la estructura. VisualCustomActionAPI Esto permite que la devolución de llamada a los puntos de datos se inicie cuando el usuario selecciona el punto de datos en el elemento visual o cuando el punto de datos se selecciona en el menú contextual del punto de datos. En el siguiente ejemplo, se registra una devolución de llamada a un punto de datos que el lector inicia cuando selecciona un punto de datos en el elemento visual.
/const MY_GET_EMBED_URL_ENDPOINT = "https://my.api.endpoint.domain/MyGetEmbedUrlApi"; // Sample URL // The dashboard id to embed const MY_DASHBOARD_ID = "my-dashboard"; // Sample ID // The container element in your page that will have the embedded dashboard const MY_DASHBOARD_CONTAINER = "#experience-container"; // Sample ID // SOME HELPERS const ActionTrigger = { DATA_POINT_CLICK: "DATA_POINT_CLICK", DATA_POINT_MENU: "DATA_POINT_MENU", }; const ActionStatus = { ENABLED: "ENABLED", DISABLED: "DISABLED", }; // This function makes a request to your endpoint to obtain an embed url for a given dashboard id // The example implementation below assumes the endpoint takes dashboardId as request data // and returns an object with EmbedUrl property const myGetEmbedUrl = async (dashboardId) => { const apiOptions = { dashboardId, }; const apiUrl = new URL(MY_GET_EMBED_URL_ENDPOINT); apiUrl.search = new URLSearchParams(apiOptions).toString(); const apiResponse = await fetch(apiUrl.toString()); const apiResponseData = await apiResponse.json(); return apiResponseData.EmbedUrl; }; // This function constructs a custom action object const myConstructCustomActionModel = ( customActionId, actionName, actionTrigger, actionStatus ) => { return { Name: actionName, CustomActionId: customActionId, Status: actionStatus, Trigger: actionTrigger, ActionOperations: [ { CallbackOperation: { EmbeddingMessage: {}, }, }, ], }; }; // This function adds a custom action on the first visual of first sheet of the embedded dashboard const myAddVisualActionOnFirstVisualOfFirstSheet = async ( embeddedDashboard ) => { // 1. List the sheets on the dashboard const { SheetId } = (await embeddedDashboard.getSheets())[0]; // If you'd like to add action on the current sheet instead, you can use getSelectedSheetId method // const SheetId = await embeddedDashboard.getSelectedSheetId(); // 2. List the visuals on the specified sheet const { VisualId } = (await embeddedDashboard.getSheetVisuals(SheetId))[0]; // 3. Add the custom action to the visual try { const customActionId = "custom_action_id"; // Sample ID const actionName = "Flag record"; // Sample name const actionTrigger = ActionTrigger.DATA_POINT_CLICK; // or ActionTrigger.DATA_POINT_MENU const actionStatus = ActionStatus.ENABLED; const myCustomAction = myConstructCustomActionModel( customActionId, actionName, actionTrigger, actionStatus ); const response = await embeddedDashboard.addVisualActions( SheetId, VisualId, [myCustomAction] ); if (!response.success) { console.log("Adding visual action failed", response.errorCode); } } catch (error) { console.log("Adding visual action failed", error); } }; const parseDatapoint = (visualId, datapoint) => { datapoint.Columns.forEach((Column, index) => { // FIELD | METRIC const columnType = Object.keys(Column)[0]; // STRING | DATE | INTEGER | DECIMAL const valueType = Object.keys(Column[columnType])[0]; const { Column: columnMetadata } = Column[columnType][valueType]; const value = datapoint.RawValues[index][valueType]; const formattedValue = datapoint.FormattedValues[index]; console.log( `Column: ${columnMetadata.ColumnName} has a raw value of ${value} and formatted value of ${formattedValue.Value} for visual: ${visualId}` ); }); }; // This function is used to start a custom workflow after the end user selects a datapoint const myCustomDatapointCallbackWorkflow = (callbackData) => { const { VisualId, Datapoints } = callbackData; parseDatapoint(VisualId, Datapoints); }; // EMBEDDING THE DASHBOARD const main = async () => { // 1. Get embed url let url; try { url = await myGetEmbedUrl(MY_DASHBOARD_ID); } catch (error) { console.log("Obtaining an embed url failed"); } if (!url) { return; } // 2. Create embedding context const embeddingContext = await createEmbeddingContext(); // 3. Embed the dashboard const embeddedDashboard = await embeddingContext.embedDashboard( { url, container: MY_DASHBOARD_CONTAINER, width: "1200px", height: "300px", resizeHeightOnSizeChangedEvent: true, }, { onMessage: async (messageEvent) => { const { eventName, message } = messageEvent; switch (eventName) { case "CONTENT_LOADED": { await myAddVisualActionOnFirstVisualOfFirstSheet(embeddedDashboard); break; } case "CALLBACK_OPERATION_INVOKED": { myCustomDatapointCallbackWorkflow(message); break; } } }, } ); }; main().catch(console.error);
También puede configurar el ejemplo anterior para que inicie la devolución de llamada a los puntos de datos cuando el usuario abra el menú contextual. Para hacer esto con el ejemplo anterior, defina el valor de actionTrigger
en ActionTrigger.DATA_POINT_MENU
.
Una vez registrada la devolución de llamada a un punto de datos, se aplica a la mayoría de los puntos de datos de los elementos visuales especificados. Las devoluciones de llamadas no se aplican a los totales ni a los subtotales de los elementos visuales. Cuando un lector interactúa con un punto de datos, se CALLBACK_OPERATION_INVOKED
envía un mensaje a la incrustación. QuickSight SDK El controlador onMessage
captura este mensaje. El mensaje contiene los valores sin procesar y mostrar de toda la fila de datos asociada al punto de datos seleccionado. También contiene los metadatos de todas las columnas del elemento visual en la que se encuentra el punto de datos. A continuación se muestra un ejemplo de un mensaje CALLBACK_OPERATION_INVOKED
.
{ CustomActionId: "custom_action_id", DashboardId: "dashboard_id", SheetId: "sheet_id", VisualId: "visual_id", DataPoints: [ { RawValues: [ { String: "Texas" // 1st raw value in row }, { Integer: 1000 // 2nd raw value in row } ], FormattedValues: [ {Value: "Texas"}, // 1st formatted value in row {Value: "1,000"} // 2nd formatted value in row ], Columns: [ { // 1st column metadata Dimension: { String: { Column: { ColumnName: "State", DatsetIdentifier: "..." } } } }, { // 2nd column metadata Measure: { Integer: { Column: { ColumnName: "Cancelled", DatsetIdentifier: "..." }, AggregationFunction: { SimpleNumericalAggregation: "SUM" } } } } ] } ] }