1. ก่อนเริ่มต้น
Codelab นี้จะแนะนําคุณในการผสานรวมแดชบอร์ด Looker ที่ฝังไว้กับแชทที่ขับเคลื่อนด้วย Conversational Analytics เพื่อสร้างประสบการณ์การใช้งานข้อมูลแบบครบวงจรที่ขับเคลื่อนด้วยภาษาธรรมชาติ หากต้องการรับมูลค่าสูงสุด คุณควรคุ้นเคยกับการฝัง Looker, Conversational Analytics, JavaScript และ React
สิ่งที่คุณจะได้เรียนรู้
หลังจากทำตาม Codelab นี้ คุณจะได้เรียนรู้สิ่งต่อไปนี้
- วิธีตั้งค่าแอปพลิเคชันอ้างอิงการฝัง Looker ในเครื่อง
- วิธีสร้างคอมโพเนนต์แชท React ด้วยไลบรารี Looker Components
- วิธีส่งตัวกรองของแดชบอร์ดที่ฝังเป็นบริบทไปยัง Conversational Analytics
- วิธีเปิดใช้แชทที่ขับเคลื่อนโดย Conversational Analytics เพื่อควบคุมตัวกรองของแดชบอร์ดที่ฝัง
สิ่งที่คุณต้องมี
คุณต้องมีสิ่งต่อไปนี้จึงจะทำ Codelab นี้ให้เสร็จสมบูรณ์ได้
- อินสแตนซ์ Looker ที่ติดตั้ง ASC Demographic Data Looker Block และเปิดใช้ SSO Embedding
- การเข้าถึง API และนักพัฒนาแอปในอินสแตนซ์ Looker
- สภาพแวดล้อมในเครื่องที่ติดตั้ง Node v18, yarn, Git และ gcloud
- โปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่มีการตั้งค่าบทบาท IAM เหล่านี้สำหรับบัญชีผู้ใช้ของคุณ
roles/bigquery.dataViewerผู้ดูข้อมูล BigQueryroles/bigquery.userผู้ใช้ BigQueryroles/looker.instanceUserผู้ใช้ในอินสแตนซ์ Looker
2. ตั้งค่า Conversational Analytics
มาตั้งค่าเอเจนต์ข้อมูล Conversational Analytics ที่แชทของแดชบอร์ดที่ฝังไว้จะใช้เพื่อตอบคำถามในภาษาง่ายๆ กัน
ตรวจสอบสิทธิ์ด้วย gcloud
- ตรวจสอบสิทธิ์ด้วยบัญชีผู้ใช้ในสภาพแวดล้อมภายในโดยทำดังนี้
gcloud auth login
- ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) และโปรเจ็กต์การเรียกเก็บเงินใน gcloud โดยทำดังนี้
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
เปิดใช้ Conversational Analytics API
- เปิดใช้ API ของโปรเจ็กต์ที่อยู่ในระบบคลาวด์ โปรดแทนที่
YOUR_PROJECT_IDด้วยรหัสโปรเจ็กต์ Google Cloud ของคุณ
gcloud services enable geminidataanalytics.googleapis.com bigquery.googleapis.com cloudaicompanion.googleapis.com --project=YOUR_PROJECT_ID
สร้าง Data Agent
- เปิด Google Colab
- ใน Google Colab ให้โหลดสมุดบันทึกนี้จากที่เก็บข้อมูลอ้างอิงการฝัง Looker
- เรียกใช้ขั้นตอนทั้งหมดใน Notebook คุณจะต้องใช้รหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ และ URI ของอินสแตนซ์ Looker ที่มีเครื่องหมายทับปิดท้าย เช่น
"https://my.looker.app/"คุณควรเห็นผลลัพธ์ที่สำเร็จที่ส่วนท้ายของ Notebook
ตอนนี้คุณมีเอเจนต์ข้อมูล Conversational Analytics พร้อมใช้งานและพร้อมรับข้อความแชท ค้นหา Looker Explore ในแดชบอร์ด Looker ที่ฝังไว้ และแสดงผลลัพธ์และการแสดงข้อมูลผ่านภาพ
3. ตั้งค่าการอ้างอิงการฝัง Looker
มาตั้งค่าแอปพลิเคชันอ้างอิงการฝัง Looker ในสภาพแวดล้อมในเครื่องกัน เพื่อให้คุณลองใช้ตัวอย่างการผสานรวมแชท Conversational Analytics กับแดชบอร์ด Looker ที่ฝังไว้ได้
โคลนที่เก็บ
- โคลน github repo ลงในสภาพแวดล้อมในเครื่อง ดูตัวอย่างคำสั่งต่อไปนี้
git clone "https://github.com/looker-open-source/LookerEmbedReference.git"
- ไปที่ไดเรกทอรี
LookerEmbedReferenceที่คุณโคลนไว้
cd LookerEmbedReference
ตั้งค่าและเรียกใช้เซิร์ฟเวอร์ฟรอนท์เอนด์ในเครื่อง
- ติดตั้งการอ้างอิงในไดเรกทอรี
Frontend
cd Frontend
yarn install
- ตั้งค่าไฟล์
.envในรูทของไดเรกทอรีFrontendด้วยข้อมูลเข้าสู่ระบบYOUR_LOOKER_INSTANCE_URIควรเป็น URI ของอินสแตนซ์ Looker โดยไม่มีเครื่องหมายทับปิดท้าย เนื้อหาของไฟล์ควรมีลักษณะดังนี้
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
คุณใช้คำสั่งตัวอย่างต่อไปนี้เพื่อสร้างไฟล์ได้
cat > .env <<'EOF'
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
EOF
- เรียกใช้เซิร์ฟเวอร์สำหรับนักพัฒนาซอฟต์แวร์ฟรอนท์เอนด์
yarn run dev
ตั้งค่าและเรียกใช้เซิร์ฟเวอร์แบ็กเอนด์ในเครื่อง
- เปิด Shell, เทอร์มินัล, คอนโซล หรือแท็บใหม่ ไปที่ไดเรกทอรี
Backend-Nodeแล้วติดตั้งทรัพยากร Dependency อย่าลืมเปิดเชลล์/เทอร์มินัลก่อนหน้าที่มีเซิร์ฟเวอร์ส่วนหน้าทำงานอยู่
cd ../Backend-Node
yarn install
- สร้าง
.envในรูทของไดเรกทอรีBackend-Nodeโดยใช้ข้อมูลเข้าสู่ระบบ
YOUR_LOOKER_CLIENT_IDคือรหัสไคลเอ็นต์ Looker ของคุณYOUR_LOOKER_CLIENT_SECRETคือรหัสลับไคลเอ็นต์ของ LookerYOUR_LOOKER_EMBED_SECRETคือข้อมูลลับสำหรับการฝังYOUR_PROJECT_IDคือรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASHคือ URI ของอินสแตนซ์ Looker ที่มีเครื่องหมายทับปิดท้ายYOUR_LOOKER_INSTANCE_URIคือ URI อินสแตนซ์ Looker ของคุณที่ไม่มีเครื่องหมายทับปิดท้าย
เนื้อหาของไฟล์ควรมีลักษณะดังนี้
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
คุณใช้คำสั่งตัวอย่างต่อไปนี้เพื่อสร้างไฟล์ได้ แทนที่ข้อมูลเข้าสู่ระบบทั้งหมดตามนั้น
cat > .env <<'EOF'
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
EOF
- เรียกใช้เซิร์ฟเวอร์การพัฒนาแบ็กเอนด์
yarn run dev
ตอนนี้คุณมีเซิร์ฟเวอร์สำหรับนักพัฒนาซอฟต์แวร์ส่วนหน้าซึ่งกำลังทำงานและให้บริการ JavaScript สำหรับเว็บแอปพลิเคชันแล้ว นอกจากนี้ คุณยังมีเซิร์ฟเวอร์สำหรับนักพัฒนาซอฟต์แวร์แบ็กเอนด์ที่ทำงานเพื่อจัดการคำขอ URL ของ SSO Embed และคำขอพร็อกซีไปยังปลายทางของ Conversational Analytics
4. ลองใช้ตัวอย่าง
มาลองใช้เว็บแอปพลิเคชันที่ตอนนี้ทำงานในเครื่องในสภาพแวดล้อมของคุณกัน
เริ่มการสนทนา
- เปิดที่อยู่ https://localhost:3001 ในเบราว์เซอร์ที่คุณเลือก
- ไปที่หน้าแดชบอร์ดที่ฝังพร้อมแชทในการนำทางหลักด้านซ้าย
- เมื่อคอมโพเนนต์แชททางด้านขวาโหลดแล้ว ให้พิมพ์ว่า "สวัสดี คุณเป็นใคร"
- จดบันทึกคำตอบ
แอปพลิเคชันสร้างออบเจ็กต์การสนทนาของ Conversational Analytics โดยอัตโนมัติเพื่อติดตามประวัติการแชทและโหลดอินเทอร์เฟซแชท เมื่อคุณถามคำถามในอินเทอร์เฟซแชท ส่วนหน้าจะส่งข้อความของผู้ใช้ไปยังเซิร์ฟเวอร์แบ็กเอนด์ Node ในเครื่อง จากนั้นจะส่งต่อคำขอไปยังและคำตอบจากปลายทางแชทของ Conversational Analytics
กรองแดชบอร์ดที่ฝัง
ตอนนี้ให้ทำความคุ้นเคยกับแดชบอร์ดที่ฝังไว้และโต้ตอบกับแดชบอร์ด
- เลื่อนดูแดชบอร์ดที่ฝัง โปรดทราบว่ารายงานนี้ครอบคลุมข้อมูลสำมะโนประชากรในมิติข้อมูลและเมตริกต่างๆ
- คุณกรองแดชบอร์ดตามรัฐและเขตได้ที่ด้านซ้ายบนของแดชบอร์ด ตั้งค่าตัวกรองในตัวกรองแดชบอร์ดเป็น Texas จากนั้นเลือกปุ่มลูกศรวงกลมที่ไฮไลต์เป็นสีน้ำเงินใหม่เพื่อเรียกใช้แดชบอร์ดอีกครั้ง
- โปรดสังเกตว่าข้อมูลการแสดงข้อมูลผ่านภาพทั้งหมดได้รับการกรองในรัฐเท็กซัส
ถามคำถามโดยใช้บริบทของแดชบอร์ด
ตอนนี้เราได้กรองแดชบอร์ดแล้ว มาตรวจสอบข้อมูลในแดชบอร์ดกันต่อ
- ส่งคำสั่ง "บอกฉันหน่อยว่า 5 จังหวัดที่มีค่าเช่าต่ำสุดคือจังหวัดอะไร" ในแชท
- โปรดทราบว่าพรอมต์ของคุณไปยัง Conversational Analytics จะมีคำเพิ่มเติมว่า "กรองตามมิติข้อมูล 'state.state_name' ที่เป็นเท็กซัส"
- ตอนนี้โปรดสังเกตว่าคำค้นหาและการตอบกลับของข้อมูลจะได้รับการกรองในรัฐเท็กซัส
- นอกจากนี้ หลังจากที่ระบบแสดงผลลัพธ์ข้อมูลแล้ว ระบบได้เรียกใช้แดชบอร์ดที่ฝังอีกครั้งโดยตั้งค่าตัวกรองเขตเป็น 5 เขตที่กำหนดไว้ในข้อมูลผลลัพธ์
ตอนนี้คุณสามารถตรวจสอบข้อมูลสำมะโนประชากรต่อได้ โดยระบบจะกรอง 5 เทศมณฑลให้คุณอย่างสะดวก
ยินดีด้วย คุณได้ตั้งค่าและลองใช้ตัวอย่างแดชบอร์ดแบบฝังที่ผสานรวมกับแชทของ Conversational Analytics อย่างง่ายแล้ว
5. สร้างคอมโพเนนต์แชท
มาดูเบื้องหลังการทำงานกันโดยเริ่มจากสำรวจChatคอมโพเนนต์กันก่อน เราถือว่าคุณเข้าใจวิธีฝังแดชบอร์ด Looker ด้วย Looker Embed SDK
ใช้ไลบรารีคอมโพเนนต์ของ Looker
- เปิดไฟล์คอมโพเนนต์
Chatที่Frontend/src/components/EmbedChat/components/chat.jsใน IDE ที่คุณชื่นชอบหรือในเทอร์มินัล - คอมโพเนนต์
Chatสร้างขึ้นด้วยคอมโพเนนต์ React ของ UI ของ Looker มาตรฐานจากแพ็กเกจไลบรารีคอมโพเนนต์ของ Looker
ส่งข้อความถึงผู้ใช้
อินเทอร์เฟซแชทต้องส่งพรอมต์ของผู้ใช้ไปยัง Conversational Analytics
- ที่ด้านล่างของไฟล์คอมโพเนนต์
Chatคอมโพเนนต์Chatมีคอมโพเนนต์ย่อยChatInputซึ่งมีช่องป้อนข้อมูลสำหรับพรอมต์ของผู้ใช้ - เมื่อส่งแล้ว เมธอด
showAndSendUserPromptจะส่งพรอมต์ของผู้ใช้ไปยัง Conversational Analytics (ผ่านพร็อกซีแบ็กเอนด์ของ Node)
สตรีมและแสดงข้อความระบบ
หลังจากที่ผู้ใช้ส่งข้อความถึง Conversational Analytics แล้ว เราต้องแสดงคำตอบของ Conversational Analytics
- ที่ด้านล่างของไฟล์คอมโพเนนต์
Chatคอมโพเนนต์Chatจะมีคอมโพเนนต์ย่อยMessageListซึ่งมีตรรกะในการแสดงข้อความจาก Conversational Analytics ตามประเภทของข้อความ - เมธอด
streamAndParseResponseจะจัดการการตอบกลับโดยพยายามแยกวิเคราะห์ข้อความระบบที่ถูกต้องจากการตอบกลับ JSON ของการสตรีมอย่างต่อเนื่อง เมื่อใดก็ตามที่แยกวิเคราะห์ข้อความระบบที่ถูกต้องได้สำเร็จ ข้อความนั้นจะแสดงในMessageList
ตอนนี้คุณได้ดูวิธีที่คอมโพเนนต์ Chat ซึ่งสร้างขึ้นด้วยไลบรารีคอมโพเนนต์ Looker ส่งข้อความของผู้ใช้และสตรีมการตอบกลับกลับมาแล้ว
6. ส่งตัวกรองแดชบอร์ดไปยัง Conversational Analytics
ตอนนี้มาดูวิธีรวมตัวกรองแดชบอร์ดในพรอมต์ของผู้ใช้เพื่อให้ Conversational Analytics กรองคําค้นหาด้วยบริบทของแดชบอร์ด (ตัวกรอง) ได้
รอเหตุการณ์การเปลี่ยนแปลงตัวกรองของแดชบอร์ด
- เปิดไฟล์คอมโพเนนต์
EmbedChatที่Frontend/src/components/EmbedChat/EmbedChat.js,ซึ่งแสดงหน้าของแอปพลิเคชันที่มีแดชบอร์ดฝังตัวที่ผสานรวมกับคอมโพเนนต์Chatที่สำรวจก่อนหน้านี้ EmbedChatคอมโพเนนต์จะรับฟังเหตุการณ์"dashboard:filters:changed"จากแดชบอร์ดที่ฝังด้วยเมธอด.on(...)ของ Embed SDK จากนั้นคอมโพเนนต์จะจัดเก็บตัวกรองปัจจุบันไว้ในสถานะตัวกรอง
ส่งสถานะตัวกรองไปยัง Conversational Analytics
- คอมโพเนนต์
EmbedChatจะส่งตัวกรองไปยังคอมโพเนนต์Chatซึ่งจะแปลงตัวกรองแต่ละรายการเป็นสตริง เช่น"Filter on dimension '...' being ..."ในเมธอดshowAndSendUserPromptเพื่อต่อท้ายพรอมต์ของผู้ใช้
7. ควบคุมตัวกรองแดชบอร์ดจากแชท
สุดท้าย มาดูวิธีเปิดใช้คอมโพเนนต์ Chat เพื่อควบคุมตัวกรองของแดชบอร์ดที่ฝังกัน
กำหนดตัวกรองที่จะตั้งค่า
- เมธอด
streamAndParseResponseของคอมโพเนนต์Chatจะตรวจสอบข้อความระบบที่มีผลลัพธ์ข้อมูลจาก Conversational Analytics เสมอ - เมื่อใดก็ตามที่เมธอด
streamAndParseResponseแยกวิเคราะห์ข้อความของระบบที่มีผลลัพธ์ข้อมูล เมธอดจะตรวจสอบว่ามิติข้อมูลใดในข้อมูลตรงกับมิติข้อมูลในตัวกรอง - หากเป็นเช่นนั้น
streamAndParseResponseวิธีนี้จะแปลงคอลัมน์ข้อมูลเป็นตัวกรองแดชบอร์ด คราวนี้วิธีนี้จะใช้FIELD_FILTER_MAPอีกครั้ง แต่จะใช้ในทางกลับกัน โดยจะแปลงจากชื่อมิติข้อมูลเป็นคีย์ของตัวกรอง ค่าของตัวกรองคือค่าในคอลัมน์ข้อมูล
ส่งเหตุการณ์การเปลี่ยนแปลงตัวกรองไปยังแดชบอร์ดที่ฝัง
- เมื่อใช้ตัวกรองแดชบอร์ดที่ต้องการ
streamAndParseResponseจะเรียกใช้เมธอดsetFiltersของคอมโพเนนต์Chatด้วยตัวกรองที่ต้องการ - ซึ่งจะเรียกใช้เมธอด
setDashboardFiltersของคอมโพเนนต์EmbedChatซึ่งจะส่งเหตุการณ์ 2 รายการ ได้แก่"dashboard:filters:update"ที่มีตัวกรอง และ"dashboard:run"ไปยังแดชบอร์ดที่ฝังไว้โดยทันทีโดยใช้เมธอดsendของ Embed SDK - เหตุการณ์
"dashboard:filters:update"จะเปลี่ยนตัวกรองของแดชบอร์ดที่ฝังไว้ ส่วนเหตุการณ์"dashboard:run"จะเรียกใช้การค้นหาของแดชบอร์ดอีกครั้งด้วยตัวกรองใหม่
8. บทสรุปและสิ่งที่ควรทราบ
คุณได้ตั้งค่าตัวอย่างการทำงานของแดชบอร์ด Looker แบบฝังที่ผสานรวมกับแชท Conversational Analytics แล้ว คุณได้เรียนรู้วิธีเปิดใช้การสํารวจข้อมูลที่ขับเคลื่อนด้วยภาษาที่เป็นธรรมชาติด้วยแดชบอร์ด Looker ที่ฝังไว้และ Conversational Analytics
- คุณสร้างคอมโพเนนต์แชทด้วยคลังคอมโพเนนต์ของ Looker
- คุณส่งบริบทของแดชบอร์ด Looker ที่ฝังไว้ไปยัง Conversational Analytics เพื่อให้การสํารวจข้อมูลง่ายขึ้น
- คุณเปิดใช้ Conversational Analytics เพื่อควบคุมตัวกรองของแดชบอร์ดที่ฝังไว้เพื่อเพิ่มบริบทขณะสํารวจข้อมูล
ขั้นต่อไปคืออะไร
- ดูข้อมูลเพิ่มเติมเกี่ยวกับความสามารถของข้อมูลวิเคราะห์เชิงสนทนา
- อัปเดตแอปตัวอย่าง Looker Embed Reference ให้ทำงานร่วมกับแดชบอร์ด Looker ที่ฝังของคุณเอง
- ลองใช้ Use Case การฝังอื่นๆ ที่มีอยู่ในแอปตัวอย่าง Looker Embed Reference ที่ทำงานในเครื่องของคุณ