Merge branch 'master' into jmercer/complete-plugin-sync-fix
commit
ffef19f60b
|
|
@ -11,10 +11,11 @@ applyTo: "layouts/**/*.html"
|
|||
|
||||
When creating or modifying Hugo layouts and shortcodes:
|
||||
|
||||
1. Use Hugo template syntax and functions
|
||||
2. Follow existing patterns in `/layouts/shortcodes/`
|
||||
3. Test in [content/example.md](../../content/example.md)
|
||||
4. Document new shortcodes in [DOCS-SHORTCODES.md](../../DOCS-SHORTCODES.md)
|
||||
1. Use test-driven development using `/cypress/`
|
||||
2. Use Hugo template syntax and functions
|
||||
3. Follow existing patterns in `/layouts/shortcodes/`
|
||||
4. Test in [content/example.md](../../content/example.md)
|
||||
5. Document new shortcodes in [DOCS-SHORTCODES.md](../../DOCS-SHORTCODES.md)
|
||||
|
||||
## Shortcode Pattern
|
||||
|
||||
|
|
@ -30,9 +31,32 @@ When creating or modifying Hugo layouts and shortcodes:
|
|||
|
||||
## Testing
|
||||
|
||||
Add usage examples to `content/example.md` to verify:
|
||||
**IMPORTANT:** Use test-driven development with Cypress.
|
||||
|
||||
Add shortcode usage examples to `content/example.md` to verify:
|
||||
|
||||
- Rendering in browser
|
||||
- Hugo build succeeds
|
||||
- No console errors
|
||||
- JavaScript functionality works as expected (check browser console for errors)
|
||||
- Interactive elements behave correctly (click links, buttons, etc.)
|
||||
|
||||
### TDD Workflow
|
||||
|
||||
1. Add Cypress tests (high-level to start).
|
||||
2. Run tests and make sure they fail.
|
||||
3. Implement code changes
|
||||
4. Run tests and make sure they pass.
|
||||
5. Add and refine tests.
|
||||
6. Repeat.
|
||||
|
||||
### Manual Testing Workflow
|
||||
|
||||
1. Make changes to shortcode/layout files
|
||||
2. Wait for Hugo to rebuild (check terminal output)
|
||||
3. Get the server URL from the log
|
||||
4. Open browser DevTools console (F12)
|
||||
5. Test the functionality and check for JavaScript errors
|
||||
6. Verify the feature works as intended before marking complete
|
||||
|
||||
See [DOCS-SHORTCODES.md](../../DOCS-SHORTCODES.md) for complete shortcode documentation.
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@ call_lefthook()
|
|||
then
|
||||
"$dir/node_modules/lefthook/bin/index.js" "$@"
|
||||
|
||||
elif go tool lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
go tool lefthook "$@"
|
||||
elif bundle exec lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
bundle exec lefthook "$@"
|
||||
|
|
@ -42,12 +45,21 @@ call_lefthook()
|
|||
elif pnpm lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
pnpm lefthook "$@"
|
||||
elif swift package plugin lefthook >/dev/null 2>&1
|
||||
elif swift package lefthook >/dev/null 2>&1
|
||||
then
|
||||
swift package --disable-sandbox plugin lefthook "$@"
|
||||
swift package --build-path .build/lefthook --disable-sandbox lefthook "$@"
|
||||
elif command -v mint >/dev/null 2>&1
|
||||
then
|
||||
mint run csjones/lefthook-plugin "$@"
|
||||
elif uv run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
uv run lefthook "$@"
|
||||
elif mise exec -- lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
mise exec -- lefthook "$@"
|
||||
elif devbox run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
devbox run lefthook "$@"
|
||||
else
|
||||
echo "Can't find lefthook in PATH"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@ call_lefthook()
|
|||
then
|
||||
"$dir/node_modules/lefthook/bin/index.js" "$@"
|
||||
|
||||
elif go tool lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
go tool lefthook "$@"
|
||||
elif bundle exec lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
bundle exec lefthook "$@"
|
||||
|
|
@ -42,12 +45,21 @@ call_lefthook()
|
|||
elif pnpm lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
pnpm lefthook "$@"
|
||||
elif swift package plugin lefthook >/dev/null 2>&1
|
||||
elif swift package lefthook >/dev/null 2>&1
|
||||
then
|
||||
swift package --disable-sandbox plugin lefthook "$@"
|
||||
swift package --build-path .build/lefthook --disable-sandbox lefthook "$@"
|
||||
elif command -v mint >/dev/null 2>&1
|
||||
then
|
||||
mint run csjones/lefthook-plugin "$@"
|
||||
elif uv run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
uv run lefthook "$@"
|
||||
elif mise exec -- lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
mise exec -- lefthook "$@"
|
||||
elif devbox run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
devbox run lefthook "$@"
|
||||
else
|
||||
echo "Can't find lefthook in PATH"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@ call_lefthook()
|
|||
then
|
||||
"$dir/node_modules/lefthook/bin/index.js" "$@"
|
||||
|
||||
elif go tool lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
go tool lefthook "$@"
|
||||
elif bundle exec lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
bundle exec lefthook "$@"
|
||||
|
|
@ -42,12 +45,21 @@ call_lefthook()
|
|||
elif pnpm lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
pnpm lefthook "$@"
|
||||
elif swift package plugin lefthook >/dev/null 2>&1
|
||||
elif swift package lefthook >/dev/null 2>&1
|
||||
then
|
||||
swift package --disable-sandbox plugin lefthook "$@"
|
||||
swift package --build-path .build/lefthook --disable-sandbox lefthook "$@"
|
||||
elif command -v mint >/dev/null 2>&1
|
||||
then
|
||||
mint run csjones/lefthook-plugin "$@"
|
||||
elif uv run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
uv run lefthook "$@"
|
||||
elif mise exec -- lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
mise exec -- lefthook "$@"
|
||||
elif devbox run lefthook -h >/dev/null 2>&1
|
||||
then
|
||||
devbox run lefthook "$@"
|
||||
else
|
||||
echo "Can't find lefthook in PATH"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,19 +1,117 @@
|
|||
import AskAI from './ask-ai.js';
|
||||
|
||||
function showTrigger(element) {
|
||||
// Remove the inline display: none style
|
||||
element.removeAttribute('style');
|
||||
/**
|
||||
* Global state for Ask AI initialization
|
||||
*/
|
||||
const state = {
|
||||
kapaInitialized: false,
|
||||
linksListenerInitialized: false,
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the Kapa widget
|
||||
*/
|
||||
function initializeKapa() {
|
||||
if (!state.kapaInitialized) {
|
||||
AskAI();
|
||||
state.kapaInitialized = true;
|
||||
|
||||
// Store in global namespace for debugging
|
||||
window.influxdatadocs = window.influxdatadocs || {};
|
||||
window.influxdatadocs.kapaInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the trigger button by removing inline display: none style
|
||||
* @param {HTMLElement} element - The trigger button element
|
||||
*/
|
||||
function showTrigger(element) {
|
||||
if (element) {
|
||||
element.removeAttribute('style');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Ask AI trigger button component
|
||||
* @param {Object} options - Component options
|
||||
* @param {HTMLElement} options.component - The trigger button element
|
||||
*/
|
||||
export default function AskAITrigger({ component }) {
|
||||
const kapaContainer = document.querySelector('#kapa-widget-container');
|
||||
|
||||
if (!component && !kapaContainer) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!kapaContainer) {
|
||||
// Initialize the chat widget
|
||||
AskAI({ onChatLoad: () => showTrigger(component) });
|
||||
state.kapaInitialized = true;
|
||||
window.influxdatadocs = window.influxdatadocs || {};
|
||||
window.influxdatadocs.kapaInitialized = true;
|
||||
} else {
|
||||
showTrigger(component);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle ask-ai-link clicks globally
|
||||
* This ensures ask-ai-link shortcodes work even without the trigger button
|
||||
*/
|
||||
function handleAskAILinks() {
|
||||
if (state.linksListenerInitialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
state.linksListenerInitialized = true;
|
||||
|
||||
// Store in global namespace for debugging
|
||||
window.influxdatadocs = window.influxdatadocs || {};
|
||||
window.influxdatadocs.askAILinksInitialized = true;
|
||||
|
||||
// Listen for clicks on ask-ai-link elements
|
||||
document.addEventListener(
|
||||
'click',
|
||||
(event) => {
|
||||
const link = event.target.closest('.ask-ai-open');
|
||||
if (!link) return;
|
||||
|
||||
const query = link.getAttribute('data-query');
|
||||
|
||||
// Initialize Kapa if not already done
|
||||
if (!state.kapaInitialized) {
|
||||
initializeKapa();
|
||||
|
||||
// Wait for Kapa to be ready, then open with query
|
||||
if (query && window.Kapa?.open) {
|
||||
// Give Kapa a moment to initialize
|
||||
setTimeout(() => {
|
||||
if (window.Kapa?.open) {
|
||||
window.Kapa.open({
|
||||
mode: 'ai',
|
||||
query: query,
|
||||
});
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
} else {
|
||||
// Kapa is already initialized - open with query if provided
|
||||
if (query && window.Kapa?.open) {
|
||||
window.Kapa.open({
|
||||
mode: 'ai',
|
||||
query: query,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
{ passive: true }
|
||||
);
|
||||
}
|
||||
|
||||
// Initialize ask-ai-link handling when DOM is ready
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', handleAskAILinks);
|
||||
} else {
|
||||
handleAskAILinks();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
import { productData } from './page-context.js';
|
||||
|
||||
function setUser(userid, email) {
|
||||
const NAMESPACE = 'kapaSettings';
|
||||
|
||||
// Set the user ID and email in the global settings namespace.
|
||||
// The chat widget will use this on subsequent chats to personalize the user's experience.
|
||||
window[NAMESPACE] = {
|
||||
user: {
|
||||
uniqueClientId: userid,
|
||||
email: email,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// Initialize the chat widget
|
||||
function initializeChat({ onChatLoad, chatAttributes }) {
|
||||
/* See https://docs.kapa.ai/integrations/website-widget/configuration for
|
||||
* available configuration options.
|
||||
* All values are strings.
|
||||
*/
|
||||
// If you make changes to data attributes here, you also need to
|
||||
// port the changes to the api-docs/template.hbs API reference template.
|
||||
const requiredAttributes = {
|
||||
websiteId: 'a02bca75-1dd3-411e-95c0-79ee1139be4d',
|
||||
projectName: 'InfluxDB',
|
||||
projectColor: '#020a47',
|
||||
projectLogo: '/img/influx-logo-cubo-white.png',
|
||||
};
|
||||
|
||||
const optionalAttributes = {
|
||||
modalDisclaimer:
|
||||
'This AI can access [documentation for InfluxDB, clients, and related tools](https://docs.influxdata.com). Information you submit is used in accordance with our [Privacy Policy](https://www.influxdata.com/legal/privacy-policy/).',
|
||||
modalExampleQuestions:
|
||||
'Use Python to write data to InfluxDB 3,How do I query using SQL?,How do I use MQTT with Telegraf?',
|
||||
buttonHide: 'true',
|
||||
exampleQuestionButtonWidth: 'auto',
|
||||
modalOpenOnCommandK: 'true',
|
||||
modalExampleQuestionsColSpan: '8',
|
||||
modalFullScreenOnMobile: 'true',
|
||||
modalHeaderPadding: '.5rem',
|
||||
modalInnerPositionRight: '0',
|
||||
modalInnerPositionLeft: '',
|
||||
modalLockScroll: 'false',
|
||||
modalOverrideOpenClassAskAi: 'ask-ai-open',
|
||||
modalSize: '640px',
|
||||
modalWithOverlay: 'false',
|
||||
modalYOffset: '10vh',
|
||||
userAnalyticsFingerprintEnabled: 'true',
|
||||
fontFamily: 'Proxima Nova, sans-serif',
|
||||
modalHeaderBgColor: 'linear-gradient(90deg, #d30971 0%, #9b2aff 100%)',
|
||||
modalHeaderBorderBottom: 'none',
|
||||
modalTitleColor: '#fff',
|
||||
modalTitleFontSize: '1.25rem',
|
||||
};
|
||||
|
||||
const scriptUrl = 'https://widget.kapa.ai/kapa-widget.bundle.js';
|
||||
const script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = scriptUrl;
|
||||
script.onload = function () {
|
||||
onChatLoad();
|
||||
window.influxdatadocs.AskAI = AskAI;
|
||||
};
|
||||
script.onerror = function () {
|
||||
console.error('Error loading AI chat widget script');
|
||||
};
|
||||
|
||||
const dataset = {
|
||||
...requiredAttributes,
|
||||
...optionalAttributes,
|
||||
...chatAttributes,
|
||||
};
|
||||
Object.keys(dataset).forEach((key) => {
|
||||
// Assign dataset attributes from the object
|
||||
script.dataset[key] = dataset[key];
|
||||
});
|
||||
|
||||
// Check for an existing script element to remove
|
||||
const oldScript = document.querySelector(`script[src="${scriptUrl}"]`);
|
||||
if (oldScript) {
|
||||
oldScript.remove();
|
||||
}
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
|
||||
function getProductExampleQuestions() {
|
||||
const questions = productData?.product?.ai_sample_questions;
|
||||
return questions?.join(',') || '';
|
||||
}
|
||||
|
||||
/**
|
||||
* chatParams: specify custom (for example, page-specific) attribute values for the chat, pass the dataset key-values (collected in ...chatParams). See https://docs.kapa.ai/integrations/website-widget/configuration for available configuration options.
|
||||
* onChatLoad: function to call when the chat widget has loaded
|
||||
* userid: optional, a unique user ID for the user (not currently used for public docs)
|
||||
*/
|
||||
export default function AskAI({ userid, email, onChatLoad, ...chatParams }) {
|
||||
const modalExampleQuestions = getProductExampleQuestions();
|
||||
const chatAttributes = {
|
||||
...(modalExampleQuestions && { modalExampleQuestions }),
|
||||
...chatParams,
|
||||
};
|
||||
initializeChat({ onChatLoad, chatAttributes });
|
||||
|
||||
if (userid) {
|
||||
setUser(userid, email);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,263 @@
|
|||
import { productData, version } from './page-context.js';
|
||||
|
||||
// Type definitions for Kapa.ai widget
|
||||
declare global {
|
||||
interface Window {
|
||||
Kapa: KapaFunction;
|
||||
influxdatadocs: {
|
||||
AskAI: typeof AskAI;
|
||||
};
|
||||
kapaSettings?: {
|
||||
user: {
|
||||
uniqueClientId: string;
|
||||
email?: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
type KapaFunction = (command: string, options?: unknown) => void;
|
||||
|
||||
// Preinitialize Kapa widget to queue commands before script loads
|
||||
(function () {
|
||||
const k = window.Kapa;
|
||||
if (!k) {
|
||||
/* eslint-disable no-unused-vars */
|
||||
interface KapaQueue {
|
||||
(...args: unknown[]): void;
|
||||
q?: unknown[][];
|
||||
c?: (args: unknown[]) => void;
|
||||
}
|
||||
/* eslint-enable no-unused-vars */
|
||||
const i = function (...args: unknown[]) {
|
||||
if (i.c) {
|
||||
i.c(args);
|
||||
}
|
||||
} as KapaQueue;
|
||||
i.q = [];
|
||||
i.c = function (args: unknown[]) {
|
||||
if (i.q) {
|
||||
i.q.push(args);
|
||||
}
|
||||
};
|
||||
window.Kapa = i as unknown as KapaFunction;
|
||||
}
|
||||
})();
|
||||
|
||||
interface ChatAttributes extends Record<string, string | undefined> {
|
||||
modalExampleQuestions?: string;
|
||||
modalAskAiInputPlaceholder?: string;
|
||||
modalDisclaimer?: string;
|
||||
sourceGroupIdsInclude?: string;
|
||||
}
|
||||
|
||||
interface InitializeChatParams {
|
||||
onChatLoad: () => void;
|
||||
chatAttributes: ChatAttributes;
|
||||
}
|
||||
|
||||
interface AskAIParams {
|
||||
userid?: string;
|
||||
email?: string;
|
||||
onChatLoad?: () => void;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
function setUser(userid: string, email?: string): void {
|
||||
const NAMESPACE = 'kapaSettings';
|
||||
|
||||
// Set the user ID and email in the global settings namespace.
|
||||
// The chat widget will use this on subsequent chats to personalize
|
||||
// the user's experience.
|
||||
window[NAMESPACE] = {
|
||||
user: {
|
||||
uniqueClientId: userid,
|
||||
...(email && { email }),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// Initialize the chat widget
|
||||
function initializeChat({
|
||||
onChatLoad,
|
||||
chatAttributes,
|
||||
}: InitializeChatParams): void {
|
||||
/* See https://docs.kapa.ai/integrations/website-widget/configuration for
|
||||
* available configuration options.
|
||||
* All values are strings.
|
||||
*/
|
||||
// If you make changes to data attributes here, you also need to
|
||||
// port the changes to the api-docs/template.hbs API reference template.
|
||||
const requiredAttributes = {
|
||||
websiteId: 'a02bca75-1dd3-411e-95c0-79ee1139be4d',
|
||||
projectName: 'InfluxDB',
|
||||
projectColor: '#020a47',
|
||||
projectLogo: '/img/influx-logo-cubo-white.png',
|
||||
};
|
||||
|
||||
const optionalAttributes = {
|
||||
modalDisclaimer:
|
||||
chatAttributes.modalDisclaimer ||
|
||||
'This AI can access [documentation for InfluxDB, clients, and related tools](https://docs.influxdata.com). Information you submit is used in accordance with our [Privacy Policy](https://www.influxdata.com/legal/privacy-policy/).',
|
||||
modalExampleQuestions:
|
||||
'Use Python to write data to InfluxDB 3,How do I query using SQL?,How do I use MQTT with Telegraf?',
|
||||
buttonHide: 'true',
|
||||
exampleQuestionButtonWidth: 'auto',
|
||||
modalOpenOnCommandK: 'true',
|
||||
modalExampleQuestionsColSpan: '8',
|
||||
modalFullScreenOnMobile: 'true',
|
||||
modalHeaderPadding: '.5rem',
|
||||
modalInnerPositionRight: '0',
|
||||
modalInnerPositionLeft: '',
|
||||
modalLockScroll: 'false',
|
||||
modalOverrideOpenClassAskAi: 'ask-ai-open',
|
||||
modalSize: '640px',
|
||||
modalWithOverlay: 'false',
|
||||
modalYOffset: '10vh',
|
||||
userAnalyticsFingerprintEnabled: 'true',
|
||||
fontFamily: 'Proxima Nova, sans-serif',
|
||||
modalHeaderBgColor: 'linear-gradient(90deg, #d30971 0%, #9b2aff 100%)',
|
||||
modalHeaderBorderBottom: 'none',
|
||||
modalTitleColor: '#fff',
|
||||
modalTitleFontSize: '1.25rem',
|
||||
};
|
||||
|
||||
const scriptUrl = 'https://widget.kapa.ai/kapa-widget.bundle.js';
|
||||
const script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = scriptUrl;
|
||||
script.onload = function () {
|
||||
onChatLoad();
|
||||
window.influxdatadocs.AskAI = AskAI;
|
||||
};
|
||||
script.onerror = function () {
|
||||
console.error('Error loading AI chat widget script');
|
||||
};
|
||||
|
||||
const dataset = {
|
||||
...requiredAttributes,
|
||||
...optionalAttributes,
|
||||
...chatAttributes,
|
||||
};
|
||||
Object.keys(dataset).forEach((key) => {
|
||||
// Assign dataset attributes from the object
|
||||
const value = dataset[key as keyof typeof dataset];
|
||||
if (value !== undefined) {
|
||||
script.dataset[key] = value;
|
||||
}
|
||||
});
|
||||
|
||||
// Check for an existing script element to remove
|
||||
const oldScript = document.querySelector(`script[src="${scriptUrl}"]`);
|
||||
if (oldScript) {
|
||||
oldScript.remove();
|
||||
}
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
|
||||
function getVersionSpecificConfig(configKey: string): unknown {
|
||||
// Try version-specific config first (e.g., ai_sample_questions__v1)
|
||||
if (version && version !== 'n/a') {
|
||||
const versionKey = `${configKey}__v${version}`;
|
||||
const versionConfig = productData?.product?.[versionKey];
|
||||
if (versionConfig) {
|
||||
return versionConfig;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to default config
|
||||
return productData?.product?.[configKey];
|
||||
}
|
||||
|
||||
function getProductExampleQuestions(): string {
|
||||
const questions = getVersionSpecificConfig('ai_sample_questions') as
|
||||
| string[]
|
||||
| undefined;
|
||||
if (!questions || questions.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return questions.join(',');
|
||||
}
|
||||
|
||||
function getProductSourceGroupIds(): string {
|
||||
const sourceGroupIds = getVersionSpecificConfig('ai_source_group_ids') as
|
||||
| string
|
||||
| undefined;
|
||||
return sourceGroupIds || '';
|
||||
}
|
||||
|
||||
function getProductInputPlaceholder(): string {
|
||||
const placeholder = getVersionSpecificConfig('ai_input_placeholder') as
|
||||
| string
|
||||
| undefined;
|
||||
|
||||
// Return product-specific placeholder or default
|
||||
return (
|
||||
placeholder ||
|
||||
'Ask questions about InfluxDB. Specify your product and version ' +
|
||||
'for better results'
|
||||
);
|
||||
}
|
||||
|
||||
function getProductDisclaimer(): string {
|
||||
// Disabled: Version-specific "Viewing documentation for..." text
|
||||
// const versionNote =
|
||||
// version && version !== 'n/a' && productData?.product?.name
|
||||
// ? `**Viewing documentation for ${productData.product.name}**\n\n`
|
||||
// : '';
|
||||
|
||||
// Check for product-specific custom disclaimer note
|
||||
const customNote = getVersionSpecificConfig('ai_disclaimer_note') as
|
||||
| string
|
||||
| undefined;
|
||||
const noteContent = customNote ? `${customNote}\n\n` : '';
|
||||
|
||||
// Base disclaimer with privacy policy link
|
||||
const baseDisclaimer =
|
||||
'This AI can access [documentation for InfluxDB, clients, and related tools](https://docs.influxdata.com). Information you submit is used in accordance with our [Privacy Policy](https://www.influxdata.com/legal/privacy-policy/).';
|
||||
|
||||
return `${noteContent}${baseDisclaimer}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the Ask AI chat widget with version-aware source filtering
|
||||
*
|
||||
* @param params - Configuration parameters
|
||||
* @param params.userid - Optional unique user ID
|
||||
* @param params.email - Optional user email
|
||||
* @param params.onChatLoad - Optional callback when chat widget loads
|
||||
* @param params.chatParams - Additional Kapa widget configuration attributes
|
||||
*/
|
||||
export default function AskAI({
|
||||
userid,
|
||||
email,
|
||||
onChatLoad,
|
||||
...chatParams
|
||||
}: AskAIParams): void {
|
||||
const modalExampleQuestions = getProductExampleQuestions();
|
||||
const modalAskAiInputPlaceholder = getProductInputPlaceholder();
|
||||
const modalDisclaimer = getProductDisclaimer();
|
||||
const sourceGroupIds = getProductSourceGroupIds();
|
||||
const chatAttributes: ChatAttributes = {
|
||||
...(modalExampleQuestions && { modalExampleQuestions }),
|
||||
...(modalAskAiInputPlaceholder && { modalAskAiInputPlaceholder }),
|
||||
...(modalDisclaimer && { modalDisclaimer }),
|
||||
...(sourceGroupIds && { sourceGroupIdsInclude: sourceGroupIds }),
|
||||
...(chatParams as Record<string, string>),
|
||||
};
|
||||
|
||||
const wrappedOnChatLoad = (): void => {
|
||||
// Call original onChatLoad if provided
|
||||
if (onChatLoad) {
|
||||
onChatLoad();
|
||||
}
|
||||
};
|
||||
|
||||
initializeChat({ onChatLoad: wrappedOnChatLoad, chatAttributes });
|
||||
|
||||
if (userid) {
|
||||
setUser(userid, email);
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ function getCurrentProductData() {
|
|||
const mappings = [
|
||||
{
|
||||
pattern: /\/influxdb\/cloud\//,
|
||||
product: products.cloud,
|
||||
product: products.influxdb_cloud,
|
||||
urls: influxdbUrls.influxdb_cloud,
|
||||
},
|
||||
{
|
||||
|
|
@ -38,7 +38,12 @@ function getCurrentProductData() {
|
|||
urls: influxdbUrls.clustered,
|
||||
},
|
||||
{
|
||||
pattern: /\/enterprise_v1\//,
|
||||
pattern: /\/influxdb3\/explorer/,
|
||||
product: products.influxdb3_explorer,
|
||||
urls: influxdbUrls.core,
|
||||
},
|
||||
{
|
||||
pattern: /\/enterprise_influxdb\//,
|
||||
product: products.enterprise_influxdb,
|
||||
urls: influxdbUrls.oss,
|
||||
},
|
||||
|
|
@ -83,7 +88,7 @@ function getCurrentProductData() {
|
|||
}
|
||||
|
||||
// Return the page context
|
||||
// (cloud, serverless, oss/enterprise, dedicated, clustered, other)
|
||||
// (cloud, serverless, oss/enterprise, dedicated, clustered, explorer, other)
|
||||
function getContext() {
|
||||
if (/\/influxdb\/cloud\//.test(window.location.pathname)) {
|
||||
return 'cloud';
|
||||
|
|
@ -97,6 +102,8 @@ function getContext() {
|
|||
return 'dedicated';
|
||||
} else if (/\/influxdb3\/clustered/.test(window.location.pathname)) {
|
||||
return 'clustered';
|
||||
} else if (/\/influxdb3\/explorer/.test(window.location.pathname)) {
|
||||
return 'explorer';
|
||||
} else if (
|
||||
/\/(enterprise_|influxdb).*\/v[1-2]\//.test(window.location.pathname)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
title: Identify InfluxDB Enterprise v1 version
|
||||
description: Learn how to identify your InfluxDB Enterprise v1 version using command-line tools, HTTP endpoints, and other methods.
|
||||
menu:
|
||||
enterprise_influxdb_v1:
|
||||
name: Identify version
|
||||
parent: Administration
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /enterprise_influxdb/v1/install-and-deploy/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
---
|
||||
1447
content/example.md
1447
content/example.md
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Identify InfluxDB Cloud (TSM) version
|
||||
description: Learn how to identify your InfluxDB Cloud (TSM) instance through URL patterns, account settings, and HTTP headers.
|
||||
menu:
|
||||
influxdb_cloud:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB Cloud
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb/cloud/get-started/
|
||||
- /influxdb/cloud/admin/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
title: Identify InfluxDB OSS v1 version
|
||||
description: Learn how to identify your InfluxDB OSS v1 version using command-line tools, HTTP endpoints, and other methods.
|
||||
menu:
|
||||
influxdb_v1:
|
||||
name: Identify version
|
||||
parent: Administration
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb/v1/introduction/installation/
|
||||
alt_links:
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: Identify InfluxDB OSS v2 version
|
||||
description: Learn how to identify your InfluxDB OSS v2 version using command-line tools, the UI, and HTTP endpoints.
|
||||
menu:
|
||||
influxdb_v2:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb/v2/get-started/
|
||||
- /influxdb/v2/reference/faq/#administration-1
|
||||
- /influxdb/v2/reference/cli/influxd/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Identify InfluxDB Cloud Dedicated version
|
||||
description: Learn how to identify your InfluxDB Cloud Dedicated cluster through URL patterns, account settings, and HTTP headers.
|
||||
menu:
|
||||
influxdb3_cloud_dedicated:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb3/cloud-dedicated/get-started/
|
||||
- /influxdb3/cloud-dedicated/admin/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
title: Execute SQL queries with ODBC
|
||||
description: >
|
||||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from
|
||||
ODBC-compatible applications and programming languages.
|
||||
menu:
|
||||
influxdb3_cloud_dedicated:
|
||||
name: Use ODBC
|
||||
parent: Execute queries
|
||||
weight: 351
|
||||
influxdb3/cloud-dedicated/tags: [query, sql, odbc]
|
||||
metadata: [SQL]
|
||||
|
||||
related:
|
||||
- /influxdb3/cloud-dedicated/reference/sql/
|
||||
- /influxdb3/cloud-dedicated/query-data/
|
||||
source: /shared/influxdb3-query-guides/execute-queries/odbc.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-query-guides/execute-queries/odbc.md -->
|
||||
|
|
@ -10,10 +10,11 @@ menu:
|
|||
weight: 104
|
||||
influxdb3/cloud-dedicated/tags: [visualization, powerbi, sql]
|
||||
metadata: [SQL]
|
||||
aliases:
|
||||
- /influxdb3/cloud-dedicated/query-data/execute-queries/odbc/
|
||||
related:
|
||||
- https://learn.microsoft.com/en-us/power-bi/desktop/, Power BI documentation
|
||||
- /influxdb3/cloud-dedicated/query-data/sql/
|
||||
- /influxdb3/cloud-dedicated/query-data/execute-queries/odbc/
|
||||
source: /shared/influxdb3-visualize/powerbi.md
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Identify InfluxDB Cloud Serverless version
|
||||
description: Learn how to identify your InfluxDB Cloud Serverless instance through URL patterns, account settings, and HTTP headers.
|
||||
menu:
|
||||
influxdb3_cloud_serverless:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb3/cloud-serverless/get-started/
|
||||
- /influxdb3/cloud-serverless/admin/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
title: Execute SQL queries with ODBC
|
||||
description: >
|
||||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from
|
||||
ODBC-compatible applications and programming languages.
|
||||
menu:
|
||||
influxdb3_cloud_serverless:
|
||||
name: Use ODBC
|
||||
parent: Execute queries
|
||||
weight: 351
|
||||
influxdb3/cloud-serverless/tags: [query, sql, odbc]
|
||||
metadata: [SQL]
|
||||
related:
|
||||
- /influxdb3/cloud-serverless/reference/sql/
|
||||
- /influxdb3/cloud-serverless/query-data/
|
||||
source: /shared/influxdb3-query-guides/execute-queries/odbc.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-query-guides/execute-queries/odbc.md -->
|
||||
|
|
@ -10,11 +10,12 @@ menu:
|
|||
weight: 104
|
||||
influxdb3/cloud-serverless/tags: [visualization, powerbi, sql]
|
||||
metadata: [SQL]
|
||||
aliases:
|
||||
- /influxdb3/cloud-serverless/query-data/execute-queries/odbc/
|
||||
related:
|
||||
- https://learn.microsoft.com/en-us/power-bi/desktop/, Power BI documentation
|
||||
- /influxdb3/cloud-serverless/query-data/sql/
|
||||
- /influxdb3/cloud-serverless/query-data/execute-queries/odbc/
|
||||
source: /shared/influxdb3-visualize/powerbi.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: Identify InfluxDB Clustered version
|
||||
description: Learn how to identify your InfluxDB Clustered version using influxctl CLI and other methods.
|
||||
menu:
|
||||
influxdb3_clustered:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB Clustered
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb3/clustered/get-started/
|
||||
- /influxdb3/clustered/admin/
|
||||
- /influxdb3/clustered/reference/cli/influxctl/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
title: Execute SQL queries with ODBC
|
||||
description: >
|
||||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from
|
||||
ODBC-compatible applications and programming languages.
|
||||
menu:
|
||||
influxdb3_clustered:
|
||||
name: Use ODBC
|
||||
parent: Execute queries
|
||||
weight: 351
|
||||
influxdb3/clustered/tags: [query, sql, odbc]
|
||||
metadata: [SQL]
|
||||
related:
|
||||
- /influxdb3/clustered/reference/sql/
|
||||
- /influxdb3/clustered/query-data/
|
||||
source: /shared/influxdb3-query-guides/execute-queries/odbc.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-query-guides/execute-queries/odbc.md -->
|
||||
|
|
@ -10,11 +10,12 @@ menu:
|
|||
weight: 104
|
||||
influxdb3/clustered/tags: [visualization, powerbi, sql]
|
||||
metadata: [SQL]
|
||||
aliases:
|
||||
- /influxdb3/clustered/query-data/execute-queries/odbc/
|
||||
related:
|
||||
- https://learn.microsoft.com/en-us/power-bi/desktop/, Power BI documentation
|
||||
- /influxdb3/clustered/query-data/sql/
|
||||
- /influxdb3/clustered/query-data/execute-queries/odbc/
|
||||
source: /shared/influxdb3-visualize/powerbi.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: Identify InfluxDB 3 Core version
|
||||
description: Learn how to identify your InfluxDB 3 Core version using command-line tools, HTTP endpoints, and other methods.
|
||||
menu:
|
||||
influxdb3_core:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb3/core/get-started/
|
||||
- /influxdb3/core/admin/
|
||||
- /influxdb3/core/reference/cli/influxdb3/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
enterprise: /influxdb3/enterprise/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
title: Execute SQL queries with ODBC
|
||||
description: >
|
||||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from
|
||||
ODBC-compatible applications and programming languages.
|
||||
menu:
|
||||
influxdb3_core:
|
||||
name: Use ODBC
|
||||
parent: Execute queries
|
||||
weight: 351
|
||||
influxdb3/core/tags: [query, sql, odbc]
|
||||
metadata: [SQL]
|
||||
related:
|
||||
- /influxdb3/core/reference/sql/
|
||||
- /influxdb3/core/query-data/
|
||||
- /influxdb3/core/visualize-data/powerbi/
|
||||
source: /shared/influxdb3-query-guides/execute-queries/odbc.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-query-guides/execute-queries/odbc.md -->
|
||||
|
|
@ -10,11 +10,12 @@ menu:
|
|||
weight: 104
|
||||
influxdb3/core/tags: [visualization, powerbi, sql]
|
||||
metadata: [SQL]
|
||||
aliases:
|
||||
- /influxdb3/core/query-data/execute-queries/odbc/
|
||||
related:
|
||||
- https://learn.microsoft.com/en-us/power-bi/desktop/, Power BI documentation
|
||||
- /influxdb3/core/query-data/sql/
|
||||
- /influxdb3/core/query-data/execute-queries/odbc/
|
||||
source: /shared/influxdb3-visualize/powerbi.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
title: InfluxDB 3 Enterprise documentation
|
||||
description: >
|
||||
InfluxDB 3 Enterprise is a time series database built on InfluxDB 3 Core open source.
|
||||
It is designed to handle high write and query loads using a diskless architechture
|
||||
It is designed to handle high write and query loads using a diskless architecture
|
||||
that scales horizontally. Learn how to use and leverage InfluxDB in use cases such as
|
||||
monitoring metrics, IoT data, and events.
|
||||
menu:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: Identify InfluxDB 3 Enterprise version
|
||||
description: Learn how to identify your InfluxDB 3 Enterprise version using command-line tools, HTTP endpoints, and other methods.
|
||||
menu:
|
||||
influxdb3_enterprise:
|
||||
name: Identify version
|
||||
parent: Administer InfluxDB
|
||||
weight: 10
|
||||
source: /shared/identify-version.md
|
||||
related:
|
||||
- /influxdb3/enterprise/get-started/
|
||||
- /influxdb3/enterprise/admin/
|
||||
- /influxdb3/enterprise/reference/cli/influxdb3/
|
||||
alt_links:
|
||||
v1: /influxdb/v1/administration/identify-version/
|
||||
v2: /influxdb/v2/admin/identify-version/
|
||||
cloud: /influxdb/cloud/admin/identify-version/
|
||||
cloud-serverless: /influxdb3/cloud-serverless/admin/identify-version/
|
||||
cloud-dedicated: /influxdb3/cloud-dedicated/admin/identify-version/
|
||||
clustered: /influxdb3/clustered/admin/identify-version/
|
||||
core: /influxdb3/core/admin/identify-version/
|
||||
enterprise_influxdb_v1: /enterprise_influxdb/v1/administration/identify-version/
|
||||
---
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
title: Get started with InfluxDB 3 Enterprise
|
||||
description: >
|
||||
InfluxDB 3 Enterprise is a time series database built on InfluxDB 3 Core open source.
|
||||
It is designed to handle high write and query loads using a diskless architechture
|
||||
It is designed to handle high write and query loads using a diskless architecture
|
||||
that scales horizontally. Learn how to use and leverage InfluxDB in use cases such as
|
||||
monitoring metrics, IoT data, and events.
|
||||
menu:
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
title: Execute SQL queries with ODBC
|
||||
description: >
|
||||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from
|
||||
ODBC-compatible applications and programming languages.
|
||||
menu:
|
||||
influxdb3_enterprise:
|
||||
name: Use ODBC
|
||||
parent: Execute queries
|
||||
weight: 351
|
||||
influxdb3/enterprise/tags: [query, sql, odbc]
|
||||
metadata: [SQL]
|
||||
related:
|
||||
- /influxdb3/enterprise/reference/sql/
|
||||
- /influxdb3/enterprise/query-data/
|
||||
- /influxdb3/enterprise/visualize-data/powerbi/
|
||||
source: /shared/influxdb3-query-guides/execute-queries/odbc.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-query-guides/execute-queries/odbc.md -->
|
||||
|
|
@ -10,11 +10,12 @@ menu:
|
|||
weight: 104
|
||||
influxdb3/enterprise/tags: [visualization, powerbi, sql]
|
||||
metadata: [SQL]
|
||||
aliases:
|
||||
- /influxdb3/enterprise/query-data/execute-queries/odbc/
|
||||
related:
|
||||
- https://learn.microsoft.com/en-us/power-bi/desktop/, Power BI documentation
|
||||
- /influxdb3/enterprise/query-data/sql/
|
||||
- /influxdb3/enterprise/query-data/execute-queries/odbc/
|
||||
source: /shared/influxdb3-visualize/powerbi.md
|
||||
---
|
||||
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
<!-- //SOURCE content/shared/influxdb3-visualize/powerbi.md -->
|
||||
|
|
|
|||
|
|
@ -21,6 +21,21 @@ weight: 1
|
|||
|
||||
**InfluxData platform** is the leading modern [time series](/platform/faq/#what-is-time-series-data) platform, built for metrics and events.
|
||||
|
||||
> \[!Note]
|
||||
>
|
||||
> #### What's my InfluxDB version?
|
||||
>
|
||||
> With multiple InfluxDB deployment options available, identifying which one you're using is important for accessing the correct documentation and features.
|
||||
>
|
||||
> **[Identify your InfluxDB version](/platform/identify-version/)** using:
|
||||
>
|
||||
> - Interactive version detector
|
||||
> - URL pattern recognition
|
||||
> - Command-line tools
|
||||
> - HTTP API headers
|
||||
>
|
||||
> Or browse the product lineup below to find yours.
|
||||
|
||||
## InfluxDB 3
|
||||
|
||||
**InfluxDB 3** is InfluxDB’s next generation that unlocks series limitations present in the Time Structured Merge Tree (TSM) storage engine and allows infinite series cardinality without any impact on overall database performance. It also brings with it native SQL support and improved InfluxQL performance.
|
||||
|
|
@ -46,7 +61,8 @@ weight: 1
|
|||
|
||||
## InfluxDB 2
|
||||
|
||||
> [!Note]
|
||||
> \[!Note]
|
||||
>
|
||||
> #### New InfluxDB Cloud signups use InfluxDB 3
|
||||
>
|
||||
> New InfluxDB Cloud signups are for [InfluxDB Cloud Serverless, powered by the InfluxDB 3 storage engine](/influxdb3/cloud-serverless/).
|
||||
|
|
@ -55,11 +71,12 @@ weight: 1
|
|||
|
||||
The **InfluxDB 2 platform** consolidates InfluxDB, Chronograf, and Kapacitor from the **InfluxData 1.x platform** into a single packaged solution, with added features and flexibility:
|
||||
|
||||
- [InfluxDB OSS 2.x](/influxdb/v2/get-started/): open source platform solution in a single binary
|
||||
- [InfluxDB Cloud](/influxdb/cloud/get-started/) (**commercial offering**): hosted cloud solution
|
||||
- [Telegraf](#telegraf): collect data
|
||||
- [InfluxDB OSS 2.x](/influxdb/v2/get-started/): open source platform solution in a single binary
|
||||
- [InfluxDB Cloud](/influxdb/cloud/get-started/) (**commercial offering**): hosted cloud solution
|
||||
- [Telegraf](#telegraf): collect data
|
||||
|
||||
> [!Note]
|
||||
> \[!Note]
|
||||
>
|
||||
> #### Integrate InfluxDB 2.0 applications with InfluxDB Enterprise 1.8+
|
||||
>
|
||||
> Use [InfluxDB 2.0 API compatibility endpoints](/enterprise_influxdb/v1/tools/api/#influxdb-20-api-compatibility-endpoints) to integrate applications built on InfluxDB 2.0 or InfluxDB Cloud with InfluxDB Enterprise 1.8+:
|
||||
|
|
@ -71,16 +88,16 @@ The **InfluxDB 2 platform** consolidates InfluxDB, Chronograf, and Kapacitor fro
|
|||
|
||||
The **InfluxData 1.x platform** includes the following open source components ([TICK stack](#influxdata-1-x-tick-stack)):
|
||||
|
||||
- [Telegraf](#telegraf): collect data
|
||||
- [InfluxDB](#influxdb): store data
|
||||
- [Chronograf](#chronograf): visualize data
|
||||
- [Kapacitor](#kapacitor): process data and alerts
|
||||
- [Telegraf](#telegraf): collect data
|
||||
- [InfluxDB](#influxdb): store data
|
||||
- [Chronograf](#chronograf): visualize data
|
||||
- [Kapacitor](#kapacitor): process data and alerts
|
||||
|
||||
**InfluxData 1.x** also includes the following **commercial offerings**:
|
||||
|
||||
- [InfluxDB Enterprise](#influxdb-enterprise)
|
||||
- [Kapacitor Enterprise](#kapacitor-enterprise)
|
||||
- [InfluxCloud 1.x](https://help.influxcloud.net) (hosted cloud solution)
|
||||
- [InfluxDB Enterprise](#influxdb-enterprise)
|
||||
- [Kapacitor Enterprise](#kapacitor-enterprise)
|
||||
- [InfluxCloud 1.x](https://help.influxcloud.net) (hosted cloud solution)
|
||||
|
||||
## InfluxData 1.x TICK stack
|
||||
|
||||
|
|
@ -116,7 +133,7 @@ based on user-defined logic, and running ETL jobs.
|
|||
|
||||
InfluxDB Enterprise and Kapacitor Enterprise provide clustering, access control, and incremental backup functionality for production infrastructures at scale. You'll also receive direct support from the InfluxData support team.
|
||||
|
||||
> [!Note]
|
||||
> \[!Note]
|
||||
> InfluxDB Enterprise and Kapacitor Enterprise are compatible with open source versions of Telegraf and Chronograf.
|
||||
|
||||
### InfluxDB Enterprise
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
title: Identify your InfluxDB version
|
||||
description: >
|
||||
Learn how to identify which InfluxDB product and version you're using.
|
||||
menu:
|
||||
platform:
|
||||
name: Identify version
|
||||
weight: 102
|
||||
source: /shared/identify-version.md
|
||||
---
|
||||
|
|
@ -0,0 +1,432 @@
|
|||
Identifying which InfluxDB product and version you're using is essential for accessing the correct documentation, troubleshooting issues, and planning upgrades.
|
||||
|
||||
> \[!Note]
|
||||
> {{< influxdb-version-detector >}}
|
||||
|
||||
## Quick detection methods
|
||||
|
||||
{{% hide-in "core,enterprise,cloud-serverless,cloud-dedicated,clustered,v2,cloud,v1" %}}
|
||||
|
||||
### By URL pattern
|
||||
|
||||
If you access InfluxDB via a URL, the hostname often indicates which product you're using:
|
||||
|
||||
| URL Pattern | Product |
|
||||
| ------------------------------------------ | ------------------------- |
|
||||
| `*.influxdb.io` | InfluxDB Cloud Dedicated |
|
||||
| `us-east-1-1.aws.cloud2.influxdata.com` | InfluxDB Cloud Serverless |
|
||||
| `eu-central-1-1.aws.cloud2.influxdata.com` | InfluxDB Cloud Serverless |
|
||||
| `*.influxcloud.net` | InfluxDB Cloud 1 (legacy) |
|
||||
| Other `*.cloud2.influxdata.com` regions | InfluxDB Cloud (TSM) |
|
||||
|
||||
### By default port
|
||||
|
||||
Different InfluxDB products use different default ports:
|
||||
|
||||
- **Port 8181**: InfluxDB 3 (Core or Enterprise)
|
||||
- **Port 8086**: InfluxDB v1 or v2
|
||||
|
||||
### By HTTP headers
|
||||
|
||||
Check the `/ping` endpoint to examine HTTP response headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8086/ping
|
||||
```
|
||||
|
||||
The response headers reveal your InfluxDB product:
|
||||
|
||||
| Headers | Product |
|
||||
| ------------------------------------------------------------- | ---------------------- |
|
||||
| `x-influxdb-version: ^3.*`<br/>`x-influxdb-build: Core` | InfluxDB 3 Core |
|
||||
| `x-influxdb-version: ^3.*`<br/>`x-influxdb-build: Enterprise` | InfluxDB 3 Enterprise |
|
||||
| `x-influxdb-version: ^2.*`<br/>`x-influxdb-build: OSS` | InfluxDB OSS v2 |
|
||||
| `x-influxdb-version: ^1.*`<br/>`x-influxdb-build: OSS` | InfluxDB OSS v1 |
|
||||
| `x-influxdb-build: Enterprise`<br/>(with v1 version) | InfluxDB Enterprise v1 |
|
||||
|
||||
{{% /hide-in %}}
|
||||
|
||||
{{% show-in "core" %}}
|
||||
|
||||
### InfluxDB 3 Core detection
|
||||
|
||||
Check the version using the `influxdb3` command:
|
||||
|
||||
```bash
|
||||
influxdb3 --version
|
||||
```
|
||||
|
||||
Query the `/health` endpoint:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8181/health
|
||||
```
|
||||
|
||||
Check the `/ping` endpoint headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8181/ping
|
||||
```
|
||||
|
||||
Look for:
|
||||
|
||||
- `x-influxdb-version`: Version number (for example, `3.6.0`)
|
||||
- `x-influxdb-build`: `Core`
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "enterprise" %}}
|
||||
|
||||
### InfluxDB 3 Enterprise detection
|
||||
|
||||
Check the version using the `influxdb3` command:
|
||||
|
||||
```bash
|
||||
influxdb3 --version
|
||||
```
|
||||
|
||||
Query the `/health` endpoint:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8181/health
|
||||
```
|
||||
|
||||
Check the `/ping` endpoint headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8181/ping
|
||||
```
|
||||
|
||||
Look for:
|
||||
|
||||
- `x-influxdb-version`: Version number (for example, `3.6.0`)
|
||||
- `x-influxdb-build`: `Enterprise`
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "clustered" %}}
|
||||
|
||||
### InfluxDB Clustered detection
|
||||
|
||||
Use the `influxctl` CLI to check your cluster version:
|
||||
|
||||
```bash
|
||||
influxctl version
|
||||
```
|
||||
|
||||
To view cluster information:
|
||||
|
||||
```bash
|
||||
influxctl cluster list
|
||||
```
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-serverless" %}}
|
||||
|
||||
### InfluxDB Cloud Serverless detection
|
||||
|
||||
**InfluxDB Cloud Serverless** can be identified by:
|
||||
|
||||
**URL patterns**:
|
||||
|
||||
- `us-east-1-1.aws.cloud2.influxdata.com`
|
||||
- `eu-central-1-1.aws.cloud2.influxdata.com`
|
||||
|
||||
**Account settings**: Check your InfluxDB Cloud account dashboard for product and version details.
|
||||
|
||||
**HTTP headers**: API responses include version information in response headers.
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-dedicated" %}}
|
||||
|
||||
### InfluxDB Cloud Dedicated detection
|
||||
|
||||
**InfluxDB Cloud Dedicated** can be identified by:
|
||||
|
||||
**URL pattern**: `*.influxdb.io`
|
||||
|
||||
- Example: `cluster-id.a.influxdb.io`
|
||||
|
||||
**Account settings**: Check your InfluxDB Cloud Dedicated account dashboard for cluster and version details.
|
||||
|
||||
**HTTP headers**: API responses include version information in response headers.
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "v2" %}}
|
||||
|
||||
### InfluxDB OSS v2 detection
|
||||
|
||||
Check the version using `influxd`:
|
||||
|
||||
```bash
|
||||
influxd version
|
||||
```
|
||||
|
||||
Query the `/health` endpoint and extract the version:
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:8086/health | jq -r '.version'
|
||||
```
|
||||
|
||||
The InfluxDB UI displays the version:
|
||||
|
||||
- On the login page
|
||||
- In the right column of the main landing page
|
||||
- In the user menu dropdown
|
||||
|
||||
For more details, see [How can I identify my InfluxDB version?](/influxdb/v2/reference/faq/#administration-1)
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud" %}}
|
||||
|
||||
### InfluxDB Cloud (TSM) detection
|
||||
|
||||
**InfluxDB Cloud (TSM)** can be identified by:
|
||||
|
||||
**URL patterns** (regional cloud2.influxdata.com URLs, excluding Serverless regions):
|
||||
|
||||
- `us-west-2-1.aws.cloud2.influxdata.com`
|
||||
- `us-west-2-2.aws.cloud2.influxdata.com`
|
||||
- `us-east-1-2.aws.cloud2.influxdata.com` (note: different from Serverless)
|
||||
- `us-central1-1.gcp.cloud2.influxdata.com`
|
||||
- `westeurope-1.azure.cloud2.influxdata.com`
|
||||
- `eastus-1.azure.cloud2.influxdata.com`
|
||||
|
||||
**Account settings**: Check your InfluxDB Cloud account dashboard for product details.
|
||||
|
||||
**HTTP headers**: API responses include version information in response headers.
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "v1" %}}
|
||||
|
||||
### InfluxDB OSS v1 / Enterprise v1 detection
|
||||
|
||||
Check the version using `influxd`:
|
||||
|
||||
```bash
|
||||
influxd version
|
||||
```
|
||||
|
||||
Check the `/ping` endpoint headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8086/ping
|
||||
```
|
||||
|
||||
Look for the `x-influxdb-version` header (for example, `1.11.7`).
|
||||
|
||||
For Enterprise v1, the `x-influxdb-build` header will show `Enterprise`.
|
||||
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% hide-in "core,enterprise,cloud-serverless,cloud-dedicated,clustered,v2,cloud,v1" %}}
|
||||
|
||||
## Product-specific methods
|
||||
|
||||
### InfluxDB 3 Core and Enterprise
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Command line](#)
|
||||
[Health endpoint](#)
|
||||
[HTTP headers](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Check the version using the `influxdb3` command:
|
||||
|
||||
```bash
|
||||
influxdb3 --version
|
||||
```
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Query the `/health` endpoint:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8181/health
|
||||
```
|
||||
|
||||
The response includes version information and build details.
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Check the `/ping` endpoint headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8181/ping
|
||||
```
|
||||
|
||||
Look for:
|
||||
|
||||
- `x-influxdb-version`: Version number (for example, `3.6.0`)
|
||||
- `x-influxdb-build`: `Core` or `Enterprise`
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### InfluxDB Clustered
|
||||
|
||||
Use the `influxctl` CLI to check your cluster version:
|
||||
|
||||
```bash
|
||||
influxctl version
|
||||
```
|
||||
|
||||
To view cluster information:
|
||||
|
||||
```bash
|
||||
influxctl cluster list
|
||||
```
|
||||
|
||||
### InfluxDB OSS v2
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Command line](#)
|
||||
[Health API](#)
|
||||
[User interface](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Check the version using `influxd`:
|
||||
|
||||
```bash
|
||||
influxd version
|
||||
```
|
||||
|
||||
**Example output:**
|
||||
|
||||
```
|
||||
InfluxDB 2.7.12 (git: x0x000xx0x) build_date: 2024-MM-DDThh:mm:ssZ
|
||||
```
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Query the `/health` endpoint and extract the version:
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:8086/health | jq -r '.version'
|
||||
```
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
The InfluxDB UI displays the version:
|
||||
|
||||
- On the login page
|
||||
- In the right column of the main landing page
|
||||
- In the user menu dropdown
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
For more details, see [How can I identify my InfluxDB version?](/influxdb/v2/reference/faq/#administration-1)
|
||||
|
||||
### InfluxDB Cloud (Serverless, Dedicated, TSM)
|
||||
|
||||
For InfluxDB Cloud products, check the version information:
|
||||
|
||||
- **Account settings**: Version details appear in your account dashboard
|
||||
- **UI footer**: The version may be displayed at the bottom of the web interface
|
||||
- **HTTP headers**: API responses include version headers
|
||||
- **URL pattern**: See [By URL pattern](#by-url-pattern) above
|
||||
|
||||
### InfluxDB OSS v1 and Enterprise v1
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Command line](#)
|
||||
[HTTP API](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Check the version using `influxd`:
|
||||
|
||||
```bash
|
||||
influxd version
|
||||
```
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
Check the `/ping` endpoint headers:
|
||||
|
||||
```bash
|
||||
curl -i http://localhost:8086/ping
|
||||
```
|
||||
|
||||
Look for the `x-influxdb-version` header (for example, `1.11.7`).
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
{{% /hide-in %}}
|
||||
|
||||
{{% hide-in "core,enterprise,cloud-serverless,cloud-dedicated,clustered,v2,cloud,v1,enterprise-v1" %}}
|
||||
|
||||
## Understanding InfluxDB products
|
||||
|
||||
InfluxData offers multiple InfluxDB products to suit different use cases:
|
||||
|
||||
| Product | License | Hosting | Query Languages | Default Port |
|
||||
| ----------------------------- | --------- | ------------------------ | ------------------- | ------------ |
|
||||
| **InfluxDB 3 Core** | Free | Self-hosted | SQL, InfluxQL | 8181 |
|
||||
| **InfluxDB 3 Enterprise** | Paid | Self-hosted | SQL, InfluxQL | 8181 |
|
||||
| **InfluxDB Cloud Serverless** | Free/Paid | Cloud | SQL, InfluxQL, Flux | N/A |
|
||||
| **InfluxDB Cloud Dedicated** | Paid | Cloud | SQL, InfluxQL | N/A |
|
||||
| **InfluxDB Clustered** | Paid | Self-hosted (Kubernetes) | SQL, InfluxQL | Custom |
|
||||
| **InfluxDB OSS v2** | Free | Self-hosted | InfluxQL, Flux | 8086 |
|
||||
| **InfluxDB Cloud (TSM)** | Free/Paid | Cloud | InfluxQL, Flux | N/A |
|
||||
| **InfluxDB OSS v1** | Free | Self-hosted | InfluxQL | 8086 |
|
||||
| **InfluxDB Enterprise v1** | Paid | Self-hosted | InfluxQL, Flux | 8086 |
|
||||
| **InfluxDB Cloud 1** | Paid | Cloud | InfluxQL | N/A |
|
||||
|
||||
### Key characteristics
|
||||
|
||||
- **InfluxDB 3** products use SQL and InfluxQL, run on port 8181 (self-hosted), and provide improved performance and scalability
|
||||
- **InfluxDB v2** products use InfluxQL and Flux, run on port 8086 (self-hosted), and use a bucket-based data model
|
||||
- **InfluxDB v1** products use InfluxQL, run on port 8086 (self-hosted), and use a database-based data model
|
||||
|
||||
{{% /hide-in %}}
|
||||
|
||||
## Understanding InfluxDB products
|
||||
|
||||
For a complete comparison of InfluxDB versions and deployment options, see the [InfluxDB platform overview](/platform/).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Can't access your InfluxDB instance?
|
||||
|
||||
If you can't directly access your InfluxDB instance:
|
||||
|
||||
1. Use the [interactive version detector](#identify-your-influxdb-version) above or {{< ask-ai-link link-text="Ask InfluxData AI" query="Help determine my InfluxDB version based on licensing, hosting, server age, and API." >}}
|
||||
2. Answer questions about your setup:
|
||||
- License type (paid or free)
|
||||
- Hosting model (cloud or self-hosted)
|
||||
- Server age
|
||||
- Query language preferences
|
||||
3. Get product recommendations based on your answers
|
||||
|
||||
### Still not sure?
|
||||
|
||||
If you're still uncertain, see the [Support and feedback](#bug-reports-and-feedback) options.
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
Use InfluxQL (an SQL-like query language) to interact with InfluxDB, and query and analyze your times series data.
|
||||
Use InfluxQL (an SQL-like query language) to interact with InfluxDB, and API features analyze your times series data.
|
||||
|
||||
In InfluxDB 1.x, data is stored in [databases](/influxdb/v1/concepts/glossary/#database)
|
||||
and [retention policies](/influxdb/v1/concepts/glossary/#retention-policy-rp).
|
||||
|
|
@ -23,16 +22,16 @@ For complete InfluxQL reference documentation, see the
|
|||
## Verify buckets have a mapping
|
||||
|
||||
1. To verify the buckets you want to query are mapped to a database and retention policy, use the [`influx` CLI](/influxdb/version/reference/cli/influx/) or the [InfluxDB API](/influxdb/version/reference/api/).
|
||||
_For examples, see [List DBRP mappings](/influxdb/version/query-data/influxql/dbrp/#list-dbrp-mappings)._
|
||||
*For examples, see [List DBRP mappings](/influxdb/version/query-data/influxql/dbrp/#list-dbrp-mappings).*
|
||||
|
||||
2. If you **do not find a DBRP mapping for a bucket**, [create a new DBRP mapping](/influxdb/version/query-data/influxql/dbrp/#create-dbrp-mappings) to
|
||||
map the unmapped bucket.
|
||||
map the unmapped bucket.
|
||||
|
||||
## Create DBRP mappings for unmapped buckets
|
||||
|
||||
- Use the [`influx` CLI](/influxdb/version/reference/cli/influx/) or the [InfluxDB API](/influxdb/version/reference/api/)
|
||||
to manually create DBRP mappings for unmapped buckets.
|
||||
_For examples, see [Create DBRP mappings](/influxdb/version/query-data/influxql/dbrp/#create-dbrp-mappings)._
|
||||
to manually create DBRP mappings for unmapped buckets.
|
||||
*For examples, see [Create DBRP mappings](/influxdb/version/query-data/influxql/dbrp/#create-dbrp-mappings).*
|
||||
|
||||
## Query a mapped bucket with InfluxQL
|
||||
|
||||
|
|
@ -42,6 +41,7 @@ _For examples, see [Create DBRP mappings](/influxdb/version/query-data/influxql/
|
|||
[InfluxDB API](#)
|
||||
{{% /tabs %}}
|
||||
{{% tab-content %}}
|
||||
|
||||
<!---------------------------- BEGIN InfluxQL shell --------------------------->
|
||||
|
||||
The [`influx` CLI](/influxdb/version/reference/cli/influx/) provides an [InfluxQL shell](/influxdb/version/tools/influxql-shell/) where you can execute InfluxQL queries in an interactive Read-Eval-Print-Loop (REPL).
|
||||
|
|
@ -66,8 +66,10 @@ The [`influx` CLI](/influxdb/version/reference/cli/influx/) provides an [InfluxQ
|
|||
For more information, see how to [use the InfluxQL shell](/influxdb/version/tools/influxql-shell/). For more information about DBRP mappings, see [Manage DBRP mappings](/influxdb/version/query-data/influxql/dbrp/).
|
||||
|
||||
<!----------------------------- END InfluxQL shell ---------------------------->
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{% tab-content %}}
|
||||
|
||||
<!----------------------------- BEGIN InfluxDB API ---------------------------->
|
||||
|
||||
The [InfluxDB 1.x compatibility API](/influxdb/version/reference/api/influxdb-1x/) supports
|
||||
|
|
@ -77,10 +79,10 @@ all InfluxDB 1.x client libraries and integrations in InfluxDB {{< current-versi
|
|||
|
||||
- **Request method:** `GET`
|
||||
- **Headers:**
|
||||
- **Authorization:** _See [compatibility API authentication](/influxdb/version/reference/api/influxdb-1x/#authentication)_
|
||||
- **Authorization:** *See [compatibility API authentication](/influxdb/version/reference/api/influxdb-1x/#authentication)*
|
||||
- **Query parameters:**
|
||||
- **db**: 1.x database to query
|
||||
- **rp**: 1.x retention policy to query _(if no retention policy is specified, InfluxDB uses the default retention policy for the specified database)_
|
||||
- **rp**: 1.x retention policy to query *(if no retention policy is specified, InfluxDB uses the default retention policy for the specified database)*
|
||||
- **q**: URL-encoded InfluxQL query
|
||||
|
||||
{{% api/url-encode-note %}}
|
||||
|
|
@ -96,7 +98,9 @@ all InfluxDB 1.x client libraries and integrations in InfluxDB {{< current-versi
|
|||
2. (Optional) To return results as **CSV**, include the `Accept: application/csv` header.
|
||||
|
||||
For more information about DBRP mappings, see [Manage DBRP mappings](/influxdb/version/query-data/influxql/dbrp/).
|
||||
|
||||
<!------------------------------ END InfluxDB API ----------------------------->
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
|
|
@ -107,12 +111,13 @@ InfluxDB OSS 2.x supports the following InfluxQL statements and clauses. See sup
|
|||
{{< flex >}}
|
||||
{{< flex-content >}}
|
||||
{{% note %}}
|
||||
|
||||
##### Supported InfluxQL queries
|
||||
|
||||
- `DELETE`*
|
||||
- `DROP MEASUREMENT`*
|
||||
- `DELETE`\*
|
||||
- `DROP MEASUREMENT`\*
|
||||
- `EXPLAIN ANALYZE`
|
||||
- `SELECT` _(read-only)_
|
||||
- `SELECT` *(read-only)*
|
||||
- `SHOW DATABASES`
|
||||
- `SHOW SERIES`
|
||||
- `SHOW MEASUREMENTS`
|
||||
|
|
@ -133,11 +138,11 @@ InfluxDB OSS 2.x supports the following InfluxQL statements and clauses. See sup
|
|||
- `SELECT INTO`
|
||||
- `ALTER`
|
||||
- `CREATE`
|
||||
- `DROP` _(limited support)_
|
||||
- `DROP` *(limited support)*
|
||||
- `GRANT`
|
||||
- `KILL`
|
||||
- `REVOKE`
|
||||
- `SHOW SERIES CARDINALITY`
|
||||
{{% /warn %}}
|
||||
{{< /flex-content >}}
|
||||
{{< /flex >}}
|
||||
{{% /warn %}}
|
||||
{{< /flex-content >}}
|
||||
{{< /flex >}}
|
||||
|
|
|
|||
|
|
@ -1,533 +0,0 @@
|
|||
Use the Arrow Flight SQL ODBC driver to execute SQL queries against
|
||||
{{% product-name %}} from ODBC-compatible applications and programming languages.
|
||||
|
||||
ODBC (Open Database Connectivity) is a standard API for accessing database
|
||||
management systems. The Arrow Flight SQL ODBC driver enables ODBC-compatible
|
||||
applications to connect to {{% product-name %}} and query data using SQL.
|
||||
|
||||
- [Download and install the ODBC driver](#download-and-install-the-odbc-driver)
|
||||
- [Configure a data source](#configure-a-data-source)
|
||||
- [Connect and query from applications](#connect-and-query-from-applications)
|
||||
- [Use ODBC with programming languages](#use-odbc-with-programming-languages)
|
||||
|
||||
## Download and install the ODBC driver
|
||||
|
||||
{{% product-name %}} uses the Arrow Flight SQL ODBC driver to enable ODBC connectivity.
|
||||
|
||||
> [!Note]
|
||||
> For more information about the Arrow Flight SQL ODBC Driver, see the [Dremio documentation](https://docs.dremio.com/current/client-applications/drivers/arrow-flight-sql-odbc-driver/).
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Windows (PowerShell)](#)
|
||||
[Windows (Manual)](#)
|
||||
[macOS and Linux](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
Run the following PowerShell commands to download and install:
|
||||
|
||||
{{% code-placeholders "YOUR_USER" %}}
|
||||
```powershell
|
||||
# Set the driver path
|
||||
$driverPath = "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"
|
||||
|
||||
# Download the driver
|
||||
Invoke-WebRequest -Uri "https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi" `
|
||||
-OutFile $driverPath
|
||||
|
||||
# Mark as trusted
|
||||
Unblock-File $driverPath
|
||||
|
||||
# Install
|
||||
Start-Process msiexec.exe -Wait -ArgumentList "/i `"$driverPath`""
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
|
||||
Replace the following:
|
||||
|
||||
- {{% code-placeholder-key %}}`YOUR_USER`{{% /code-placeholder-key %}}: Your Windows username
|
||||
|
||||
#### Verify installation
|
||||
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
<a class="btn" href="https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi">Download the Arrow Flight SQL ODBC driver</a>
|
||||
|
||||
1. Run the downloaded `.msi` installer
|
||||
2. Follow the installation wizard using default settings
|
||||
3. Complete the installation
|
||||
|
||||
#### Verify installation
|
||||
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
Download from Dremio:
|
||||
|
||||
- [**macOS (Universal)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-universal.pkg)
|
||||
- [**Linux (x86_64)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz)
|
||||
|
||||
#### Install on macOS
|
||||
|
||||
1. Run the downloaded `.pkg` installer
|
||||
2. Follow the installation prompts
|
||||
3. Enter your administrator password when prompted
|
||||
4. Complete the installation
|
||||
|
||||
#### Install on Linux
|
||||
|
||||
1. Extract the downloaded archive:
|
||||
|
||||
```bash
|
||||
tar -xzf arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz
|
||||
```
|
||||
|
||||
2. Install the driver (installation location may vary by distribution):
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt/arrow-flight-sql-odbc
|
||||
sudo cp -r lib /opt/arrow-flight-sql-odbc/
|
||||
```
|
||||
|
||||
3. Configure the driver in `/etc/odbcinst.ini`:
|
||||
|
||||
```ini
|
||||
[Arrow Flight SQL ODBC Driver]
|
||||
Description = Arrow Flight SQL ODBC Driver
|
||||
Driver = /opt/arrow-flight-sql-odbc/lib/libarrow-odbc.so
|
||||
```
|
||||
|
||||
#### Verify installation
|
||||
|
||||
To verify the driver is installed correctly, run:
|
||||
|
||||
```bash
|
||||
odbcinst -q -d
|
||||
```
|
||||
|
||||
The output should include **Arrow Flight SQL**.
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
## Configure a data source
|
||||
|
||||
After installing the Arrow Flight SQL ODBC driver, configure a data source to
|
||||
connect to {{% product-name %}}.
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Windows](#)
|
||||
[macOS and Linux](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **System DSN** or **User DSN** tab
|
||||
3. Click **Add**
|
||||
4. Select **Arrow Flight SQL ODBC Driver** and click **Finish**
|
||||
5. Configure the connection:
|
||||
|
||||
- **Data Source Name**: Provide a descriptive name (for example, `InfluxDB3`)
|
||||
- **Host**: Your {{% product-name %}} host (for example, {{% show-in "cloud-serverless" %}}`us-west-2-1.aws.cloud2.influxdata.com`{{% /show-in %}}{{% show-in "enterprise,core" %}}`localhost`{{% /show-in %}}{{% show-in "cloud-dedicated" %}}`cluster-id.a.influxdb.io`{{% /show-in %}}{{% show-in "clustered" %}}`cluster-host.com`{{% /show-in %}})
|
||||
- **Port**: Your InfluxDB URL port {{% show-in "cloud-serverless,cloud-dedicated,clustered" %}}(for example, `443` (HTTPS){{% /show-in %}}{{% show-in "enterprise,core" %}}`8181` (default){{% /show-in %}})
|
||||
- **Database**: Your database name
|
||||
- **Auth Token**: Your {{% show-in "cloud-dedicated,clustered" %}}{{% token-link "database" %}}{{% /show-in %}}{{% show-in "cloud-serverless" %}}{{% token-link %}}{{% /show-in %}}{{% show-in "core,enterprise" %}}{{% token-link "admin" "database" %}}{{% /show-in %}}{{% show-in "cloud-dedicated,clustered,enterprise" %}} with query permissions for the target database{{% /show-in %}}
|
||||
- **Use Encryption**: Enable for HTTPS connections
|
||||
|
||||
6. Click **Test** to verify the connection
|
||||
7. Click **OK** to save
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
Create or edit `~/.odbc.ini` (user DSN) or `/etc/odbc.ini` (system DSN):
|
||||
|
||||
{{% show-in "enterprise,core" %}}
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = localhost
|
||||
Port = 8181
|
||||
Database = DATABASE_NAME
|
||||
AuthToken = DATABASE_TOKEN
|
||||
UseEncryption = 1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-serverless" %}}
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = us-west-2-1.aws.cloud2.influxdata.com
|
||||
Port = 443
|
||||
Database = DATABASE_NAME
|
||||
AuthToken = DATABASE_TOKEN
|
||||
UseEncryption = 1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-dedicated" %}}
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = cluster-id.a.influxdb.io
|
||||
Port = 443
|
||||
Database = DATABASE_NAME
|
||||
AuthToken = DATABASE_TOKEN
|
||||
UseEncryption = 1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "clustered" %}}
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = cluster-host.com
|
||||
Port = 443
|
||||
Database = DATABASE_NAME
|
||||
AuthToken = DATABASE_TOKEN
|
||||
UseEncryption = 1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
{{% /show-in %}}
|
||||
|
||||
Replace the following:
|
||||
|
||||
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: Your database name
|
||||
- {{% code-placeholder-key %}}`DATABASE_TOKEN`{{% /code-placeholder-key %}}: Your {{% token-link "database" %}}{{% show-in "enterprise" %}} with query permissions{{% /show-in %}}
|
||||
|
||||
Test the connection:
|
||||
|
||||
```bash
|
||||
isql -v InfluxDB3
|
||||
```
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
## Connect and query from applications
|
||||
|
||||
After configuring a data source, connect from ODBC-compatible applications:
|
||||
|
||||
### Power BI
|
||||
|
||||
See [Use Power BI to visualize data](/influxdb3/version/visualize-data/powerbi/).
|
||||
|
||||
### Tableau
|
||||
|
||||
See [Use Tableau to visualize data](/influxdb3/version/visualize-data/tableau/).
|
||||
|
||||
### Excel
|
||||
|
||||
1. Open Excel
|
||||
2. Go to **Data** > **Get Data** > **From Other Sources** > **From ODBC**
|
||||
3. Select your InfluxDB data source
|
||||
4. Enter credentials if prompted
|
||||
5. Select tables and load data
|
||||
|
||||
### DBeaver
|
||||
|
||||
1. Create a new database connection
|
||||
2. Select **ODBC** as the connection type
|
||||
3. Configure the connection:
|
||||
- **Database/Schema**: Your InfluxDB database
|
||||
- **ODBC DSN**: Your configured data source name
|
||||
4. Test and save the connection
|
||||
|
||||
## Use ODBC with programming languages
|
||||
|
||||
### Python with pyodbc
|
||||
|
||||
```python
|
||||
import pyodbc
|
||||
|
||||
# Connect to InfluxDB
|
||||
conn = pyodbc.connect(
|
||||
'DSN=InfluxDB3',
|
||||
autocommit=True
|
||||
)
|
||||
|
||||
# Create cursor
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Execute query
|
||||
cursor.execute("""
|
||||
SELECT
|
||||
time,
|
||||
temp,
|
||||
location
|
||||
FROM
|
||||
home
|
||||
WHERE
|
||||
time >= now() - INTERVAL '1 hour'
|
||||
ORDER BY
|
||||
time DESC
|
||||
""")
|
||||
|
||||
# Fetch results
|
||||
for row in cursor.fetchall():
|
||||
print(row)
|
||||
|
||||
# Close connection
|
||||
cursor.close()
|
||||
conn.close()
|
||||
```
|
||||
|
||||
### R with RODBC
|
||||
|
||||
```r
|
||||
library(RODBC)
|
||||
|
||||
# Connect to InfluxDB
|
||||
conn <- odbcConnect("InfluxDB3")
|
||||
|
||||
# Execute query
|
||||
result <- sqlQuery(conn, "
|
||||
SELECT
|
||||
time,
|
||||
temp,
|
||||
location
|
||||
FROM
|
||||
home
|
||||
WHERE
|
||||
time >= now() - INTERVAL '1 hour'
|
||||
ORDER BY
|
||||
time DESC
|
||||
")
|
||||
|
||||
# View results
|
||||
print(result)
|
||||
|
||||
# Close connection
|
||||
odbcClose(conn)
|
||||
```
|
||||
|
||||
### C# with `System.Data.Odbc`
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using System.Data.Odbc;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
string connectionString = "DSN=InfluxDB3";
|
||||
|
||||
using (OdbcConnection conn = new OdbcConnection(connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
string query = @"
|
||||
SELECT
|
||||
time,
|
||||
temp,
|
||||
location
|
||||
FROM
|
||||
home
|
||||
WHERE
|
||||
time >= now() - INTERVAL '1 hour'
|
||||
ORDER BY
|
||||
time DESC
|
||||
";
|
||||
|
||||
using (OdbcCommand cmd = new OdbcCommand(query, conn))
|
||||
using (OdbcDataReader reader = cmd.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
Console.WriteLine($"{reader["time"]} - {reader["temp"]} - {reader["location"]}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Connection string format
|
||||
|
||||
For applications that use connection strings directly:
|
||||
|
||||
```
|
||||
Driver={Arrow Flight SQL ODBC Driver};Host=HOST;Port=PORT;Database=DATABASE;AuthToken=TOKEN;UseEncryption=1
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```
|
||||
Driver={Arrow Flight SQL ODBC Driver};Host=localhost;Port=8181;Database=DATABASE_NAME;AuthToken=DATABASE_TOKEN;UseEncryption=1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
|
||||
{{% show-in "cloud-serverless,cloud-dedicated" %}}
|
||||
For {{% product-name %}}, use port `443`:
|
||||
|
||||
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
|
||||
```
|
||||
Driver={Arrow Flight SQL ODBC Driver};Host=cluster-id.a.influxdb.io;Port=443;Database=DATABASE_NAME;AuthToken=DATABASE_TOKEN;UseEncryption=1
|
||||
```
|
||||
{{% /code-placeholders %}}
|
||||
{{% /show-in %}}
|
||||
|
||||
## Configuration options
|
||||
|
||||
### Connection parameters
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| -------------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||
| `Host` | InfluxDB server hostname | Required |
|
||||
| `Port` | InfluxDB server port | Required {{% show-in "core,enterprise" %}}(`8181`){{% /show-in %}} |
|
||||
| `Database` | Database name | Required |
|
||||
| `AuthToken` | Authentication token | Required |
|
||||
| `UseEncryption` | Use encrypted connection | `1` (enabled) |
|
||||
| `TrustedCerts` | Path to trusted CA certificates | System default |
|
||||
| `DisableCertificateVerification` | Skip certificate verification | `0` (disabled) |
|
||||
|
||||
### Advanced options
|
||||
|
||||
Add these to your DSN configuration or connection string as needed:
|
||||
|
||||
{{% show-in "enterprise,core" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = localhost
|
||||
Port = 8181
|
||||
Database = mydb
|
||||
AuthToken = your-token
|
||||
UseEncryption = 1
|
||||
DisableCertificateVerification = 0
|
||||
```
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-serverless" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = us-west-2-1.aws.cloud2.influxdata.com
|
||||
Port = 443
|
||||
Database = mydb
|
||||
AuthToken = your-token
|
||||
UseEncryption = 1
|
||||
DisableCertificateVerification = 0
|
||||
```
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "cloud-dedicated" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = cluster-id.a.influxdb.io
|
||||
Port = 443
|
||||
Database = mydb
|
||||
AuthToken = your-token
|
||||
UseEncryption = 1
|
||||
DisableCertificateVerification = 0
|
||||
```
|
||||
{{% /show-in %}}
|
||||
|
||||
{{% show-in "clustered" %}}
|
||||
```ini
|
||||
[InfluxDB3]
|
||||
Driver = Arrow Flight SQL ODBC Driver
|
||||
Host = cluster-host.com
|
||||
Port = 443
|
||||
Database = mydb
|
||||
AuthToken = your-token
|
||||
UseEncryption = 1
|
||||
DisableCertificateVerification = 0
|
||||
```
|
||||
{{% /show-in %}}
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Driver not found
|
||||
|
||||
If applications cannot find the Arrow Flight SQL ODBC driver:
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Windows](#)
|
||||
[macOS and Linux](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
4. If not listed, reinstall the driver
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
1. Run the following command to list installed drivers:
|
||||
|
||||
```bash
|
||||
odbcinst -q -d
|
||||
```
|
||||
|
||||
2. Verify **Arrow Flight SQL** appears in the output
|
||||
3. Check `/etc/odbcinst.ini` for proper driver configuration
|
||||
4. Ensure the driver library path is correct
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### Connection failures
|
||||
|
||||
If you cannot connect to {{% product-name %}}:
|
||||
|
||||
- Verify your {{% product-name %}} instance is running and accessible
|
||||
- Check host and port settings:
|
||||
- Local instances: `localhost:8181`
|
||||
- {{% show-in "cloud-serverless,cloud-dedicated" %}}{{% product-name %}}: Use your cluster URL with port `443`{{% /show-in %}}
|
||||
- Ensure `UseEncryption` is set correctly for your connection type
|
||||
- Verify network connectivity and firewall rules allow connections
|
||||
|
||||
### Authentication errors
|
||||
|
||||
If authentication fails:
|
||||
|
||||
- Confirm your token is valid and not expired
|
||||
- Ensure the token is specified in the `AuthToken` parameter (not `Token`)
|
||||
- {{% show-in "enterprise" %}}Verify the token has query permissions for the target database{{% /show-in %}}
|
||||
- Check that the token was copied correctly without extra spaces or characters
|
||||
|
||||
### Query errors
|
||||
|
||||
If queries fail or return errors:
|
||||
|
||||
- Verify SQL syntax is correct for InfluxDB SQL
|
||||
- Check that referenced tables (measurements) exist in the database
|
||||
- Ensure column names match your schema
|
||||
- Review the [SQL reference](/influxdb3/version/reference/sql/) for supported features
|
||||
- For large result sets, consider adding `LIMIT` clauses
|
||||
|
||||
### Performance issues
|
||||
|
||||
For slow queries or connection timeouts:
|
||||
|
||||
- Add time range filters to limit data scanned
|
||||
- Use appropriate indexes if available
|
||||
- Increase timeout values in your DSN configuration
|
||||
- Monitor query execution plans for optimization opportunities
|
||||
|
||||
|
|
@ -9,15 +9,15 @@ Note: The Microsoft Power BI Connector for InfluxDB is currently in BETA
|
|||
>
|
||||
> {{% cite %}}-- [Microsoft Power BI documentation](https://learn.microsoft.com/en-us/power-bi/fundamentals/power-bi-overview){{% /cite %}}
|
||||
|
||||
> [!Important]
|
||||
> \[!Important]
|
||||
> These instructions are for Power BI Desktop only; it uses a custom connector.
|
||||
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Install the Power BI connector](#install-the-power-bi-connector)
|
||||
- [Install the Arrow Flight SQL ODBC Driver](#install-the-arrow-flight-sql-odbc-driver)
|
||||
- [Enable the connector in Power BI](#enable-the-connector-in-power-bi)
|
||||
- [Connect Power BI to InfluxDB](#connect-power-bi-to-influxdb)
|
||||
- [Query and visualize data](#query-and-visualize-data)
|
||||
1. [Prerequisites](#prerequisites)
|
||||
2. [Install the Arrow Flight SQL ODBC driver](#install-the-arrow-flight-sql-odbc-driver)
|
||||
3. [Install the Power BI connector](#install-the-power-bi-connector)
|
||||
4. [Enable the connector in Power BI](#enable-the-connector-in-power-bi)
|
||||
5. [Connect Power BI to InfluxDB](#connect-power-bi-to-influxdb)
|
||||
6. [Query and visualize data](#query-and-visualize-data)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
|
@ -28,65 +28,141 @@ Note: The Microsoft Power BI Connector for InfluxDB is currently in BETA
|
|||
- **{{% product-name %}}**: A running instance with data to query
|
||||
- **Database token**: Your {{% show-in "cloud-dedicated, clustered" %}}{{% token-link "database" %}}{{% /show-in %}}{{% show-in "cloud-serverless" %}}{{% token-link %}}{{% /show-in %}}{{% show-in "core, enterprise" %}}{{% token-link "admin" "database" %}}{{% /show-in %}}{{% show-in "enterprise" %}} with query permissions for the target database{{% /show-in %}}
|
||||
|
||||
The following steps guide you through downloading and installing the Arrow Flight SQL ODBC Driver and the InfluxDB 3 custom connector.
|
||||
## Install the Arrow Flight SQL ODBC driver
|
||||
|
||||
## Install the Power BI connector
|
||||
The InfluxDB 3 custom connector for Power BI requires the Arrow Flight SQL ODBC driver.
|
||||
Install the driver before installing the Power BI connector.
|
||||
|
||||
The InfluxDB 3 custom connector for Power BI Desktop enables you to connect to
|
||||
{{% product-name %}} and query data using SQL.
|
||||
> \[!Note]
|
||||
> For more information about the Arrow Flight SQL ODBC Driver, see the [Dremio documentation](https://docs.dremio.com/current/client-applications/drivers/arrow-flight-sql-odbc-driver/).
|
||||
|
||||
### Install the Arrow Flight SQL ODBC Driver
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Windows (PowerShell)](#)
|
||||
[Windows (Manual)](#)
|
||||
[macOS and Linux](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
The custom connector requires the Arrow Flight SQL ODBC Driver.
|
||||
{{% tab-content %}}
|
||||
Run the following PowerShell commands to download and install:
|
||||
|
||||
<a class="btn" href="https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi">Download the Arrow Flight SQL ODBC driver</a>
|
||||
{{% code-placeholders "YOUR\_USER" %}}
|
||||
|
||||
Or use PowerShell to download and install:
|
||||
|
||||
{{% code-placeholders "YOUR_USER" %}}
|
||||
```powershell
|
||||
# Set the driver path
|
||||
$driverPath = "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"
|
||||
|
||||
# Download the driver
|
||||
Invoke-WebRequest -Uri "https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi" `
|
||||
-OutFile "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"
|
||||
-OutFile $driverPath
|
||||
|
||||
# Mark as trusted
|
||||
Unblock-File "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"
|
||||
Unblock-File $driverPath
|
||||
|
||||
# Install
|
||||
Start-Process msiexec.exe -Wait -ArgumentList '/i "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"'
|
||||
Start-Process msiexec.exe -Wait -ArgumentList "/i `"$driverPath`""
|
||||
```
|
||||
|
||||
{{% /code-placeholders %}}
|
||||
|
||||
Replace the following:
|
||||
|
||||
- {{% code-placeholder-key %}}`YOUR_USER`{{% /code-placeholder-key %}}: Your Windows username
|
||||
|
||||
Follow the installation wizard using default settings.
|
||||
#### Verify driver installation
|
||||
|
||||
> [!Note]
|
||||
> For more information about the Arrow Flight SQL ODBC Driver, see the [Dremio documentation](https://docs.dremio.com/current/client-applications/drivers/arrow-flight-sql-odbc-driver/).
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
|
||||
### Install the Power BI connector file
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}} <a class="btn" href="https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi">Download the Arrow Flight SQL ODBC driver</a>
|
||||
|
||||
1. Run the downloaded `.msi` installer
|
||||
2. Follow the installation wizard using default settings
|
||||
3. Complete the installation
|
||||
|
||||
#### Verify driver installation
|
||||
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
Download from Dremio:
|
||||
|
||||
- [**macOS (Universal)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-universal.pkg)
|
||||
- [**Linux (x86\_64)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz)
|
||||
|
||||
#### Install on macOS
|
||||
|
||||
1. Run the downloaded `.pkg` installer
|
||||
2. Follow the installation prompts
|
||||
3. Enter your administrator password when prompted
|
||||
4. Complete the installation
|
||||
|
||||
#### Install on Linux
|
||||
|
||||
1. Extract the downloaded archive:
|
||||
|
||||
```bash
|
||||
tar -xzf arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz
|
||||
```
|
||||
|
||||
2. Install the driver (installation location may vary by distribution):
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt/arrow-flight-sql-odbc
|
||||
sudo cp -r lib /opt/arrow-flight-sql-odbc/
|
||||
```
|
||||
|
||||
3. Configure the driver in `/etc/odbcinst.ini`:
|
||||
|
||||
```ini
|
||||
[Arrow Flight SQL ODBC Driver]
|
||||
Description = Arrow Flight SQL ODBC Driver
|
||||
Driver = /opt/arrow-flight-sql-odbc/lib/libarrow-odbc.so
|
||||
```
|
||||
|
||||
#### Verify driver installation
|
||||
|
||||
To verify the driver is installed correctly, run:
|
||||
|
||||
```bash
|
||||
odbcinst -q -d
|
||||
```
|
||||
|
||||
The output should include **Arrow Flight SQL**.
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
## Install the Power BI connector
|
||||
|
||||
After installing the ODBC driver, download and install the InfluxDB 3 custom connector for Power BI Desktop.
|
||||
|
||||
<a class="btn" href="https://docs.influxdata.com/downloads/InfluxDB.pqx">Download the InfluxDB 3 Power BI connector</a>
|
||||
|
||||
Or use PowerShell to download:
|
||||
|
||||
{{% code-placeholders "YOUR_USER" %}}
|
||||
{{% code-placeholders "YOUR\_USER" %}}
|
||||
|
||||
```powershell
|
||||
# Download the connector
|
||||
Invoke-WebRequest -Uri "https://docs.influxdata.com/downloads/InfluxDB.pqx" `
|
||||
-OutFile "C:\Users\YOUR_USER\Downloads\InfluxDB.pqx"
|
||||
```
|
||||
|
||||
{{% /code-placeholders %}}
|
||||
|
||||
Replace the following:
|
||||
|
||||
- {{% code-placeholder-key %}}`YOUR_USER`{{% /code-placeholder-key %}}: Your Windows username
|
||||
|
||||
#### Install the connector
|
||||
|
||||
Move the `.pqx` connector file to the Power BI custom connectors directory:
|
||||
### Move the connector to the custom connectors directory
|
||||
|
||||
1. Create the custom connectors folder if it doesn't exist:
|
||||
|
||||
|
|
@ -96,11 +172,13 @@ Move the `.pqx` connector file to the Power BI custom connectors directory:
|
|||
|
||||
2. Move the connector file to the custom connectors folder:
|
||||
|
||||
{{% code-placeholders "YOUR_USER" %}}
|
||||
{{% code-placeholders "YOUR\_USER" %}}
|
||||
|
||||
```powershell
|
||||
Move-Item "C:\Users\YOUR_USER\Downloads\InfluxDB.pqx" `
|
||||
"$env:USERPROFILE\Documents\Power BI Desktop\Custom Connectors\"
|
||||
```
|
||||
|
||||
{{% /code-placeholders %}}
|
||||
|
||||
Replace the following:
|
||||
|
|
@ -119,8 +197,10 @@ To use custom connectors, you must adjust Power BI Desktop's security settings:
|
|||
5. Click **OK**
|
||||
6. **Restart Power BI Desktop** for the changes to take effect
|
||||
|
||||
> [!Warning]
|
||||
> \[!Warning]
|
||||
>
|
||||
> #### Security considerations
|
||||
>
|
||||
> Enabling uncertified extensions allows any custom connector to load.
|
||||
> Only enable this setting if you trust the connectors you're installing.
|
||||
|
||||
|
|
@ -129,9 +209,13 @@ To use custom connectors, you must adjust Power BI Desktop's security settings:
|
|||
After installing the connector and restarting Power BI Desktop:
|
||||
|
||||
1. Open **Power BI Desktop**
|
||||
|
||||
2. Click **Get Data** > **More**
|
||||
|
||||
3. Search for **InfluxDB 3** and select it
|
||||
|
||||
4. Click **Connect**
|
||||
|
||||
5. In the **InfluxDB 3** connection dialog, configure the following:
|
||||
|
||||
- **Server**: Your {{% product-name %}} URL without the port, (for example,
|
||||
|
|
@ -141,18 +225,25 @@ After installing the connector and restarting Power BI Desktop:
|
|||
- **Native Query** (optional): Enter a SQL query to limit the data loaded
|
||||
|
||||
6. Select **DirectQuery** as the **Data Connectivity mode**
|
||||
|
||||
7. Click **OK**
|
||||
|
||||
8. When prompted for credentials:
|
||||
- Select **Basic** authentication
|
||||
- **Username**: Leave blank or enter any value
|
||||
- **Password**: Enter your {{% show-in "cloud-dedicated, clustered" %}}{{% token-link "database" %}}{{% /show-in %}}{{% show-in "cloud-serverless" %}}{{% token-link %}}{{% /show-in %}}{{% show-in "core, enterprise" %}}{{% token-link "admin" "database" %}}{{% /show-in %}}{{% show-in "enterprise" %}} with query permissions for the target database{{% /show-in %}}
|
||||
|
||||
9. Click **Connect**
|
||||
|
||||
10. Preview your data and click **Load**
|
||||
|
||||
> [!Important]
|
||||
> \[!Important]
|
||||
>
|
||||
> #### Limit query size for optimal performance
|
||||
>
|
||||
> {{% product-name %}} can handle high throughput and dimensional data.
|
||||
> To ensure Power BI can successfully process data, limit query size by:
|
||||
>
|
||||
> - Using a `LIMIT` clause
|
||||
> - Specifying time ranges with `WHERE time >= ...`
|
||||
> - Filtering by specific columns or tags
|
||||
|
|
@ -165,6 +256,7 @@ When connecting to InfluxDB 3, you can use the **Native Query** option to
|
|||
execute custom SQL queries:
|
||||
|
||||
1. In the connection dialog, enable **Native Query**
|
||||
|
||||
2. Enter your query in the provided field:
|
||||
|
||||
```sql
|
||||
|
|
@ -182,6 +274,7 @@ execute custom SQL queries:
|
|||
```
|
||||
|
||||
3. Select **DirectQuery** as the connectivity mode
|
||||
|
||||
4. Click **OK** to load the data
|
||||
|
||||
### Create visualizations
|
||||
|
|
@ -223,6 +316,42 @@ After loading data, Power BI displays your dataset in the **Fields** pane.
|
|||
|
||||
## Troubleshooting
|
||||
|
||||
### Driver not found
|
||||
|
||||
If Power BI or other applications can't find the Arrow Flight SQL ODBC driver:
|
||||
|
||||
{{< tabs-wrapper >}}
|
||||
{{% tabs %}}
|
||||
[Windows](#)
|
||||
[macOS and Linux](#)
|
||||
{{% /tabs %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
1. Open **ODBC Data Source Administrator (64-bit)**
|
||||
2. Navigate to the **Drivers** tab
|
||||
3. Verify **Arrow Flight SQL ODBC Driver** appears in the list
|
||||
4. If not listed, reinstall the driver
|
||||
|
||||
{{% /tab-content %}}
|
||||
|
||||
{{% tab-content %}}
|
||||
|
||||
1. Run the following command to list installed drivers:
|
||||
|
||||
```bash
|
||||
odbcinst -q -d
|
||||
```
|
||||
|
||||
2. Verify **Arrow Flight SQL** appears in the output
|
||||
|
||||
3. Check `/etc/odbcinst.ini` for proper driver configuration
|
||||
|
||||
4. Ensure the driver library path is correct
|
||||
|
||||
{{% /tab-content %}}
|
||||
{{< /tabs-wrapper >}}
|
||||
|
||||
### Connector not found
|
||||
|
||||
If Power BI Desktop doesn't show the InfluxDB 3 connector:
|
||||
|
|
@ -236,28 +365,41 @@ If Power BI Desktop doesn't show the InfluxDB 3 connector:
|
|||
|
||||
If you encounter connection errors:
|
||||
|
||||
- Verify your {{% product-name %}} instance is accessible
|
||||
- Check that the host URL and port are correct
|
||||
- Verify your {{% product-name %}} instance is running and accessible
|
||||
- Check that the host URL and port are correct:
|
||||
- Local instances typically use `http://localhost:8181`
|
||||
- {{% show-in "cloud-serverless,cloud-dedicated" %}}{{% product-name %}} instances use cluster-specific URLs{{% /show-in %}}
|
||||
- {{% show-in "cloud-serverless,cloud-dedicated" %}}{{% product-name %}} instances use cluster-specific URLs with port `443`{{% /show-in %}}
|
||||
- Ensure `UseEncryption` is configured correctly for your connection type
|
||||
- Verify network connectivity and firewall rules allow connections on the specified port
|
||||
- Ensure your token has query permissions for the specified database
|
||||
- Verify firewall rules allow connections on the specified port
|
||||
|
||||
### Authentication errors
|
||||
|
||||
If authentication fails:
|
||||
|
||||
- Verify your database token is valid and not expired
|
||||
- {{% show-in "enterprise" %}}Ensure the token has permissions for the target database{{% /show-in %}}
|
||||
- Check that you entered the token in the **Password** field
|
||||
- Ensure the token is specified correctly (in the **Password** field for Power BI)
|
||||
- {{% show-in "enterprise" %}}Verify the token has query permissions for the target database{{% /show-in %}}
|
||||
- Check that the token was copied correctly without extra spaces or characters
|
||||
- Leave the **Username** field blank or enter any value
|
||||
|
||||
### Query errors
|
||||
|
||||
If queries fail or return errors:
|
||||
|
||||
- Verify SQL syntax is correct for InfluxDB SQL
|
||||
- Check that referenced tables (measurements) exist in the database
|
||||
- Ensure column names match your schema
|
||||
- Review the [SQL reference](/influxdb3/version/reference/sql/) for supported features
|
||||
- For large result sets, consider adding `LIMIT` clauses
|
||||
|
||||
### Query performance
|
||||
|
||||
For better query performance:
|
||||
|
||||
- Always use `WHERE` clauses to filter data before loading
|
||||
- Include time range filters to limit the data scanned
|
||||
- Include time range filters (for example, `WHERE time >= now() - INTERVAL '7 days'`) to limit the data scanned
|
||||
- Select only the columns you need
|
||||
- Use the `LIMIT` clause to restrict result size
|
||||
- Consider using **DirectQuery** mode instead of **Import** for large datasets
|
||||
- Monitor query execution for optimization opportunities
|
||||
|
|
|
|||
|
|
@ -0,0 +1,402 @@
|
|||
/// <reference types="cypress" />
|
||||
|
||||
/**
|
||||
* Ask AI Widget E2E Test Suite
|
||||
*
|
||||
* Tests for the Kapa.ai Ask AI widget and ask-ai-link shortcode
|
||||
*
|
||||
* NOTE: Open the chat window sparingly.
|
||||
*
|
||||
* COMPREHENSIVE TEST SCENARIOS CHECKLIST:
|
||||
*
|
||||
* Widget Initialization:
|
||||
* ----------------------
|
||||
* - [x] Widget script loads without errors
|
||||
* - [x] window.Kapa object is available
|
||||
* - [x] Widget trigger button is visible
|
||||
* - [ ] Widget initializes with correct configuration
|
||||
* - [ ] No JavaScript console errors during initialization
|
||||
*
|
||||
* Widget Trigger Button:
|
||||
* ----------------------
|
||||
* - [x] Button exists in footer
|
||||
* - [x] Button has correct class (ask-ai-open)
|
||||
* - [x] Button opens widget when clicked
|
||||
* - [x] Widget modal becomes visible after click
|
||||
* - [ ] Widget overlay appears (if configured)
|
||||
*
|
||||
* Ask AI Link Shortcode:
|
||||
* ----------------------
|
||||
* - [x] Link renders correctly in content
|
||||
* - [x] Link has correct text (default or custom)
|
||||
* - [x] Link has ask-ai-open class
|
||||
* - [x] Link has onclick handler for analytics
|
||||
* - [x] Link has data-query attribute with query
|
||||
* - [x] Link includes gtag analytics in onclick
|
||||
* - [x] Link opens widget when clicked
|
||||
* - [x] Query is pre-filled without auto-submitting
|
||||
* - [x] Widget modal becomes visible after click
|
||||
* - [x] Widget overlay appears (if configured)
|
||||
*
|
||||
* Widget Functionality:
|
||||
* ---------------------
|
||||
* - [ ] Widget opens in modal/drawer
|
||||
* - [ ] Widget shows input field
|
||||
* - [ ] Widget shows example questions
|
||||
* - [ ] Widget accepts user input
|
||||
* - [ ] Widget submits queries to AI
|
||||
* - [ ] Widget displays AI responses
|
||||
* - [ ] Widget can be closed
|
||||
* - [ ] Widget reopens with history preserved
|
||||
*
|
||||
* Query Pre-population:
|
||||
* ---------------------
|
||||
* - [x] window.Kapa.open() accepts query parameter
|
||||
* - [x] Query appears in input field when pre-populated
|
||||
* - [x] Query is submitted automatically with submit: true
|
||||
* - [ ] Pre-populated query respects special characters
|
||||
* - [ ] Pre-populated query handles HTML entities correctly
|
||||
*
|
||||
* Analytics Tracking:
|
||||
* -------------------
|
||||
* - [ ] Link click fires gtag event
|
||||
* - [ ] Event includes correct custom_map fields
|
||||
* - [ ] Event includes query text
|
||||
* - [ ] Event includes section (pathname)
|
||||
* - [ ] Event includes interaction_type: 'inline_link'
|
||||
*
|
||||
* Error Handling:
|
||||
* ---------------
|
||||
* - [x] No console errors when widget loads
|
||||
* - [ ] Graceful handling if window.Kapa is undefined
|
||||
* - [ ] Graceful handling if widget script fails to load
|
||||
* - [ ] Error messages are user-friendly
|
||||
*
|
||||
* Accessibility:
|
||||
* --------------
|
||||
* - [ ] Widget trigger button is keyboard accessible
|
||||
* - [ ] Ask AI links are keyboard accessible
|
||||
* - [ ] Widget modal has proper focus management
|
||||
* - [ ] Widget has ARIA labels
|
||||
* - [ ] Screen reader announcements work
|
||||
*
|
||||
* Cross-browser:
|
||||
* --------------
|
||||
* - [ ] Works in Chrome
|
||||
* - [ ] Works in Firefox
|
||||
* - [ ] Works in Safari
|
||||
* - [ ] Works in Edge
|
||||
*/
|
||||
|
||||
function beforeTest() {
|
||||
cy.viewport(1440, 900);
|
||||
}
|
||||
|
||||
describe('Ask AI Widget and Link', function () {
|
||||
describe('Widget Initialization', function () {
|
||||
beforeEach(() => {
|
||||
cy.visit('/influxdb3/core/admin/identify-version/');
|
||||
beforeTest();
|
||||
});
|
||||
|
||||
it('should load widget script without JavaScript errors', function () {
|
||||
cy.window().then((win) => {
|
||||
const errors = [];
|
||||
const originalError = win.console.error;
|
||||
|
||||
win.console.error = (...args) => {
|
||||
errors.push(args.join(' '));
|
||||
originalError.apply(win.console, args);
|
||||
};
|
||||
|
||||
// Wait for widget to initialize
|
||||
cy.wait(2000);
|
||||
|
||||
cy.then(() => {
|
||||
// Filter for Kapa-related errors
|
||||
const kapaErrors = errors.filter(
|
||||
(log) =>
|
||||
log.includes('kapa') ||
|
||||
log.includes('Kapa') ||
|
||||
log.includes('ask-ai')
|
||||
);
|
||||
expect(kapaErrors).to.have.length(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should make window.Kapa available', function () {
|
||||
cy.window().should('have.property', 'Kapa');
|
||||
cy.window().then((win) => {
|
||||
expect(win.Kapa).to.be.a('function');
|
||||
});
|
||||
});
|
||||
|
||||
it('should render widget trigger button in footer', function () {
|
||||
cy.get('.ask-ai-trigger a.ask-ai-open').should('be.visible');
|
||||
cy.get('.ask-ai-trigger').should('contain', 'Ask AI');
|
||||
});
|
||||
|
||||
it('should have correct class for widget trigger', function () {
|
||||
cy.get('.ask-ai-trigger a.ask-ai-open')
|
||||
.should('have.class', 'ask-ai-open')
|
||||
.and('be.visible');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Widget Trigger Button', function () {
|
||||
// ONLY test that opens widget via button - combines all button functionality tests
|
||||
it('should open widget when trigger button is clicked', function () {
|
||||
cy.visit('/influxdb3/core/admin/identify-version/');
|
||||
beforeTest();
|
||||
|
||||
// Click the Ask AI button
|
||||
cy.get('.ask-ai-trigger a.ask-ai-open').click();
|
||||
|
||||
// Wait for widget modal to appear
|
||||
cy.get('#kapa-modal-content', {
|
||||
includeShadowDom: true,
|
||||
timeout: 1000,
|
||||
}).should('be.visible');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Ask AI Link Shortcode', function () {
|
||||
beforeEach(() => {
|
||||
cy.visit('/influxdb3/core/admin/identify-version/');
|
||||
beforeTest();
|
||||
});
|
||||
|
||||
it('should render ask-ai-link with correct attributes', function () {
|
||||
// Validate DOM without clicking
|
||||
cy.get('a.ask-ai-open')
|
||||
.contains('Ask InfluxData AI')
|
||||
.should('be.visible')
|
||||
.should('have.class', 'ask-ai-open')
|
||||
.should(
|
||||
'have.attr',
|
||||
'data-query',
|
||||
'Help determine my InfluxDB version based on licensing, hosting, server age, and API.'
|
||||
);
|
||||
});
|
||||
|
||||
// This is the only test that opens the widget modal
|
||||
it('should open widget with pre-filled query when ask-ai-link is clicked', function () {
|
||||
cy.get('.article--content a.ask-ai-open')
|
||||
.contains('Ask InfluxData AI')
|
||||
.as('askAILink');
|
||||
cy.get('@askAILink').click();
|
||||
// Widget container MUST become visible
|
||||
cy.get('#kapa-modal-content', { includeShadowDom: true, timeout: 1000 })
|
||||
.should('be.visible', 'Widget must open when ask-ai-link is clicked')
|
||||
// Verify query is pre-filled (validates pre-fill behavior)
|
||||
.find('textarea, input[type="text"]')
|
||||
.should(
|
||||
'have.value',
|
||||
'Help determine my InfluxDB version based on licensing, hosting, server age, and API.'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Error Handling', function () {
|
||||
beforeEach(() => {
|
||||
cy.visit('/influxdb3/core/admin/identify-version/');
|
||||
beforeTest();
|
||||
});
|
||||
|
||||
it('should not throw console errors when link is clicked', function () {
|
||||
cy.window().then((win) => {
|
||||
const errors = [];
|
||||
const originalError = win.console.error;
|
||||
|
||||
win.console.error = (...args) => {
|
||||
errors.push(args.join(' '));
|
||||
originalError.apply(win.console, args);
|
||||
};
|
||||
|
||||
// Validate without actually clicking (DOM interaction only)
|
||||
cy.get('a.ask-ai-open').contains('Ask InfluxData AI');
|
||||
|
||||
cy.wait(500);
|
||||
|
||||
cy.then(() => {
|
||||
// Check for Kapa-related errors
|
||||
const kapaErrors = errors.filter(
|
||||
(log) =>
|
||||
(log.includes('kapa') || log.includes('Kapa')) &&
|
||||
!log.includes('Unknown method')
|
||||
);
|
||||
expect(kapaErrors).to.have.length(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle missing window.Kapa gracefully', function () {
|
||||
cy.window().then((win) => {
|
||||
// Temporarily remove Kapa
|
||||
const originalKapa = win.Kapa;
|
||||
delete win.Kapa;
|
||||
|
||||
// Validate link without opening widget
|
||||
cy.get('a.ask-ai-open')
|
||||
.contains('Ask InfluxData AI')
|
||||
.should('have.attr', 'onclick');
|
||||
|
||||
// Restore Kapa
|
||||
win.Kapa = originalKapa;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Ask AI Widget Configuration', function () {
|
||||
describe('Input Placeholder', function () {
|
||||
it('should have the version name in the placeholder on v3 pages', function () {
|
||||
cy.visit('/influxdb3/core/');
|
||||
beforeTest();
|
||||
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const placeholder = $script.attr(
|
||||
'data-modal-ask-ai-input-placeholder'
|
||||
);
|
||||
expect(placeholder).to.contain(
|
||||
'Specify your version and product')
|
||||
.and.to.contain("Core");
|
||||
});
|
||||
});
|
||||
|
||||
it('should have the version name in the placeholder on v2 pages', function () {
|
||||
cy.visit('/influxdb/v2/');
|
||||
beforeTest();
|
||||
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const placeholder = $script.attr(
|
||||
'data-modal-ask-ai-input-placeholder'
|
||||
);
|
||||
expect(placeholder).to.contain(
|
||||
'Specify your version and product')
|
||||
.and.to.contain("v2");
|
||||
});
|
||||
});
|
||||
|
||||
it('should have the version name in the placeholder on v1 pages', function () {
|
||||
cy.visit('/influxdb/v1/');
|
||||
beforeTest();
|
||||
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const placeholder = $script.attr(
|
||||
'data-modal-ask-ai-input-placeholder'
|
||||
);
|
||||
expect(placeholder).to.contain(
|
||||
'Specify your version and product')
|
||||
.and.to.contain("v1");
|
||||
});
|
||||
});
|
||||
|
||||
it('should have default placeholder when no product-specific one exists', function () {
|
||||
cy.visit('/platform/');
|
||||
beforeTest();
|
||||
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const placeholder = $script.attr(
|
||||
'data-modal-ask-ai-input-placeholder'
|
||||
);
|
||||
expect(placeholder).to.include('Ask questions about InfluxDB');
|
||||
expect(placeholder).to.include('Specify your product and version');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB 3 Products', function () {
|
||||
it('should configure Explorer-specific questions in Kapa widget', function () {
|
||||
cy.visit('/influxdb3/explorer/');
|
||||
beforeTest();
|
||||
|
||||
// Check the Kapa widget script tag has correct data-modal-example-questions attribute
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
expect(questions).to.include('visualize data using Explorer');
|
||||
});
|
||||
});
|
||||
|
||||
it('should configure Core-specific questions in Kapa widget', function () {
|
||||
cy.visit('/influxdb3/core/');
|
||||
beforeTest();
|
||||
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
expect(questions).to.include(
|
||||
'Python Processing engine using InfluxDB 3 Core'
|
||||
);
|
||||
// Should NOT have read replica question
|
||||
expect(questions).to.not.include('replica');
|
||||
});
|
||||
});
|
||||
|
||||
it('should configure Enterprise-specific questions in Kapa widget', function () {
|
||||
cy.visit('/influxdb3/enterprise/');
|
||||
beforeTest();
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
expect(questions).to.include('install and run InfluxDB 3 Enterprise');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB v1 Products', function () {
|
||||
it('should configure Enterprise v1-specific questions in Kapa widget', function () {
|
||||
cy.visit('/enterprise_influxdb/v1/');
|
||||
beforeTest();
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
expect(questions).to.include('configure InfluxDB Enterprise v1');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB OSS v2', function () {
|
||||
it('should configure v2-specific questions with version name in Kapa widget', function () {
|
||||
cy.visit('/influxdb/v2/get-started/');
|
||||
beforeTest();
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
// Check for v2-specific questions
|
||||
expect(questions).to.include(
|
||||
'write and query data using InfluxDB OSS v2'
|
||||
);
|
||||
// Should NOT have v1-specific questions
|
||||
expect(questions).to.not.include('retention policies');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB OSS v1', function () {
|
||||
it('should configure v1-specific questions with version name in Kapa widget', function () {
|
||||
cy.visit('/influxdb/v1/');
|
||||
beforeTest();
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
// Check for v1-specific questions
|
||||
expect(questions).to.include(
|
||||
'query data with InfluxQL using InfluxDB OSS v1'
|
||||
);
|
||||
// Should NOT have v2-specific questions
|
||||
expect(questions).to.not.include('auth tokens');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB Cloud (TSM)', function () {
|
||||
it('should configure Cloud-specific questions with correct naming in Kapa widget', function () {
|
||||
cy.visit('/influxdb/cloud/');
|
||||
beforeTest();
|
||||
cy.get('script[src*="kapa-widget.bundle.js"]').should(($script) => {
|
||||
const questions = $script.attr('data-modal-example-questions');
|
||||
// Check for Cloud-specific questions
|
||||
expect(questions).to.include(
|
||||
'write and query data using InfluxDB Cloud (TSM)'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
/// <reference types="cypress" />
|
||||
|
||||
/**
|
||||
* Page Context E2E Test Suite
|
||||
* Tests that all products in products.yml are correctly mapped in page-context.js
|
||||
*/
|
||||
|
||||
describe('Page Context - Product Mapping', function () {
|
||||
describe('InfluxDB 3 Products', function () {
|
||||
it('should map Explorer pages correctly', function () {
|
||||
cy.visit('/influxdb3/explorer/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/explorer/');
|
||||
cy.get('h1').should('contain', 'InfluxDB 3 Explorer');
|
||||
});
|
||||
|
||||
it('should map Core pages correctly', function () {
|
||||
cy.visit('/influxdb3/core/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/core/');
|
||||
cy.get('h1').should('contain', 'InfluxDB 3 Core');
|
||||
});
|
||||
|
||||
it('should map Enterprise pages correctly', function () {
|
||||
cy.visit('/influxdb3/enterprise/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/enterprise/');
|
||||
cy.get('h1').should('contain', 'InfluxDB 3 Enterprise');
|
||||
});
|
||||
|
||||
it('should map Cloud Serverless pages correctly', function () {
|
||||
cy.visit('/influxdb3/cloud-serverless/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/cloud-serverless/');
|
||||
cy.get('h1').should('contain', 'InfluxDB Cloud Serverless');
|
||||
});
|
||||
|
||||
it('should map Cloud Dedicated pages correctly', function () {
|
||||
cy.visit('/influxdb3/cloud-dedicated/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/cloud-dedicated/');
|
||||
cy.get('h1').should('contain', 'InfluxDB Cloud Dedicated');
|
||||
});
|
||||
|
||||
it('should map Clustered pages correctly', function () {
|
||||
cy.visit('/influxdb3/clustered/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb3/clustered/');
|
||||
cy.get('h1').should('contain', 'InfluxDB Clustered');
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB v2 and Cloud Products', function () {
|
||||
it('should map InfluxDB v2 pages correctly', function () {
|
||||
cy.visit('/influxdb/v2/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb/v2/');
|
||||
cy.get('h1').should('contain', 'InfluxDB v2');
|
||||
});
|
||||
|
||||
it('should map InfluxDB Cloud (TSM) pages correctly', function () {
|
||||
cy.visit('/influxdb/cloud/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb/cloud/');
|
||||
cy.get('h1').should('contain', 'InfluxDB Cloud');
|
||||
});
|
||||
});
|
||||
|
||||
describe('InfluxDB v1 Products', function () {
|
||||
it('should map InfluxDB v1 pages correctly', function () {
|
||||
cy.visit('/influxdb/v1/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/influxdb/v1/');
|
||||
cy.get('h1').should('contain', 'InfluxDB OSS');
|
||||
});
|
||||
|
||||
it('should map Enterprise v1 pages correctly', function () {
|
||||
cy.visit('/enterprise_influxdb/v1/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/enterprise_influxdb/v1/');
|
||||
cy.get('h1').should('contain', 'InfluxDB Enterprise');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Other Products', function () {
|
||||
it('should map Telegraf pages correctly', function () {
|
||||
cy.visit('/telegraf/v1/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/telegraf/v1/');
|
||||
cy.get('h1').should('contain', 'Telegraf');
|
||||
});
|
||||
|
||||
it('should map Chronograf pages correctly', function () {
|
||||
cy.visit('/chronograf/v1/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/chronograf/v1/');
|
||||
cy.get('h1').should('contain', 'Chronograf');
|
||||
});
|
||||
|
||||
it('should map Kapacitor pages correctly', function () {
|
||||
cy.visit('/kapacitor/v1/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/kapacitor/v1/');
|
||||
cy.get('h1').should('contain', 'Kapacitor');
|
||||
});
|
||||
|
||||
it('should map Flux pages correctly', function () {
|
||||
cy.visit('/flux/v0/');
|
||||
cy.get('body').should('be.visible');
|
||||
cy.url().should('include', '/flux/v0/');
|
||||
cy.get('h1').should('contain', 'Flux');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -23,9 +23,11 @@ influxdb3_core:
|
|||
x-influxdb-build: 'Core'
|
||||
url_contains: ['localhost:8181']
|
||||
ai_sample_questions:
|
||||
- What's my InfluxDB version?
|
||||
- How do I install and run InfluxDB 3 Core?
|
||||
- How do I write a plugin for the Python Processing engine?
|
||||
- How do I write data using the HTTP API for InfluxDB 3 Core?
|
||||
- Help me write a plugin for the Python Processing engine using InfluxDB 3 Core
|
||||
ai_input_placeholder: "Specify your version and product (\"Core\", \"InfluxDB 3 Enterprise\", \"OSS v1\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb3_enterprise:
|
||||
name: InfluxDB 3 Enterprise
|
||||
|
|
@ -52,9 +54,11 @@ influxdb3_enterprise:
|
|||
x-influxdb-build: 'Enterprise'
|
||||
url_contains: ['localhost:8181']
|
||||
ai_sample_questions:
|
||||
- What's my InfluxDB version?
|
||||
- How do I install and run InfluxDB 3 Enterprise?
|
||||
- Help me write a plugin for the Python Processing engine?
|
||||
- How do I start a read replica node with InfluxDB 3 Enterprise?
|
||||
- How do I start a read replica node using InfluxDB 3 Enterprise?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB 3 Enterprise\", \"Core\", \"Enterprise v1\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb3_explorer:
|
||||
name: InfluxDB 3 Explorer
|
||||
|
|
@ -66,9 +70,11 @@ influxdb3_explorer:
|
|||
latest_patch: 1.4.0
|
||||
placeholder_host: localhost:8888
|
||||
ai_sample_questions:
|
||||
- How do I query data using InfluxDB 3 Explorer?
|
||||
- How do I use InfluxDB 3 Explorer to visualize data?
|
||||
- How do I install InfluxDB 3 Explorer?
|
||||
- How do I install and run Explorer?
|
||||
- How do I query data using Explorer?
|
||||
- How do I visualize data using Explorer?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB 3 Explorer and Enterprise\", \"InfluxDB 3 Explorer and Core\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb3_cloud_serverless:
|
||||
name: InfluxDB Cloud Serverless
|
||||
|
|
@ -94,8 +100,11 @@ influxdb3_cloud_serverless:
|
|||
detection:
|
||||
url_contains: ['us-east-1-1.aws.cloud2.influxdata.com', 'eu-central-1-1.aws.cloud2.influxdata.com']
|
||||
ai_sample_questions:
|
||||
- How do I migrate from InfluxDB Cloud 2 to InfluxDB Cloud Serverless?
|
||||
- What's my InfluxDB version?
|
||||
- How do I migrate from Cloud (TSM) to Cloud Serverless?
|
||||
- What tools can I use to write data to InfluxDB Cloud Serverless?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB Cloud Serverless\", \"InfluxDB 3 Enterprise\", \"Core\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb3_cloud_dedicated:
|
||||
name: InfluxDB Cloud Dedicated
|
||||
|
|
@ -120,9 +129,11 @@ influxdb3_cloud_dedicated:
|
|||
detection:
|
||||
url_contains: ['influxdb.io']
|
||||
ai_sample_questions:
|
||||
- How do I migrate from InfluxDB v1 to InfluxDB Cloud Dedicated?
|
||||
- What tools can I use to write data to Cloud Dedicated?
|
||||
- How do I use SQL and parameterized queries with Cloud Dedicated?
|
||||
- What's my InfluxDB version?
|
||||
- How do I migrate from InfluxDB v1 to Cloud Dedicated?
|
||||
- How do I use SQL and parameterized queries with InfluxDB Cloud Dedicated?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB Cloud Dedicated\", \"InfluxDB 3 Enterprise\", \"Core\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb3_clustered:
|
||||
name: InfluxDB Clustered
|
||||
|
|
@ -147,12 +158,16 @@ influxdb3_clustered:
|
|||
ping_headers:
|
||||
x-influxdb-version: 'influxqlbridged-development'
|
||||
ai_sample_questions:
|
||||
- How do I use a Helm chart to configure Clustered?
|
||||
- What tools can I use to write data to Clustered?
|
||||
- What's my InfluxDB version?
|
||||
- How do I use a Helm chart to configure InfluxDB Clustered?
|
||||
- How do I use SQL and parameterized queries with InfluxDB Clustered?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB Clustered\", \"InfluxDB 3 Enterprise\", \"Core\") for better results"
|
||||
ai_source_group_ids: "b650cf0b-4b52-42e8-bde7-a02738f27262"
|
||||
|
||||
influxdb:
|
||||
name: InfluxDB
|
||||
name__v2: InfluxDB OSS v2
|
||||
name__v1: InfluxDB OSS v1
|
||||
altname: InfluxDB OSS
|
||||
namespace: influxdb
|
||||
succeeded_by: influxdb3_core
|
||||
|
|
@ -183,12 +198,20 @@ influxdb:
|
|||
x-influxdb-version: '^(1|2)\.'
|
||||
url_contains: ['localhost:8086']
|
||||
ai_sample_questions:
|
||||
- How do I write and query data with InfluxDB v2 OSS?
|
||||
- How can I migrate from InfluxDB v2 OSS to InfluxDB 3 Core?
|
||||
- How do I manage auth tokens in InfluxDB v2 OSS?
|
||||
- What's my InfluxDB version?
|
||||
- How do I write and query data using InfluxDB OSS v2?
|
||||
- How can I migrate from InfluxDB OSS v2 to InfluxDB 3?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB OSS v2\", \"InfluxDB v1\", \"InfluxDB 3 Core\") for better results"
|
||||
ai_source_group_ids: "3e905caa-dd6f-464b-abf9-c3880e09f128"
|
||||
ai_sample_questions__v1:
|
||||
- What's my InfluxDB version?
|
||||
- How do I query data with InfluxQL using InfluxDB OSS v1?
|
||||
- How do I set up continuous queries in InfluxDB OSS v1?
|
||||
ai_source_group_ids__v1: "d809f67b-867d-4f17-95f0-c33dbadbf15f"
|
||||
|
||||
influxdb_cloud:
|
||||
name: InfluxDB Cloud (TSM)
|
||||
name__vcloud: InfluxDB Cloud (TSM)
|
||||
altname: InfluxDB Cloud
|
||||
namespace: influxdb
|
||||
menu_category: managed
|
||||
|
|
@ -208,9 +231,11 @@ influxdb_cloud:
|
|||
detection:
|
||||
url_contains: ['us-west-2-1.aws.cloud2.influxdata.com', 'us-west-2-2.aws.cloud2.influxdata.com', 'us-east-1-1.aws.cloud2.influxdata.com', 'eu-central-1-1.aws.cloud2.influxdata.com', 'us-central1-1.gcp.cloud2.influxdata.com', 'westeurope-1.azure.cloud2.influxdata.com', 'eastus-1.azure.cloud2.influxdata.com']
|
||||
ai_sample_questions:
|
||||
- How do I write and query data with InfluxDB Cloud 2?
|
||||
- How is Cloud 2 different from Cloud Serverless?
|
||||
- How do I manage auth tokens in InfluxDB Cloud 2?
|
||||
- What's my InfluxDB version?
|
||||
- How do I write and query data using InfluxDB Cloud (TSM)?
|
||||
- How is Cloud (TSM) different from Cloud Serverless?
|
||||
ai_input_placeholder: "Specify your version and product (\"InfluxDB Cloud (TSM)\", \"InfluxDB 3 Enterprise\", \"Core\") for better results"
|
||||
ai_source_group_ids: "3e905caa-dd6f-464b-abf9-c3880e09f128"
|
||||
|
||||
telegraf:
|
||||
name: Telegraf
|
||||
|
|
@ -222,9 +247,10 @@ telegraf:
|
|||
latest_patches:
|
||||
v1: 1.36.4
|
||||
ai_sample_questions:
|
||||
- How do I install and configure Telegraf?
|
||||
- How do I configure Telegraf for InfluxDB 3?
|
||||
- How do I write a custom Telegraf plugin?
|
||||
- How do I use Telegraf for MQTT?
|
||||
ai_input_placeholder: "Ask questions about Telegraf and InfluxDB"
|
||||
|
||||
chronograf:
|
||||
name: Chronograf
|
||||
|
|
@ -239,6 +265,7 @@ chronograf:
|
|||
- How do I configure Chronograf for InfluxDB v1?
|
||||
- How do I create a dashboard in Chronograf?
|
||||
- How do I use Grafana to visualize data stored in InfluxDB 3?
|
||||
ai_input_placeholder: "Ask questions about Chronograf and InfluxDB"
|
||||
|
||||
kapacitor:
|
||||
name: Kapacitor
|
||||
|
|
@ -251,8 +278,9 @@ kapacitor:
|
|||
v1: 1.8.2
|
||||
ai_sample_questions:
|
||||
- How do I configure Kapacitor for InfluxDB v1?
|
||||
- How do I write a custom Kapacitor task?
|
||||
- How do I write a custom task for Kapacitor?
|
||||
- How do I create tasks using InfluxDB 3 Core?
|
||||
ai_input_placeholder: "Ask questions about Kapacitor"
|
||||
|
||||
enterprise_influxdb:
|
||||
name: "InfluxDB Enterprise v1"
|
||||
|
|
@ -276,9 +304,11 @@ enterprise_influxdb:
|
|||
ping_headers:
|
||||
x-influxdb-build: 'Enterprise'
|
||||
ai_sample_questions:
|
||||
- How can I configure my InfluxDB v1 Enterprise server?
|
||||
- How do I replicate data between InfluxDB v1 Enterprise and OSS?
|
||||
- How do I query data stored in InfluxDB v1?
|
||||
- What's my InfluxDB version?
|
||||
- How can I configure InfluxDB Enterprise v1?
|
||||
- How do I replicate data from OSS to InfluxDB Enterprise v1?
|
||||
ai_input_placeholder: "Specify your version and product (\"Enterprise v1\", \"InfluxDB 3 Enterprise\", \"Core\") for better results"
|
||||
ai_source_group_ids: "d809f67b-867d-4f17-95f0-c33dbadbf15f"
|
||||
|
||||
flux:
|
||||
name: Flux
|
||||
|
|
@ -288,6 +318,8 @@ flux:
|
|||
versions: [v0]
|
||||
latest: v0.x
|
||||
ai_sample_questions:
|
||||
- How do I write a Flux query for InfluxDB v2 (TSM)?
|
||||
- How do I use Flux to transform data stored in InfluxDB v2?
|
||||
- How do I query with Flux?
|
||||
- How do I transform data with Flux?
|
||||
- How do I join data with Flux?
|
||||
ai_input_placeholder: "Ask questions about Flux and InfluxDB"
|
||||
ai_source_group_ids: "d809f67b-867d-4f17-95f0-c33dbadbf15f,3e905caa-dd6f-464b-abf9-c3880e09f128"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="article">
|
||||
<article class="article--content">
|
||||
<div class="title">
|
||||
<h1>{{ .Title | .RenderString }}</h1>
|
||||
<h1>{{ .RenderString .Title }}</h1>
|
||||
{{ partial "article/supported-versions.html" . }}
|
||||
{{ partial "article/page-meta.html" . }}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
{{- if .Params.prepend -}}
|
||||
{{ .Params.prepend | .RenderString }}
|
||||
{{- if reflect.IsMap .Params.prepend -}}
|
||||
{{- if .Params.prepend.title -}}
|
||||
<h2>{{ .Params.prepend.title }}</h2>
|
||||
{{- end -}}
|
||||
{{- if .Params.prepend.content -}}
|
||||
{{ .RenderString .Params.prepend.content }}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{ .RenderString .Params.prepend }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{{- $linkText := .Get "link-text" | default "Ask Docs AI" -}}
|
||||
{{- $query := .Get "query" | default "" -}}
|
||||
<a href="#"
|
||||
class="ask-ai-open"
|
||||
{{- if $query -}}
|
||||
data-query="{{ $query }}"
|
||||
{{- end -}}
|
||||
onclick="
|
||||
if (window.gtag) {
|
||||
window.gtag('event', 'ask_ai_link', {
|
||||
'custom_map.interaction_type': 'inline_link',
|
||||
'custom_map.section': location.pathname,
|
||||
'custom_map.query': '{{ $query | htmlEscape }}'
|
||||
});
|
||||
}
|
||||
return false;
|
||||
">{{ $linkText }}</a>
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
{{ $context := .Get "context" }}
|
||||
{{ $aiInstruction := .Get "ai_instruction" }}
|
||||
|
||||
<h4>Identify your InfluxDB version</h4>
|
||||
<h4 id="identify-your-influxdb-version">Identify your InfluxDB version</h4>
|
||||
|
||||
<p>
|
||||
If you are unsure which InfluxDB product you are using, use our interactive version detector to help identify it:</p>
|
||||
|
|
|
|||
|
|
@ -1131,9 +1131,9 @@ callsites@^3.0.0:
|
|||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001737:
|
||||
version "1.0.30001745"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001745.tgz"
|
||||
integrity sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==
|
||||
version "1.0.30001754"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz"
|
||||
integrity sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==
|
||||
|
||||
careful-downloader@^3.0.0:
|
||||
version "3.0.0"
|
||||
|
|
|
|||
Loading…
Reference in New Issue