[Cloud Security] [CNVM] Vulnerabilities table improvements (#158530)

### Summary

This PR is part of quick wins tasks to improve the performance of the
Vulnerabilities Table. It adds several improvements, such as:

- Updates default table sorting to be based on Severity and CVSS instead
of only CVSS.
- Split Package and Version columns into two columns.
- Updates the Fixed Version column to display only the
`package.fixed_version` instead of `package.name +
package.fixed_version`.
- Added a highlight to draw user attention to the multi-sort component
when a new column is added to the Table sorting.
- Fixed EuiProgress flickering when the Table is loading.
- Updated `package.name` sorting to be case insensitive.
- Add a Highlight to the selected row when opening the Flyout.

### Performance improvements

The Table was slow to paginate and sort, and also opening the Flyout was
slow. The reason was that the Table was loading 500 items at once and
then paginating it in memory while the Cell Rendered function was
computing the rendering for all Cells of the 500 rows. This PR address
this issue and improves the performance of the Table by:

- Updated the fetching logic to use `pageIndex` and `pageSize` instead
of loading the max items (500);
- Updated the Grid in memory level to be `enhancements` instead of
`pagination` to reduce the number of iterations of the Cell Renderer
function.
- Updated the Cell Renderer function to compute only elements that are
on the current page.

It also fixes https://github.com/elastic/kibana/issues/157779

### Video


b3b5727c-566d-418f-8a07-a64aac9621d3
This commit is contained in:
Paulo Henrique 2023-05-26 15:18:45 -07:00 committed by GitHub
parent 30ba9a985d
commit a8161efc3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 470 additions and 326 deletions

View file

@ -12,7 +12,6 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../../common/constants';
import { useKibana } from '../../../common/hooks/use_kibana';
import { showErrorToast } from '../../../common/utils/show_error_toast';
import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants';
import { FindingsBaseEsQuery } from '../../../common/types';
type LatestFindingsRequest = IKibanaSearchRequest<estypes.SearchRequest>;
type LatestFindingsResponse = IKibanaSearchResponse<estypes.SearchResponse<any, FindingsAggs>>;
@ -24,9 +23,11 @@ interface FindingsAggs {
interface VulnerabilitiesQuery extends FindingsBaseEsQuery {
sort: estypes.Sort;
enabled: boolean;
pageIndex: number;
pageSize: number;
}
export const getFindingsQuery = ({ query, sort }: VulnerabilitiesQuery) => ({
export const getFindingsQuery = ({ query, sort, pageIndex, pageSize }: VulnerabilitiesQuery) => ({
index: LATEST_VULNERABILITIES_INDEX_PATTERN,
query: {
...query,
@ -46,7 +47,8 @@ export const getFindingsQuery = ({ query, sort }: VulnerabilitiesQuery) => ({
],
},
},
size: MAX_FINDINGS_TO_LOAD,
from: pageIndex * pageSize,
size: pageSize,
sort,
});
@ -56,7 +58,7 @@ export const useLatestVulnerabilities = (options: VulnerabilitiesQuery) => {
notifications: { toasts },
} = useKibana().services;
return useQuery(
[LATEST_VULNERABILITIES_INDEX_PATTERN, { params: options }],
[LATEST_VULNERABILITIES_INDEX_PATTERN, options],
async () => {
const {
rawResponse: { hits },
@ -72,8 +74,9 @@ export const useLatestVulnerabilities = (options: VulnerabilitiesQuery) => {
};
},
{
enabled: options.enabled,
staleTime: 5000,
keepPreviousData: true,
enabled: options.enabled,
onError: (err: Error) => showErrorToast(toasts, err),
}
);

View file

@ -0,0 +1,53 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { useEuiTheme } from '@elastic/eui';
import { css, keyframes } from '@emotion/css';
export const useStyles = () => {
const { euiTheme } = useEuiTheme();
const highlight = keyframes`
0% { background-color: ${euiTheme.colors.warning};}
50% { background-color: ${euiTheme.colors.emptyShade};}
75% { background-color: ${euiTheme.colors.warning};}
100% { background-color: ${euiTheme.colors.emptyShade};}
`;
const gridStyle = css`
& .euiDataGridHeaderCell__icon {
display: none;
}
& .euiDataGrid__controls {
border-bottom: none;
}
& .euiButtonIcon {
color: ${euiTheme.colors.primary};
}
& .euiDataGridRowCell {
font-size: ${euiTheme.size.m};
}
& .euiDataGridRowCell__expandActions > [data-test-subj='euiDataGridCellExpandButton'] {
display: none;
}
& .euiDataGridRowCell__expandFlex {
align-items: center;
}
`;
const highlightStyle = css`
& [data-test-subj='dataGridColumnSortingButton'] .euiButtonEmpty__text {
animation: ${highlight} 1s ease-out infinite;
color: ${euiTheme.colors.darkestShade};
}
`;
return {
highlightStyle,
gridStyle,
};
};

View file

@ -5,7 +5,6 @@
* 2.0.
*/
export const VULNERABILITY_SEVERITY_FIELD = 'vulnerability.severity';
import { i18n } from '@kbn/i18n';
export const severitySchemaConfig = {
@ -42,3 +41,19 @@ export const severitySortScript = (direction: string) => ({
order: direction,
},
});
/**
* Generates Painless sorting in case-insensitive manner
*/
export const getCaseInsensitiveSortScript = (field: string, direction: string) => {
return {
_script: {
type: 'string',
order: direction,
script: {
source: `doc["${field}"].value.toLowerCase()`,
lang: 'painless',
},
},
};
};

View file

@ -15,9 +15,9 @@ import {
EuiToolTip,
useEuiTheme,
} from '@elastic/eui';
import { css } from '@emotion/react';
import { cx } from '@emotion/css';
import { DataView } from '@kbn/data-views-plugin/common';
import React, { useCallback, useMemo } from 'react';
import React, { useCallback, useMemo, useState, useEffect } from 'react';
import { i18n } from '@kbn/i18n';
import { LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY } from '../../common/constants';
import { useCloudPostureTable } from '../../common/hooks/use_cloud_posture_table';
@ -44,14 +44,17 @@ import { FILTER_IN, FILTER_OUT, SEARCH_BAR_PLACEHOLDER, VULNERABILITIES } from '
import {
severitySchemaConfig,
severitySortScript,
VULNERABILITY_SEVERITY_FIELD,
getCaseInsensitiveSortScript,
} from './utils/custom_sort_script';
import { usePageSlice } from '../../common/hooks/use_page_slice';
import { useStyles } from './hooks/use_styles';
const getDefaultQuery = ({ query, filters }: any): any => ({
query,
filters,
sort: [{ id: vulnerabilitiesColumns.cvss, direction: 'desc' }],
sort: [
{ id: vulnerabilitiesColumns.severity, direction: 'desc' },
{ id: vulnerabilitiesColumns.cvss, direction: 'desc' },
],
pageIndex: 0,
});
@ -94,12 +97,31 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
paginationLocalStorageKey: LOCAL_STORAGE_PAGE_SIZE_FINDINGS_KEY,
});
const { euiTheme } = useEuiTheme();
const styles = useStyles();
const [showHighlight, setHighlight] = useState(false);
const onSortHandler = useCallback(
(newSort: any) => {
onSort(newSort);
if (newSort.length !== sort.length) {
setHighlight(true);
setTimeout(() => {
setHighlight(false);
}, 2000);
}
},
[onSort, sort]
);
const multiFieldsSort = useMemo(() => {
return sort.map(({ id, direction }: { id: string; direction: string }) => {
if (VULNERABILITY_SEVERITY_FIELD === id) {
if (id === vulnerabilitiesColumns.severity) {
return severitySortScript(direction);
}
if (id === vulnerabilitiesColumns.package) {
return getCaseInsensitiveSortScript(id, direction);
}
return {
[id]: direction,
@ -111,15 +133,15 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
query,
sort: multiFieldsSort,
enabled: !queryError,
pageIndex,
pageSize,
});
const slicedPage = usePageSlice(data?.page, pageIndex, pageSize);
const invalidIndex = -1;
const selectedVulnerability = useMemo(() => {
return slicedPage[urlQuery.vulnerabilityIndex];
}, [slicedPage, urlQuery.vulnerabilityIndex]);
return data?.page[urlQuery.vulnerabilityIndex];
}, [data?.page, urlQuery.vulnerabilityIndex]);
const onCloseFlyout = () => {
setUrlQuery({
@ -129,7 +151,7 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
const onOpenFlyout = useCallback(
(vulnerabilityRow: VulnerabilityRecord) => {
const vulnerabilityIndex = slicedPage.findIndex(
const vulnerabilityIndex = data?.page.findIndex(
(vulnerabilityRecord: VulnerabilityRecord) =>
vulnerabilityRecord.vulnerability?.id === vulnerabilityRow.vulnerability?.id &&
vulnerabilityRecord.resource?.id === vulnerabilityRow.resource?.id &&
@ -142,7 +164,7 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
vulnerabilityIndex,
});
},
[setUrlQuery, slicedPage]
[setUrlQuery, data?.page]
);
const { isLastLimitedPage, limitedTotalItemCount } = useLimitProperties({
@ -154,6 +176,8 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
const columns = useMemo(() => {
const getColumnIdValue = (rowIndex: number, columnId: string) => {
const vulnerabilityRow = data?.page[rowIndex] as VulnerabilityRecord;
if (!vulnerabilityRow) return null;
if (columnId === vulnerabilitiesColumns.vulnerability) {
return vulnerabilityRow.vulnerability.id;
}
@ -166,9 +190,12 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
if (columnId === vulnerabilitiesColumns.severity) {
return vulnerabilityRow.vulnerability.severity;
}
if (columnId === vulnerabilitiesColumns.package_version) {
if (columnId === vulnerabilitiesColumns.package) {
return vulnerabilityRow.vulnerability?.package?.name;
}
if (columnId === vulnerabilitiesColumns.version) {
return vulnerabilityRow.vulnerability?.package?.version;
}
if (columnId === vulnerabilitiesColumns.fix_version) {
return vulnerabilityRow.vulnerability.package?.fixed_version;
}
@ -176,7 +203,9 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
const cellActions: EuiDataGridColumnCellAction[] = [
({ Component, rowIndex, columnId }) => {
const value = getColumnIdValue(rowIndex, columnId);
const rowIndexFromPage = rowIndex > pageSize - 1 ? rowIndex % pageSize : rowIndex;
const value = getColumnIdValue(rowIndexFromPage, columnId);
if (!value) return null;
return (
@ -218,7 +247,9 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
);
},
({ Component, rowIndex, columnId }) => {
const value = getColumnIdValue(rowIndex, columnId);
const rowIndexFromPage = rowIndex > pageSize - 1 ? rowIndex % pageSize : rowIndex;
const value = getColumnIdValue(rowIndexFromPage, columnId);
if (!value) return null;
return (
@ -248,7 +279,7 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
filters: urlQuery.filters,
dataView,
field: columnId,
value: getColumnIdValue(rowIndex, columnId),
value,
negate: true,
}),
});
@ -262,12 +293,39 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
];
return getVulnerabilitiesColumnsGrid(cellActions);
}, [data?.page, dataView, setUrlQuery, urlQuery.filters]);
}, [data?.page, dataView, pageSize, setUrlQuery, urlQuery.filters]);
const flyoutVulnerabilityIndex = urlQuery?.vulnerabilityIndex;
const selectedVulnerabilityIndex = flyoutVulnerabilityIndex + pageIndex * pageSize;
const renderCellValue = useMemo(() => {
return ({ rowIndex, columnId }: EuiDataGridCellValueElementProps) => {
const vulnerabilityRow = data?.page[rowIndex] as VulnerabilityRecord;
const Cell: React.FC<EuiDataGridCellValueElementProps> = ({
columnId,
rowIndex,
setCellProps,
}): React.ReactElement | null => {
const rowIndexFromPage = rowIndex > pageSize - 1 ? rowIndex % pageSize : rowIndex;
const vulnerabilityRow = data?.page[rowIndexFromPage] as VulnerabilityRecord;
useEffect(() => {
if (selectedVulnerabilityIndex === rowIndex) {
setCellProps({
style: {
backgroundColor: euiTheme.colors.highlight,
},
});
} else {
setCellProps({
style: {
backgroundColor: 'inherit',
},
});
}
}, [rowIndex, setCellProps]);
if (isFetching) return null;
if (!vulnerabilityRow) return null;
if (!vulnerabilityRow.vulnerability?.id) return null;
@ -283,10 +341,13 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
);
}
if (columnId === vulnerabilitiesColumns.vulnerability) {
return vulnerabilityRow.vulnerability.id || '';
return <>{vulnerabilityRow.vulnerability?.id}</>;
}
if (columnId === vulnerabilitiesColumns.cvss) {
if (!vulnerabilityRow.vulnerability.score?.base) {
if (
!vulnerabilityRow.vulnerability.score?.base ||
!vulnerabilityRow.vulnerability.score?.version
) {
return null;
}
return (
@ -297,7 +358,7 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
);
}
if (columnId === vulnerabilitiesColumns.resource) {
return vulnerabilityRow.resource?.name || null;
return <>{vulnerabilityRow.resource?.name}</>;
}
if (columnId === vulnerabilitiesColumns.severity) {
if (!vulnerabilityRow.vulnerability.severity) {
@ -305,27 +366,29 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
}
return <SeverityStatusBadge status={vulnerabilityRow.vulnerability.severity} />;
}
if (columnId === vulnerabilitiesColumns.package_version) {
return (
<>
{vulnerabilityRow.vulnerability?.package?.name}{' '}
{vulnerabilityRow.vulnerability?.package?.version}
</>
);
if (columnId === vulnerabilitiesColumns.package) {
return <>{vulnerabilityRow.vulnerability?.package?.name}</>;
}
if (columnId === vulnerabilitiesColumns.version) {
return <>{vulnerabilityRow.vulnerability?.package?.version}</>;
}
if (columnId === vulnerabilitiesColumns.fix_version) {
if (!vulnerabilityRow.vulnerability.package?.fixed_version) {
return null;
}
return (
<>
{vulnerabilityRow.vulnerability.package?.name}{' '}
{vulnerabilityRow.vulnerability.package.fixed_version}
</>
);
return <>{vulnerabilityRow.vulnerability?.package?.fixed_version}</>;
}
return null;
};
}, [data?.page, onOpenFlyout]);
return Cell;
}, [
data?.page,
euiTheme.colors.highlight,
onOpenFlyout,
pageSize,
selectedVulnerabilityIndex,
isFetching,
]);
const onPaginateFlyout = useCallback(
(nextVulnerabilityIndex: number) => {
@ -343,7 +406,6 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
[pageSize, setUrlQuery]
);
const flyoutVulnerabilityIndex = urlQuery?.vulnerabilityIndex;
const error = queryError || null;
if (error) {
@ -374,38 +436,15 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
<EmptyState onResetFilters={onResetFilters} />
) : (
<>
{isFetching ? (
<EuiProgress size="xs" color="accent" />
) : (
<EuiSpacer
css={css`
height: 2px;
`}
/>
)}
<EuiProgress
size="xs"
color="accent"
style={{
opacity: isFetching ? 1 : 0,
}}
/>
<EuiDataGrid
css={css`
& .euiDataGridHeaderCell__icon {
display: none;
}
& .euiDataGrid__controls {
border-bottom: none;
}
& .euiButtonIcon {
color: ${euiTheme.colors.primary};
}
& .euiDataGridRowCell {
font-size: ${euiTheme.size.m};
}
&
.euiDataGridRowCell__expandActions
> [data-test-subj='euiDataGridCellExpandButton'] {
display: none;
}
& .euiDataGridRowCell__expandFlex {
align-items: center;
}
`}
className={cx({ [styles.gridStyle]: true }, { [styles.highlightStyle]: showHighlight })}
aria-label={VULNERABILITIES}
columns={columns}
columnVisibility={{
@ -421,13 +460,15 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
additionalControls: {
left: {
prepend: (
<EuiButtonEmpty size="xs" color="text">
{i18n.translate('xpack.csp.vulnerabilities.totalVulnerabilities', {
defaultMessage:
'{total, plural, one {# Vulnerability} other {# Vulnerabilities}}',
values: { total: data?.total },
})}
</EuiButtonEmpty>
<>
<EuiButtonEmpty size="xs" color="text">
{i18n.translate('xpack.csp.vulnerabilities.totalVulnerabilities', {
defaultMessage:
'{total, plural, one {# Vulnerability} other {# Vulnerabilities}}',
values: { total: data?.total },
})}
</EuiButtonEmpty>
</>
),
},
},
@ -440,8 +481,8 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
header: 'underline',
}}
renderCellValue={renderCellValue}
inMemory={{ level: 'pagination' }}
sorting={{ columns: sort, onSort }}
inMemory={{ level: 'enhancements' }}
sorting={{ columns: sort, onSort: onSortHandler }}
pagination={{
pageIndex,
pageSize,
@ -453,11 +494,12 @@ const VulnerabilitiesContent = ({ dataView }: { dataView: DataView }) => {
{isLastLimitedPage && <LimitedResultsBar />}
{showVulnerabilityFlyout && (
<VulnerabilityFindingFlyout
flyoutIndex={flyoutVulnerabilityIndex + pageIndex * pageSize}
flyoutIndex={selectedVulnerabilityIndex}
vulnerabilityRecord={selectedVulnerability}
totalVulnerabilitiesCount={limitedTotalItemCount}
onPaginate={onPaginateFlyout}
closeFlyout={onCloseFlyout}
isLoading={isFetching}
/>
)}
</>

View file

@ -23,6 +23,7 @@ const TestComponent = ({ ...overrideProps }) => (
totalVulnerabilitiesCount={2}
onPaginate={onPaginate}
vulnerabilityRecord={mockVulnerabilityHit}
isLoading={false}
{...overrideProps}
/>
</TestProvider>

View file

@ -15,11 +15,12 @@ import {
EuiFlyoutHeader,
EuiLink,
EuiPagination,
EuiSkeletonText,
EuiTab,
EuiTabs,
EuiTitle,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { euiThemeVars } from '@kbn/ui-theme';
import { css } from '@emotion/react';
@ -38,12 +39,14 @@ export const VulnerabilityFindingFlyout = ({
totalVulnerabilitiesCount,
flyoutIndex,
vulnerabilityRecord,
isLoading,
}: {
closeFlyout: () => void;
onPaginate: (pageIndex: number) => void;
totalVulnerabilitiesCount: number;
flyoutIndex?: number;
vulnerabilityRecord: VulnerabilityRecord;
isLoading: boolean;
}) => {
const [selectedTabId, setSelectedTabId] = useState(overviewTabId);
const vulnerability = vulnerabilityRecord?.vulnerability;
@ -98,56 +101,77 @@ export const VulnerabilityFindingFlyout = ({
const vulnerabilityReference = vulnerability?.cvss?.nvd ? nvdWebsite : vulnerability?.reference;
const LOADING_ARIA_LABEL = i18n.translate(
'xpack.csp.vulnerabilities.vulnerabilityFindingFlyout.loadingAriaLabel',
{ defaultMessage: 'Loading' }
);
return (
<EuiFlyout onClose={closeFlyout}>
<EuiFlyoutHeader>
<EuiFlexGroup
direction="column"
css={css`
gap: ${euiThemeVars.euiSizeS};
`}
<EuiSkeletonText
lines={10}
size="m"
isLoading={isLoading}
contentAriaLabel={LOADING_ARIA_LABEL}
>
<EuiFlexItem>
<SeverityStatusBadge status={vulnerability?.severity} />
</EuiFlexItem>
<EuiFlexItem>
<EuiFlexGroup
direction="column"
css={css`
gap: ${euiThemeVars.euiSizeS};
`}
>
<EuiFlexItem>
<EuiTitle
size="m"
css={css`
color: ${euiThemeVars.euiColorPrimaryText};
line-height: 32px;
`}
>
<EuiLink target={'_blank'} href={vulnerabilityReference}>
{vulnerability?.id}
</EuiLink>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem>
<p
css={css`
line-height: 20px;
margin-bottom: ${euiThemeVars.euiSizeM};
`}
>
{`${resourceName} | ${vulnerability?.package?.name} ${vulnerability?.package?.version}`}
</p>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
<EuiFlexItem>
<EuiTabs>{renderTabs()}</EuiTabs>
</EuiFlexItem>
</EuiFlexGroup>
<EuiFlexGroup
direction="column"
css={css`
gap: ${euiThemeVars.euiSizeS};
`}
>
<EuiFlexItem>
<SeverityStatusBadge status={vulnerability?.severity} />
</EuiFlexItem>
<EuiFlexItem>
<EuiFlexGroup
direction="column"
css={css`
gap: ${euiThemeVars.euiSizeS};
`}
>
<EuiFlexItem>
<EuiTitle
size="m"
css={css`
color: ${euiThemeVars.euiColorPrimaryText};
line-height: 32px;
`}
>
<EuiLink target={'_blank'} href={vulnerabilityReference}>
{vulnerability?.id}
</EuiLink>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem>
<p
css={css`
line-height: 20px;
margin-bottom: ${euiThemeVars.euiSizeM};
`}
>
{`${resourceName} | ${vulnerability?.package?.name} ${vulnerability?.package?.version}`}
</p>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
<EuiFlexItem>
<EuiTabs>{renderTabs()}</EuiTabs>
</EuiFlexItem>
</EuiFlexGroup>
</EuiSkeletonText>
</EuiFlyoutHeader>
<EuiFlyoutBody>{selectedTabContent}</EuiFlyoutBody>
<EuiFlyoutBody>
<EuiSkeletonText
lines={10}
size="m"
isLoading={isLoading}
contentAriaLabel={LOADING_ARIA_LABEL}
>
{selectedTabContent}
</EuiSkeletonText>
</EuiFlyoutBody>
<EuiFlyoutFooter>
<EuiFlexGroup gutterSize="none" justifyContent="flexEnd">
<EuiFlexItem grow={false}>

View file

@ -15,7 +15,8 @@ export const vulnerabilitiesColumns = {
cvss: 'vulnerability.score.base',
resource: 'resource.name',
severity: 'vulnerability.severity',
package_version: 'vulnerability.package.name',
package: 'vulnerability.package.name',
version: 'vulnerability.package.version',
fix_version: 'vulnerability.package.fixed_version',
};
@ -78,9 +79,17 @@ export const getVulnerabilitiesColumnsGrid = (
},
{
...defaultColumnProps(),
id: vulnerabilitiesColumns.package_version,
displayAsText: i18n.translate('xpack.csp.vulnerabilityTable.column.packageAndVersion', {
defaultMessage: 'Package and Version',
id: vulnerabilitiesColumns.package,
displayAsText: i18n.translate('xpack.csp.vulnerabilityTable.column.package', {
defaultMessage: 'Package',
}),
cellActions,
},
{
...defaultColumnProps(),
id: vulnerabilitiesColumns.version,
displayAsText: i18n.translate('xpack.csp.vulnerabilityTable.column.version', {
defaultMessage: 'Version',
}),
cellActions,
},

View file

@ -5748,48 +5748,9 @@
"unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoText": "Il semblerait que votre requête porte sur un champ imbriqué. Selon le résultat visé, il existe plusieurs façons de construire une syntaxe KQL pour des requêtes imbriquées. Apprenez-en plus dans notre {link}.",
"unifiedSearch.query.queryBar.searchInputAriaLabel": "Commencer à taper pour rechercher et filtrer la page {pageType}",
"unifiedSearch.query.queryBar.searchInputPlaceholder": "Filtrer vos données à l'aide de la syntaxe {language}",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} {count, plural, one {erreur} other {erreurs}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, one {ligne} other {lignes}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "Ligne {lineNumber}",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionTitle": "Supprimer \"{savedQueryName}\" ?",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonAriaLabel": "Enregistrer les modifications apportées à {title}",
"unifiedSearch.search.unableToGetSavedQueryToastTitle": "Impossible de charger la requête enregistrée {savedQueryId}",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### Add (+)\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\nRetourne la moyenne (moyenne arithmétique) des valeurs entrées.\n```\nAVG(numeric_field)\n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### Comparison (&lt;, &lt;=, >, >=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\nRenvoie le nombre total de toutes les valeurs non nulles en entrée. COUNT(<field_name>) et COUNT(ALL <field_name>) sont équivalents.\n\n```\nCOUNT(ALL field_name) \n```\n- nom du champ. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\nRenvoie le nombre total de valeurs non nulles distinctes dans les valeurs en entrée.\n\n```\nCOUNT(DISTINCT field_name)\n```\n- Entrée : un nom de champ.\n- Sortie : une valeur numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\nRenvoie le nombre total de valeurs en entrée.\n\n\n```\nCOUNT(expression)\n```\n- expression. Nom de champ, caractère générique (*) ou n'importe quelle valeur numérique. Pour COUNT(*) ou COUNT(<literal>), toutes les valeurs sont prises en compte, même celles manquantes ou nulles. Pour COUNT(<field_name>), les valeurs nulles ne sont pas prises en compte.\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### Divide (/)\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### Equality (=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\nRenvoie la première valeur non nulle (si elle existe) de la colonne d'entrée field_name triée selon la colonne ordering_field_name. Si la valeur ordering_field_name n'est pas fournie, seule la colonne field_name est utilisée pour le tri. \n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- Nom du champ : champ cible de l'agrégation\n- ordering_field_name : champ facultatif utilisé pour le tri.\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRST ne peut pas être utilisé dans une clause HAVING.\n- FIRST ne peut pas être utilisé avec des colonnes de type texte, sauf si le champ est aussi enregistré comme mot-clé.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### Inequality (&lt;> or !=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\nQuantifier la forme de la distribution des valeurs en entrée dans le champ field_name.\n\n```\nKURTOSIS(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSIS ne peut pas être utilisé en plus des fonctions ou des opérateurs scalaires, uniquement sur un champ. \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\nInverse de FIRST/FIRST_VALUE. Renvoie la dernière valeur non nulle (si elle existe) de la colonne d'entrée field_name triée par ordre croissant selon la colonne ordering_field_name. Si la valeur ordering_field_name n'est pas fournie, seule la colonne field_name est utilisée pour le tri. \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- Nom du champ : champ cible de l'agrégation\n- ordering_field_name : champ facultatif utilisé pour le tri.\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LAST ne peut pas être utilisé dans une clause HAVING.\n- LAST ne peut pas être utilisé avec des colonnes de type texte, sauf si le champ est aussi enregistré comme mot-clé.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\nMesure la variabilité des valeurs d'entrée dans le champ field_name.\n\n```\nMAD(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## À propos d'Elasticsearch SQL\n\nUtilisez Elasticsearch SQL pour rechercher et agréger les données dans Elasticsearch. Ce langage de requête fournit une recherche full text avec une syntaxe connue. Voici un exemple de requête :\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL :\n\n- Fournit un jeu complet d'opérateurs et de fonctions intégrés.\n- Suit la terminologie et les conventions SQL.\n- Accepte une commande par ligne. Une commande est une séquence de jetons terminée par la fin du flux d'entrée\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\nRetourne la valeur maximale de toutes les valeurs en entrée dans le champ field_name.\n\n```\nMAX(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\n- MAX sur un champ de type texte ou mot-clé est traduit en FIRST/FIRST_VALUE et ne peut donc pas être utilisé dans la clause HAVING.\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\nRetourne la valeur minimale de toutes les valeurs en entrée dans le champ field_name.\n\n```\nMIN(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\n- MIN sur un champ de type texte ou mot-clé est traduit en FIRST/FIRST_VALUE et ne peut donc pas être utilisé dans la clause HAVING.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Modulo or remainder(%)\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### Multiply (*)\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### Negate (unary -)\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null safe equality:\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n égal\n---------------\nfaux\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n égal\n---------------\nvrai\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\nRetourne le centile n (représenté par le paramètre numeric_exp) des valeurs en entrée dans le champ field_name.\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n- centile : expression numérique (doit être une constante et ne doit pas être basé sur un champ). Si la valeur est nulle, la fonction renvoie une valeur nulle.\n- method : chaîne littérale facultative pour l'algorithme de centile. Valeurs possibles : tdigest ou hdr. La valeur par défaut est tdigest.\n- method_parameter : numérique littéral facultatif qui configure l'algorithme de centile. Configure la compression pour tdigest ou number_of_significant_value_digits pour hdr. La valeur par défaut est la même que celle de l'algorithme de sauvegarde.\n\n```\nSELECT\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\nRetourne le rang centile n (représenté par le paramètre numeric_exp) des valeurs en entrée dans le champ field_name.\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n- centile : expression numérique (doit être une constante et ne doit pas être basé sur un champ). Si la valeur est nulle, la fonction renvoie une valeur nulle.\n- method : chaîne littérale facultative pour l'algorithme de centile. Valeurs possibles : tdigest ou hdr. La valeur par défaut est tdigest.\n- method_parameter : numérique littéral facultatif qui configure l'algorithme de centile. Configure la compression pour tdigest ou number_of_significant_value_digits pour hdr. La valeur par défaut est la même que celle de l'algorithme de sauvegarde.\n\n```\nSELECT\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\nQuantifier la distribution asymétrique des valeurs en entrée dans le champ field_name.\n\n```\nSKEWNESS(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\nRetourne l'écart type de population des valeurs en entrée dans le champ field_name.\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\nRetourne l'écart type de l'échantillon des valeurs en entrée dans le champ field_name.\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### Subtract (infix -)\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\nRetourne la somme des valeurs en entrée dans le champ field_name.\n\n```\nSUM(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\nRetourne la somme des carrés des valeurs en entrée dans le champ field_name.\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\nRetourne la variance de population des valeurs en entrée dans le champ field_name.\n\n```\nVAR_POP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\nRetourne la variance de l'échantillon de valeurs en entrée dans le champ field_name.\n\n```\nVAR_SAMP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"unifiedSearch.filter.applyFilterActionTitle": "Appliquer le filtre à la vue en cours",
"unifiedSearch.filter.applyFilters.popupHeader": "Sélectionner les filtres à appliquer",
"unifiedSearch.filter.applyFiltersPopup.cancelButtonLabel": "Annuler",
@ -5912,6 +5873,67 @@
"unifiedSearch.query.queryBar.searchInputPlaceholderForText": "Filtrer vos données",
"unifiedSearch.query.queryBar.syntaxOptionsTitle": "Options de syntaxe",
"unifiedSearch.query.queryBar.textBasedLanguagesTechPreviewLabel": "Version d'évaluation technique",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "Actualiser la requête",
"unifiedSearch.queryBarTopRow.submitButton.run": "Exécuter la requête",
"unifiedSearch.queryBarTopRow.submitButton.update": "Nécessite une mise à jour",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "Enregistrez le texte et les filtres de la requête que vous souhaitez réutiliser.",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "Ce nom est en conflit avec une requête existante",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "Un nom est requis.",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "Enregistrer la requête",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "Inclure les filtres",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "Inclure le filtre temporel",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "Le nom ne peut pas contenir d'espace au début ni à la fin, et il doit être unique.",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "Nom",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "Aucune requête enregistrée.",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "Charger la requête",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "Annuler",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "Supprimer",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "Gérer les objets enregistrés",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "Enregistrer en tant que nouvelle requête",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "Enregistrer en tant que nouvelle",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "Mettre à jour la recherche",
"unifiedSearch.switchLanguage.buttonText": "Bouton de changement de langue.",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "Mettre à jour les références de filtre",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "Mettre à jour les références de filtre",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} {count, plural, one {erreur} other {erreurs}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, one {ligne} other {lignes}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "Ligne {lineNumber}",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### Add (+)\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\nRetourne la moyenne (moyenne arithmétique) des valeurs entrées.\n```\nAVG(numeric_field)\n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### Comparison (&lt;, &lt;=, >, >=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\nRenvoie le nombre total de toutes les valeurs non nulles en entrée. COUNT(<field_name>) et COUNT(ALL <field_name>) sont équivalents.\n\n```\nCOUNT(ALL field_name) \n```\n- nom du champ. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\nRenvoie le nombre total de valeurs non nulles distinctes dans les valeurs en entrée.\n\n```\nCOUNT(DISTINCT field_name)\n```\n- Entrée : un nom de champ.\n- Sortie : une valeur numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\nRenvoie le nombre total de valeurs en entrée.\n\n\n```\nCOUNT(expression)\n```\n- expression. Nom de champ, caractère générique (*) ou n'importe quelle valeur numérique. Pour COUNT(*) ou COUNT(<literal>), toutes les valeurs sont prises en compte, même celles manquantes ou nulles. Pour COUNT(<field_name>), les valeurs nulles ne sont pas prises en compte.\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### Divide (/)\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### Equality (=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\nRenvoie la première valeur non nulle (si elle existe) de la colonne d'entrée field_name triée selon la colonne ordering_field_name. Si la valeur ordering_field_name n'est pas fournie, seule la colonne field_name est utilisée pour le tri. \n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- Nom du champ : champ cible de l'agrégation\n- ordering_field_name : champ facultatif utilisé pour le tri.\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRST ne peut pas être utilisé dans une clause HAVING.\n- FIRST ne peut pas être utilisé avec des colonnes de type texte, sauf si le champ est aussi enregistré comme mot-clé.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### Inequality (&lt;> or !=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\nQuantifier la forme de la distribution des valeurs en entrée dans le champ field_name.\n\n```\nKURTOSIS(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSIS ne peut pas être utilisé en plus des fonctions ou des opérateurs scalaires, uniquement sur un champ. \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\nInverse de FIRST/FIRST_VALUE. Renvoie la dernière valeur non nulle (si elle existe) de la colonne d'entrée field_name triée par ordre croissant selon la colonne ordering_field_name. Si la valeur ordering_field_name n'est pas fournie, seule la colonne field_name est utilisée pour le tri. \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- Nom du champ : champ cible de l'agrégation\n- ordering_field_name : champ facultatif utilisé pour le tri.\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LAST ne peut pas être utilisé dans une clause HAVING.\n- LAST ne peut pas être utilisé avec des colonnes de type texte, sauf si le champ est aussi enregistré comme mot-clé.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\nMesure la variabilité des valeurs d'entrée dans le champ field_name.\n\n```\nMAD(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## À propos d'Elasticsearch SQL\n\nUtilisez Elasticsearch SQL pour rechercher et agréger les données dans Elasticsearch. Ce langage de requête fournit une recherche full text avec une syntaxe connue. Voici un exemple de requête :\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL :\n\n- Fournit un jeu complet d'opérateurs et de fonctions intégrés.\n- Suit la terminologie et les conventions SQL.\n- Accepte une commande par ligne. Une commande est une séquence de jetons terminée par la fin du flux d'entrée\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\nRetourne la valeur maximale de toutes les valeurs en entrée dans le champ field_name.\n\n```\nMAX(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\n- MAX sur un champ de type texte ou mot-clé est traduit en FIRST/FIRST_VALUE et ne peut donc pas être utilisé dans la clause HAVING.\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\nRetourne la valeur minimale de toutes les valeurs en entrée dans le champ field_name.\n\n```\nMIN(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\n- MIN sur un champ de type texte ou mot-clé est traduit en FIRST/FIRST_VALUE et ne peut donc pas être utilisé dans la clause HAVING.\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Modulo or remainder(%)\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### Multiply (*)\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### Negate (unary -)\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null safe equality:\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n égal\n---------------\nfaux\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n égal\n---------------\nvrai\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\nRetourne le centile n (représenté par le paramètre numeric_exp) des valeurs en entrée dans le champ field_name.\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n- centile : expression numérique (doit être une constante et ne doit pas être basé sur un champ). Si la valeur est nulle, la fonction renvoie une valeur nulle.\n- method : chaîne littérale facultative pour l'algorithme de centile. Valeurs possibles : tdigest ou hdr. La valeur par défaut est tdigest.\n- method_parameter : numérique littéral facultatif qui configure l'algorithme de centile. Configure la compression pour tdigest ou number_of_significant_value_digits pour hdr. La valeur par défaut est la même que celle de l'algorithme de sauvegarde.\n\n```\nSELECT\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\nRetourne le rang centile n (représenté par le paramètre numeric_exp) des valeurs en entrée dans le champ field_name.\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n- centile : expression numérique (doit être une constante et ne doit pas être basé sur un champ). Si la valeur est nulle, la fonction renvoie une valeur nulle.\n- method : chaîne littérale facultative pour l'algorithme de centile. Valeurs possibles : tdigest ou hdr. La valeur par défaut est tdigest.\n- method_parameter : numérique littéral facultatif qui configure l'algorithme de centile. Configure la compression pour tdigest ou number_of_significant_value_digits pour hdr. La valeur par défaut est la même que celle de l'algorithme de sauvegarde.\n\n```\nSELECT\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\nQuantifier la distribution asymétrique des valeurs en entrée dans le champ field_name.\n\n```\nSKEWNESS(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\nRetourne l'écart type de population des valeurs en entrée dans le champ field_name.\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\nRetourne l'écart type de l'échantillon des valeurs en entrée dans le champ field_name.\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### Subtract (infix -)\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\nRetourne la somme des valeurs en entrée dans le champ field_name.\n\n```\nSUM(field_name) \n```\n- champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\nRetourne la somme des carrés des valeurs en entrée dans le champ field_name.\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\nRetourne la variance de population des valeurs en entrée dans le champ field_name.\n\n```\nVAR_POP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\nRetourne la variance de l'échantillon de valeurs en entrée dans le champ field_name.\n\n```\nVAR_SAMP(field_name) \n```\n- field_name : champ numérique. Si ce champ contient uniquement des valeurs nulles, la fonction renvoie zéro. Sinon, la fonction ignore les valeurs nulles dans ce champ.\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctions": "Fonctions agrégées",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctionsDocumentationDescription": "Fonctions permettant de calculer un résultat unique à partir d'un ensemble de valeurs d'entrée. Elasticsearch SQL ne prend en charge les fonctions agrégées que parallèlement au regroupement (implicite ou explicite).",
"textBasedEditor.query.textBasedLanguagesEditor.comparisonOperators": "Opérateurs de comparaison",
@ -5964,28 +5986,6 @@
"textBasedEditor.query.textBasedLanguagesEditor.MinimizeEditor": "Réduire l'éditeur",
"textBasedEditor.query.textBasedLanguagesEditor.minimizeTooltip": "Réduire léditeur de requête",
"textBasedEditor.query.textBasedLanguagesEditor.runQuery": "Exécuter la requête",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "Actualiser la requête",
"unifiedSearch.queryBarTopRow.submitButton.run": "Exécuter la requête",
"unifiedSearch.queryBarTopRow.submitButton.update": "Nécessite une mise à jour",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "Enregistrez le texte et les filtres de la requête que vous souhaitez réutiliser.",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "Ce nom est en conflit avec une requête existante",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "Un nom est requis.",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "Enregistrer la requête",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "Inclure les filtres",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "Inclure le filtre temporel",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "Le nom ne peut pas contenir d'espace au début ni à la fin, et il doit être unique.",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "Nom",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "Aucune requête enregistrée.",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "Charger la requête",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "Annuler",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "Supprimer",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "Gérer les objets enregistrés",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "Enregistrer en tant que nouvelle requête",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "Enregistrer en tant que nouvelle",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "Mettre à jour la recherche",
"unifiedSearch.switchLanguage.buttonText": "Bouton de changement de langue.",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "Mettre à jour les références de filtre",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "Mettre à jour les références de filtre",
"userProfileComponents.userProfilesSelectable.limitReachedMessage": "Vous avez sélectionné la limite maximale de {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}}",
"userProfileComponents.userProfilesSelectable.selectedStatusMessage": "{count, plural, one {# utilisateur sélectionné} many {# utilisateurs sélectionnés} other {# utilisateurs sélectionnés}}",
"userProfileComponents.userProfilesSelectable.clearButtonLabel": "Retirer tous les utilisateurs",
@ -11372,7 +11372,6 @@
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.dataSource": "Source de données",
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.publishedDate": "Date de publication",
"xpack.csp.vulnerabilityTable.column.fixVersion": "Version du correctif",
"xpack.csp.vulnerabilityTable.column.packageAndVersion": "Package et version",
"xpack.csp.vulnerabilityTable.column.resource": "Ressource",
"xpack.csp.vulnerabilityTable.column.severity": "Sévérité",
"xpack.csp.vulnerabilityTable.column.vulnerability": "Vulnérabilité",
@ -39775,4 +39774,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "Présentation"
}
}
}

View file

@ -5749,48 +5749,9 @@
"unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoText": "ネストされたフィールドをクエリされているようです。ネストされたクエリに対しては、ご希望の結果により異なる方法でKQL構文を構築することができます。{link}で詳細をご覧ください。",
"unifiedSearch.query.queryBar.searchInputAriaLabel": "{pageType}ページの検索とフィルタリングを行うには入力を開始してください",
"unifiedSearch.query.queryBar.searchInputPlaceholder": "{language}構文を使用してデータをフィルタリング",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} {count, plural, other {エラー}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, other {行}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "行{lineNumber}",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionTitle": "\"{savedQueryName}\"を削除しますか?",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonAriaLabel": "{title}への変更を保存",
"unifiedSearch.search.unableToGetSavedQueryToastTitle": "保存したクエリ{savedQueryId}を読み込めません",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### 加算(+\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\n入力値の平均算術平均が返されます。\n```\nAVG(numeric_field)\n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### 比較(&lt;、&lt;=、>、>=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\nすべてのヌル以外の入力値の合計数カウントが返されます。COUNT(<field_name>) and COUNT(ALL <field_name>) are equivalent.\n\n```\nCOUNT(ALL field_name) \n```\n- フィールド名。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\n入力値の重複しないヌル以外の値の合計数が返されます。\n\n```\nCOUNT(DISTINCT field_name)\n```\n- 入力:フィールド名。\n- 出力:数値。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\n入力値の合計数カウントが返されます。\n\n\n```\nCOUNT(式)\n```\n- 式。フィールド名、ワイルドカード(*、または任意の数値。COUNT(*)またはCOUNT(<literal>)の場合、ヌルや不足している値を含むすべての値が考慮されます。COUNT(<field_name>)の場合、ヌル値は考慮されません。\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### 除算(/\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### 等号(=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\nfield_name入力列の最初のヌル以外の値存在する場合が、ordering_field_name列でソートされて返されます。ordering_field_nameが指定されていない場合は、field_name列のみがソートで使用されます。\n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- フィールド名:集計の対象フィールド\n- ordering_field_name並べ替えで使用される任意のフィールド。\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRSTはHAVING句で使用できません。\n- フィールドがキーワードとして保存されていない場合、FIRSTはテキスト型の列で使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### 不等号(&lt;>または!=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\nfield_nameフィールドの入力値の分布の形状を定量化します。\n\n```\nKURTOSIS(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSISは、スカラー関数または演算子に対して使用できません。直接フィールドに対してのみ使用できます。 \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\nFIRST/FIRST_VALUEの反転です。field_name入力列の最後のヌル以外の値存在する場合が、ordering_field_name列で降順にソートされて返されます。ordering_field_nameが指定されていない場合は、field_name列のみがソートで使用されます。 \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- フィールド名:集計の対象フィールド\n- ordering_field_name並べ替えで使用される任意のフィールド。\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LASTはHAVING句で使用できません。\n- フィールドがキーワードとして保存されていない場合、LASTはテキスト型の列で使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\nfield_nameフィールドの入力値の変化を測定します。\n\n```\nMAD(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## Elasticsearch SQLについてさらに詳しく\n\nElasticsearch SQLを使用すると、Elasticsearch内部でデータの検索と集計ができます。このクエリ言語では、使い慣れた構文で全文検索が可能です。クエリの例は次のとおりです。\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL | \n\n- 演算子と関数の包括的なセットが組み込まれています。\n- SQLの用語と規則に従います。\n- 各行に1つのコマンドを入力できます。コマンドは、入力ストリームの最後に終了する一連の文字です。\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\nfield_nameフィールドの入力値の最大値が返されます。\n\n```\nMAX(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\nテキスト型やキーワード型のフィールドに対するMAXはFIRST/FIRST_VALUEに変換されるため、HAVING句では使用できません。\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\nfield_nameフィールドの入力値の最小値が返されます。\n\n```\nMIN(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\nテキスト型やキーワード型のフィールドに対するINはFIRST/FIRST_VALUEに変換されるため、HAVING句では使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Moduloまたは剰余%\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### 乗算(*\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### 否定(単項-\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null宇宙船演算子\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n 一致する\n---------------\nfalse\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n 一致する\n---------------\ntrue\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\nfield_nameフィールドの入力値のnumeric_expパラメーターで表現された第nパーセンタイルが返されます。\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n- percentile : 数式(フィールドに基づくのではなく、定数でなければなりません)。ヌルの場合、ヌルが返されます。\n- method : パーセンタイルアルゴリズムの任意の文字列リテラル。使用可能な値tdigestまたはhdr。デフォルトはtdigestです。\n- method_parameterパーセンタイルアルゴリズムを構成する任意の数値リテラル。tdigestの圧縮またはhdrのnumber_of_significant_value_digitsを構成します。デフォルトは、基本のアルゴリズムと同じです。\n\n```\nSELECT\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\nfield_nameフィールドの入力値のnumeric_expパラメーターで表現された第nパーセンタイルランクが返されます。\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n- percentile : 数式(フィールドに基づくのではなく、定数でなければなりません)。ヌルの場合、ヌルが返されます。\n- method : パーセンタイルアルゴリズムの任意の文字列リテラル。使用可能な値tdigestまたはhdr。デフォルトはtdigestです。\n- method_parameterパーセンタイルアルゴリズムを構成する任意の数値リテラル。tdigestの圧縮またはhdrのnumber_of_significant_value_digitsを構成します。デフォルトは、基本のアルゴリズムと同じです。\n\n```\nSELECT\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\nfield_nameフィールドの入力値の非対称分布を定量化します。\n\n```\nSKEWNESS(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\nfield_nameフィールドの入力値の母標準偏差が返されます。\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\nfield_nameフィールドの入力値の標本標準偏差が返されます。\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### 減算infix -\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\nfield_nameフィールドの入力値の合計が返されます。\n\n```\nSUM(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\nfield_nameフィールドの入力値の平方根の合計が返されます。\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\nfield_nameフィールドの入力値の母分散が返されます。\n\n```\nVAR_POP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\nfield_nameフィールドの入力値の標本分散が返されます。\n\n```\nVAR_SAMP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"unifiedSearch.filter.applyFilterActionTitle": "現在のビューにフィルターを適用",
"unifiedSearch.filter.applyFilters.popupHeader": "適用するフィルターの選択",
"unifiedSearch.filter.applyFiltersPopup.cancelButtonLabel": "キャンセル",
@ -5913,6 +5874,67 @@
"unifiedSearch.query.queryBar.searchInputPlaceholderForText": "データのフィルタリング",
"unifiedSearch.query.queryBar.syntaxOptionsTitle": "構文オプション",
"unifiedSearch.query.queryBar.textBasedLanguagesTechPreviewLabel": "テクニカルプレビュー",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "クエリの更新",
"unifiedSearch.queryBarTopRow.submitButton.run": "クエリを実行",
"unifiedSearch.queryBarTopRow.submitButton.update": "更新が必要です",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "再度使用するクエリテキストとフィルターを保存します。",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "名前が既存のクエリと競合しています",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "名前が必要です。",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "クエリを保存",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "フィルターを含める",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "時間フィルターを含める",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "名前の始めと終わりにはスペースを使用できません。名前は一意でなければなりません。",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "名前",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "保存されたクエリがありません。",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "クエリを読み込む",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "キャンセル",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "削除",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "保存されたオブジェクトを管理",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "新しいクエリとして保存",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "新規保存",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "クエリの更新",
"unifiedSearch.switchLanguage.buttonText": "言語の切り替えボタン。",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "フィルター参照を更新",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "フィルター参照を更新",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} {count, plural, other {エラー}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, other {行}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "行{lineNumber}",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### 加算(+\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\n入力値の平均算術平均が返されます。\n```\nAVG(numeric_field)\n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### 比較(&lt;、&lt;=、>、>=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\nすべてのヌル以外の入力値の合計数カウントが返されます。COUNT(<field_name>) and COUNT(ALL <field_name>) are equivalent.\n\n```\nCOUNT(ALL field_name) \n```\n- フィールド名。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\n入力値の重複しないヌル以外の値の合計数が返されます。\n\n```\nCOUNT(DISTINCT field_name)\n```\n- 入力:フィールド名。\n- 出力:数値。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\n入力値の合計数カウントが返されます。\n\n\n```\nCOUNT(式)\n```\n- 式。フィールド名、ワイルドカード(*、または任意の数値。COUNT(*)またはCOUNT(<literal>)の場合、ヌルや不足している値を含むすべての値が考慮されます。COUNT(<field_name>)の場合、ヌル値は考慮されません。\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### 除算(/\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### 等号(=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\nfield_name入力列の最初のヌル以外の値存在する場合が、ordering_field_name列でソートされて返されます。ordering_field_nameが指定されていない場合は、field_name列のみがソートで使用されます。\n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- フィールド名:集計の対象フィールド\n- ordering_field_name並べ替えで使用される任意のフィールド。\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRSTはHAVING句で使用できません。\n- フィールドがキーワードとして保存されていない場合、FIRSTはテキスト型の列で使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### 不等号(&lt;>または!=\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\nfield_nameフィールドの入力値の分布の形状を定量化します。\n\n```\nKURTOSIS(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSISは、スカラー関数または演算子に対して使用できません。直接フィールドに対してのみ使用できます。 \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\nFIRST/FIRST_VALUEの反転です。field_name入力列の最後のヌル以外の値存在する場合が、ordering_field_name列で降順にソートされて返されます。ordering_field_nameが指定されていない場合は、field_name列のみがソートで使用されます。 \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- フィールド名:集計の対象フィールド\n- ordering_field_name並べ替えで使用される任意のフィールド。\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LASTはHAVING句で使用できません。\n- フィールドがキーワードとして保存されていない場合、LASTはテキスト型の列で使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\nfield_nameフィールドの入力値の変化を測定します。\n\n```\nMAD(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## Elasticsearch SQLについてさらに詳しく\n\nElasticsearch SQLを使用すると、Elasticsearch内部でデータの検索と集計ができます。このクエリ言語では、使い慣れた構文で全文検索が可能です。クエリの例は次のとおりです。\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL | \n\n- 演算子と関数の包括的なセットが組み込まれています。\n- SQLの用語と規則に従います。\n- 各行に1つのコマンドを入力できます。コマンドは、入力ストリームの最後に終了する一連の文字です。\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\nfield_nameフィールドの入力値の最大値が返されます。\n\n```\nMAX(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\nテキスト型やキーワード型のフィールドに対するMAXはFIRST/FIRST_VALUEに変換されるため、HAVING句では使用できません。\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\nfield_nameフィールドの入力値の最小値が返されます。\n\n```\nMIN(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\nテキスト型やキーワード型のフィールドに対するINはFIRST/FIRST_VALUEに変換されるため、HAVING句では使用できません。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Moduloまたは剰余%\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### 乗算(*\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### 否定(単項-\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null宇宙船演算子\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n 一致する\n---------------\nfalse\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n 一致する\n---------------\ntrue\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\nfield_nameフィールドの入力値のnumeric_expパラメーターで表現された第nパーセンタイルが返されます。\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n- percentile : 数式(フィールドに基づくのではなく、定数でなければなりません)。ヌルの場合、ヌルが返されます。\n- method : パーセンタイルアルゴリズムの任意の文字列リテラル。使用可能な値tdigestまたはhdr。デフォルトはtdigestです。\n- method_parameterパーセンタイルアルゴリズムを構成する任意の数値リテラル。tdigestの圧縮またはhdrのnumber_of_significant_value_digitsを構成します。デフォルトは、基本のアルゴリズムと同じです。\n\n```\nSELECT\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\nfield_nameフィールドの入力値のnumeric_expパラメーターで表現された第nパーセンタイルランクが返されます。\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n- percentile : 数式(フィールドに基づくのではなく、定数でなければなりません)。ヌルの場合、ヌルが返されます。\n- method : パーセンタイルアルゴリズムの任意の文字列リテラル。使用可能な値tdigestまたはhdr。デフォルトはtdigestです。\n- method_parameterパーセンタイルアルゴリズムを構成する任意の数値リテラル。tdigestの圧縮またはhdrのnumber_of_significant_value_digitsを構成します。デフォルトは、基本のアルゴリズムと同じです。\n\n```\nSELECT\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\nfield_nameフィールドの入力値の非対称分布を定量化します。\n\n```\nSKEWNESS(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\nfield_nameフィールドの入力値の母標準偏差が返されます。\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\nfield_nameフィールドの入力値の標本標準偏差が返されます。\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### 減算infix -\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\nfield_nameフィールドの入力値の合計が返されます。\n\n```\nSUM(field_name) \n```\n- 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\nfield_nameフィールドの入力値の平方根の合計が返されます。\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\nfield_nameフィールドの入力値の母分散が返されます。\n\n```\nVAR_POP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\nfield_nameフィールドの入力値の標本分散が返されます。\n\n```\nVAR_SAMP(field_name) \n```\n- field_name : 数値フィールド。このフィールドにヌル値のみが入力されている場合、関数によってヌルが返されます。そうでない場合は、このフィールドのヌル値は無視されます。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctions": "集計関数",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctionsDocumentationDescription": "複数の入力値のセットから単一の結果を計算するための関数。Elasticsearch SQLでは、集計関数は明示的または暗黙的なグループ化を行った場合にのみ使用できます。",
"textBasedEditor.query.textBasedLanguagesEditor.comparisonOperators": "比較演算子",
@ -5965,28 +5987,6 @@
"textBasedEditor.query.textBasedLanguagesEditor.MinimizeEditor": "エディターを最小化",
"textBasedEditor.query.textBasedLanguagesEditor.minimizeTooltip": "クエリエディターを縮小",
"textBasedEditor.query.textBasedLanguagesEditor.runQuery": "クエリを実行",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "クエリの更新",
"unifiedSearch.queryBarTopRow.submitButton.run": "クエリを実行",
"unifiedSearch.queryBarTopRow.submitButton.update": "更新が必要です",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "再度使用するクエリテキストとフィルターを保存します。",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "名前が既存のクエリと競合しています",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "名前が必要です。",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "クエリを保存",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "フィルターを含める",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "時間フィルターを含める",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "名前の始めと終わりにはスペースを使用できません。名前は一意でなければなりません。",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "名前",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "保存されたクエリがありません。",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "クエリを読み込む",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "キャンセル",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "削除",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "保存されたオブジェクトを管理",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "新しいクエリとして保存",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "新規保存",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "クエリの更新",
"unifiedSearch.switchLanguage.buttonText": "言語の切り替えボタン。",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "フィルター参照を更新",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "フィルター参照を更新",
"userProfileComponents.userProfilesSelectable.limitReachedMessage": "{count, plural, other {#人のユーザー}}の最大数を選択しました",
"userProfileComponents.userProfilesSelectable.selectedStatusMessage": "{count, plural, other {#人のユーザーが選択されました}}",
"userProfileComponents.userProfilesSelectable.clearButtonLabel": "すべてのユーザーを削除",
@ -11372,7 +11372,6 @@
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.dataSource": "データソース",
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.publishedDate": "公開日",
"xpack.csp.vulnerabilityTable.column.fixVersion": "修正バージョン",
"xpack.csp.vulnerabilityTable.column.packageAndVersion": "パッケージとバージョン",
"xpack.csp.vulnerabilityTable.column.resource": "リソース",
"xpack.csp.vulnerabilityTable.column.severity": "深刻度",
"xpack.csp.vulnerabilityTable.column.vulnerability": "脆弱性",
@ -39745,4 +39744,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "実地検証"
}
}
}

View file

@ -5748,48 +5748,9 @@
"unifiedSearch.query.queryBar.KQLNestedQuerySyntaxInfoText": "似乎您正在查询嵌套字段。您可以使用不同的方式构造嵌套查询的 KQL 语法,具体取决于您想要的结果。详细了解我们的 {link}。",
"unifiedSearch.query.queryBar.searchInputAriaLabel": "开始键入内容,以搜索并筛选 {pageType} 页面",
"unifiedSearch.query.queryBar.searchInputPlaceholder": "使用 {language} 语法筛选数据",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} 个{count, plural, other {错误}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, other {行}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "第 {lineNumber} 行",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionTitle": "删除“{savedQueryName}”?",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonAriaLabel": "将更改保存到 {title}",
"unifiedSearch.search.unableToGetSavedQueryToastTitle": "无法加载已保存查询 {savedQueryId}",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### Add (+)\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\n返回输入值的算术平均值。\n```\nAVG(numeric_field)\n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### Comparison (&lt;, &lt;=, >, >=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\n返回所有非 null 输入值的总数计数。COUNT(<field_name>) 与 COUNT(ALL <field_name>) 等价。\n\n```\nCOUNT(ALL field_name) \n```\n- 字段名称。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\n返回输入值中的不同非 null 值的总数。\n\n```\nCOUNT(DISTINCT field_name)\n```\n- 输入:字段名称。\n- 输出:数字值。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\n返回输入值的总数计数。\n\n\n```\nCOUNT(expression)\n```\n- 表达式为字段名称、通配符 (*) 或任何数字值。对于 COUNT(*) 或 COUNT(<literal>),将考虑所有值,包括 null 或缺失的值。对于 COUNT(<field_name>),将不考虑 null 值。\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### Divide (/)\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### Equality (=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\n返回按 ordering_field_name 列排序的 field_name 输入列中的第一个非 null 值(如果存在)。如果未提供 ordering_field_name则仅 field_name 列用于排序。\n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- 字段名称:用于聚合的目标字段\n- ordering_field_name用于排序的可选字段。\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRST 不能用在 HAVING 子句中。\n- FIRST 不能用于文本类型的列,除非也将该字段另存为关键字。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### Inequality (&lt;> or !=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\n量化字段 field_name 中输入值的分布形状。\n\n```\nKURTOSIS(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSIS 不能用于标量函数或运算符上面,而只能直接用于字段。 \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\n这是 FIRST/FIRST_VALUE 的反向函数。返回按 ordering_field_name 列降序排序的 field_name 输入列中的最后一个非 null 值(如果存在)。如果未提供 ordering_field_name则仅 field_name 列用于排序。 \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- 字段名称:用于聚合的目标字段\n- ordering_field_name用于排序的可选字段。\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LAST 不能用在 HAVING 子句中。\n- LAST 不能用于文本类型的列,除非也将该字段另存为关键字。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\n衡量字段 field_name 中输入值的可变性。\n\n```\nMAD(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## 关于 Elasticsearch SQL\n\n使用 Elasticsearch SQL 在 Elasticsearch 内部搜索并聚合数据。此查询语言通过熟悉的语法提供了全文本搜索。这里提供了一个查询示例:\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL\n\n- 提供了一组全面的内置运算符和函数。\n- 遵循 SQL 术语和约定。\n- 每行接受一个命令。命令指通过结束输入流终止的一连串令牌\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\n返回字段 field_name 中所有输入值的最大值。\n\n```\nMAX(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\n- 类型为文本或关键字的字段的 MAX 将转换为 FIRST/FIRST_VALUE因此不能用在 HAVING 子句中。\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\n返回字段 field_name 中所有输入值的最小值。\n\n```\nMIN(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\n- 类型为文本或关键字的字段的 MIN 将转换为 FIRST/FIRST_VALUE因此不能用在 HAVING 子句中。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Modulo or remainder(%)\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### Multiply (*)\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### Negate (unary -)\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null safe equality:\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n 等于\n---------------\nfalse\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n 等于\n---------------\ntrue\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\n返回字段 field_name 中输入值的第 n 个百分位(用 numeric_exp 参数表示)。\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n- 百分位数:数字表达式(必须为常数并且不得基于字段)。如果为 null该函数将返回 null。\n- 方法百分位数算法的可选字符串文本。可能的值tdigest 或 hdr。默认值为 tdigest。\n- method_parameter配置百分位数算法的可选数字文本。为 tdigest 配置表达式,或为 hdr 配置 number_of_significant_value_digits。默认值与后备算法的默认值相同。\n\n```\n精选\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\n返回字段 field_name 中输入值的第 n 个百分位等级(用 numeric_exp 参数表示)。\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n- 百分位数:数字表达式(必须为常数并且不得基于字段)。如果为 null该函数将返回 null。\n- 方法百分位数算法的可选字符串文本。可能的值tdigest 或 hdr。默认值为 tdigest。\n- method_parameter配置百分位数算法的可选数字文本。为 tdigest 配置表达式,或为 hdr 配置 number_of_significant_value_digits。默认值与后备算法的默认值相同。\n\n```\n精选\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\n量化字段 field_name 中输入值的非对称分布。\n\n```\nSKEWNESS(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\n返回字段 field_name 中输入值的填充标准偏差。\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\n返回字段 field_name 中输入值的样例标准偏差。\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### Subtract (infix -)\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\n返回字段 field_name 中所有输入值的总和。\n\n```\nSUM(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\n返回字段 field_name 中输入值的平方和。\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\n返回字段 field_name 中输入值的总体方差。\n\n```\nVAR_POP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\n返回字段 field_name 中输入值的样例方差。\n\n```\nVAR_SAMP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"unifiedSearch.filter.applyFilterActionTitle": "将筛选应用于当前视图",
"unifiedSearch.filter.applyFilters.popupHeader": "选择要应用的筛选",
"unifiedSearch.filter.applyFiltersPopup.cancelButtonLabel": "取消",
@ -5912,6 +5873,67 @@
"unifiedSearch.query.queryBar.searchInputPlaceholderForText": "筛选您的数据",
"unifiedSearch.query.queryBar.syntaxOptionsTitle": "语法选项",
"unifiedSearch.query.queryBar.textBasedLanguagesTechPreviewLabel": "技术预览",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "刷新查询",
"unifiedSearch.queryBarTopRow.submitButton.run": "运行查询",
"unifiedSearch.queryBarTopRow.submitButton.update": "需要更新",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "保存想要再次使用的查询文本和筛选。",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "名称与现有查询有冲突",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "“名称”必填。",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "保存查询",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "包括筛选",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "包括时间筛选",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "名称不能包含前导或尾随空格,并且必须唯一。",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "名称",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "无已保存查询。",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "加载查询",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "取消",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "删除",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "管理已保存对象",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "另存为新查询",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "另存为新的",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "更新查询",
"unifiedSearch.switchLanguage.buttonText": "切换语言按钮。",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "更新筛选参考",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "更新筛选参考",
"textBasedEditor.query.textBasedLanguagesEditor.errorCount": "{count} 个{count, plural, other {错误}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineCount": "{count} {count, plural, other {行}}",
"textBasedEditor.query.textBasedLanguagesEditor.lineNumber": "第 {lineNumber} 行",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.addOperator.markdown": "### Add (+)\n```\nSELECT 1 + 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.andOperator.markdown": "### AND\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no > 10000 AND emp_no &lt; 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.averageFunction.markdown": "### AVG\n返回输入值的算术平均值。\n```\nAVG(numeric_field)\n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT AVG(salary) AS avg FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.between.markdown": "### Between\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no BETWEEN 9990 AND 10003 ORDER BY emp_no\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.comparison.markdown": "### Comparison (&lt;, &lt;=, >, >=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countAllFunction.markdown": "### Count (All)\n返回所有非 null 输入值的总数计数。COUNT(<field_name>) 与 COUNT(ALL <field_name>) 等价。\n\n```\nCOUNT(ALL field_name) \n```\n- 字段名称。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT COUNT(ALL last_name) AS count_all, COUNT(DISTINCT last_name) count_distinct FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countDistinctFunction.markdown": "### Count (Distinct)\n返回输入值中的不同非 null 值的总数。\n\n```\nCOUNT(DISTINCT field_name)\n```\n- 输入:字段名称。\n- 输出:数字值。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n```\nSELECT COUNT(DISTINCT hire_date) unique_hires, COUNT(hire_date) AS hires FROM emp\n\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.countFunction.markdown": "### Count\n返回输入值的总数计数。\n\n\n```\nCOUNT(expression)\n```\n- 表达式为字段名称、通配符 (*) 或任何数字值。对于 COUNT(*) 或 COUNT(<literal>),将考虑所有值,包括 null 或缺失的值。对于 COUNT(<field_name>),将不考虑 null 值。\n```\nSELECT COUNT(*) AS count FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.divideOperator.markdown": "### Divide (/)\n```\nSELECT 6 / 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.equality.markdown": "### Equality (=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.firstFunction.markdown": "### FIRST / FIRST_VALUE\n返回按 ordering_field_name 列排序的 field_name 输入列中的第一个非 null 值(如果存在)。如果未提供 ordering_field_name则仅 field_name 列用于排序。\n\n```\nFIRST(\n field_name \n [, ordering_field_name])\n```\n- 字段名称:用于聚合的目标字段\n- ordering_field_name用于排序的可选字段。\n\n```\nSELECT gender, FIRST(first_name, birth_date) FROM emp GROUP BY gender ORDER BY gender\n```\n\n- FIRST 不能用在 HAVING 子句中。\n- FIRST 不能用于文本类型的列,除非也将该字段另存为关键字。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inequality.markdown": "### Inequality (&lt;> or !=)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt;> 10000 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.inOperator.markdown": "### IN (<value1>, <value2>, ...)\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IN (10000, 10001, 10002, 999) ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.kurtosisFunction.markdown": "### KURTOSIS\n量化字段 field_name 中输入值的分布形状。\n\n```\nKURTOSIS(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, KURTOSIS(salary) AS k FROM emp\n```\n\n- KURTOSIS 不能用于标量函数或运算符上面,而只能直接用于字段。 \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.lastFunction.markdown": "### LAST / LAST_VALUE\n这是 FIRST/FIRST_VALUE 的反向函数。返回按 ordering_field_name 列降序排序的 field_name 输入列中的最后一个非 null 值(如果存在)。如果未提供 ordering_field_name则仅 field_name 列用于排序。 \n\n```\nLAST(\n field_name \n [, ordering_field_name])\n```\n- 字段名称:用于聚合的目标字段\n- ordering_field_name用于排序的可选字段。\n```\nSELECT gender, LAST(first_name) FROM emp GROUP BY gender ORDER BY gender\n```\n- LAST 不能用在 HAVING 子句中。\n- LAST 不能用于文本类型的列,除非也将该字段另存为关键字。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.madFunction.markdown": "### MAD\n衡量字段 field_name 中输入值的可变性。\n\n```\nMAD(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg, MAD(salary) AS mad FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.markdown": "## 关于 Elasticsearch SQL\n\n使用 Elasticsearch SQL 在 Elasticsearch 内部搜索并聚合数据。此查询语言通过熟悉的语法提供了全文本搜索。这里提供了一个查询示例:\n \n```\nSELECT * FROM library \nORDER BY page_count DESC LIMIT 5\n```\n \nElasticsearch SQL\n\n- 提供了一组全面的内置运算符和函数。\n- 遵循 SQL 术语和约定。\n- 每行接受一个命令。命令指通过结束输入流终止的一连串令牌\n \n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.maxFunction.markdown": "### MAX\n返回字段 field_name 中所有输入值的最大值。\n\n```\nMAX(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MAX(salary) AS max FROM emp\n```\n\n- 类型为文本或关键字的字段的 MAX 将转换为 FIRST/FIRST_VALUE因此不能用在 HAVING 子句中。\n\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.minFunction.markdown": "### MIN\n返回字段 field_name 中所有输入值的最小值。\n\n```\nMIN(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min FROM emp\n```\n\n- 类型为文本或关键字的字段的 MIN 将转换为 FIRST/FIRST_VALUE因此不能用在 HAVING 子句中。\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.moduloOperator.markdown": "### Modulo or remainder(%)\n```\nSELECT 5 % 2 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.multiplyOperator.markdown": "### Multiply (*)\n```\nSELECT 2 * 3 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.negateOperator.markdown": "### Negate (unary -)\n```\nSELECT - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.notOperator.markdown": "### NOT\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE NOT emp_no = 10000 LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullNotNull.markdown": "### IS NULL/IS NOT NULL\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no IS NOT NULL AND gender IS NULL\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.nullSafeEquality.markdown": "### Null safe equality:\n```\nSELECT 'elastic' &lt;=> null AS \"equals\"\n\n 等于\n---------------\nfalse\n```\n```\nSELECT null &lt;=> null AS \"equals\"\n\n 等于\n---------------\ntrue\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.orOperator.markdown": "### OR\n```\nSELECT last_name l FROM \"test_emp\" \nWHERE emp_no &lt; 10003 OR emp_no = 10005 ORDER BY emp_no LIMIT 5\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileFunction.markdown": "### PERCENTILE\n返回字段 field_name 中输入值的第 n 个百分位(用 numeric_exp 参数表示)。\n\n```\nPERCENTILE(\n field_name, \n percentile[, \n method[, \n method_parameter]])\n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n- 百分位数:数字表达式(必须为常数并且不得基于字段)。如果为 null该函数将返回 null。\n- 方法百分位数算法的可选字符串文本。可能的值tdigest 或 hdr。默认值为 tdigest。\n- method_parameter配置百分位数算法的可选数字文本。为 tdigest 配置表达式,或为 hdr 配置 number_of_significant_value_digits。默认值与后备算法的默认值相同。\n\n```\n精选\n languages,\n PERCENTILE(salary, 97.3, 'tdigest', 100.0) AS \"97.3_TDigest\",\n PERCENTILE(salary, 97.3, 'hdr', 3) AS \"97.3_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.percentileRankFunction.markdown": "### PERCENTILE_RANK\n返回字段 field_name 中输入值的第 n 个百分位等级(用 numeric_exp 参数表示)。\n\n```\nPERCENTILE_RANK(\n field_name, \n value[, \n method[, \n method_parameter]]) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n- 百分位数:数字表达式(必须为常数并且不得基于字段)。如果为 null该函数将返回 null。\n- 方法百分位数算法的可选字符串文本。可能的值tdigest 或 hdr。默认值为 tdigest。\n- method_parameter配置百分位数算法的可选数字文本。为 tdigest 配置表达式,或为 hdr 配置 number_of_significant_value_digits。默认值与后备算法的默认值相同。\n\n```\n精选\n languages,\n ROUND(PERCENTILE_RANK(salary, 65000, 'tdigest', 100.0), 2) AS \"rank_TDigest\",\n ROUND(PERCENTILE_RANK(salary, 65000, 'hdr', 3), 2) AS \"rank_HDR\"\nFROM emp\nGROUP BY languages\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.skewnessFunction.markdown": "### SKEWNESS\n量化字段 field_name 中输入值的非对称分布。\n\n```\nSKEWNESS(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SKEWNESS(salary) AS s FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevpopFunction.markdown": "### STDDEV_POP\n返回字段 field_name 中输入值的填充标准偏差。\n\n```\nSTDDEV_POP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_POP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.stsdevsampFunction.markdown": "### STDDEV_SAMP\n返回字段 field_name 中输入值的样例标准偏差。\n\n```\nSTDDEV_SAMP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, STDDEV_SAMP(salary) AS stddev FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.subtractOperator.markdown": "### Subtract (infix -)\n```\nSELECT 1 - 1 AS x\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumFunction.markdown": "### SUM\n返回字段 field_name 中所有输入值的总和。\n\n```\nSUM(field_name) \n```\n- 数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT SUM(salary) AS sum FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.sumofsquaresFunction.markdown": "### SUM_OF_SQUARES\n返回字段 field_name 中输入值的平方和。\n\n```\nSUM_OF_SQUARES(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, SUM_OF_SQUARES(salary) AS sumsq\n FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varpopFunction.markdown": "### VAR_POP\n返回字段 field_name 中输入值的总体方差。\n\n```\nVAR_POP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_POP(salary) AS varpop FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.documentation.varsampFunction.markdown": "### VAR_SAMP\n返回字段 field_name 中输入值的样例方差。\n\n```\nVAR_SAMP(field_name) \n```\n- field_name数字字段。如果此字段仅包含 null 值,此函数将返回 null。否则该函数将忽略此字段中的 null 值。\n\n```\nSELECT MIN(salary) AS min, MAX(salary) AS max, VAR_SAMP(salary) AS varsamp FROM emp\n```\n ",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctions": "聚合函数",
"textBasedEditor.query.textBasedLanguagesEditor.aggregateFunctionsDocumentationDescription": "用于从一组输入值计算单一结果的函数。Elasticsearch SQL 仅在与分组(隐式或显式)一起时才支持聚合函数。",
"textBasedEditor.query.textBasedLanguagesEditor.comparisonOperators": "比较运算符",
@ -5964,28 +5986,6 @@
"textBasedEditor.query.textBasedLanguagesEditor.MinimizeEditor": "最小化编辑器",
"textBasedEditor.query.textBasedLanguagesEditor.minimizeTooltip": "压缩查询编辑器",
"textBasedEditor.query.textBasedLanguagesEditor.runQuery": "运行查询",
"unifiedSearch.queryBarTopRow.submitButton.refresh": "刷新查询",
"unifiedSearch.queryBarTopRow.submitButton.run": "运行查询",
"unifiedSearch.queryBarTopRow.submitButton.update": "需要更新",
"unifiedSearch.search.searchBar.savedQueryDescriptionText": "保存想要再次使用的查询文本和筛选。",
"unifiedSearch.search.searchBar.savedQueryForm.titleConflictText": "名称与现有查询有冲突",
"unifiedSearch.search.searchBar.savedQueryForm.titleExistsText": "“名称”必填。",
"unifiedSearch.search.searchBar.savedQueryFormSaveButtonText": "保存查询",
"unifiedSearch.search.searchBar.savedQueryIncludeFiltersLabelText": "包括筛选",
"unifiedSearch.search.searchBar.savedQueryIncludeTimeFilterLabelText": "包括时间筛选",
"unifiedSearch.search.searchBar.savedQueryNameHelpText": "名称不能包含前导或尾随空格,并且必须唯一。",
"unifiedSearch.search.searchBar.savedQueryNameLabelText": "名称",
"unifiedSearch.search.searchBar.savedQueryNoSavedQueriesText": "无已保存查询。",
"unifiedSearch.search.searchBar.savedQueryPopoverApplyFilterSetLabel": "加载查询",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionCancelButtonText": "取消",
"unifiedSearch.search.searchBar.savedQueryPopoverConfirmDeletionConfirmButtonText": "删除",
"unifiedSearch.search.searchBar.savedQueryPopoverManageLabel": "管理已保存对象",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonAriaLabel": "另存为新查询",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveAsNewButtonText": "另存为新的",
"unifiedSearch.search.searchBar.savedQueryPopoverSaveChangesButtonText": "更新查询",
"unifiedSearch.switchLanguage.buttonText": "切换语言按钮。",
"unifiedSearch.triggers.updateFilterReferencesTrigger": "更新筛选参考",
"unifiedSearch.triggers.updateFilterReferencesTriggerDescription": "更新筛选参考",
"userProfileComponents.userProfilesSelectable.limitReachedMessage": "您已最多选择 {count, plural, other {# 个用户}}",
"userProfileComponents.userProfilesSelectable.selectedStatusMessage": "{count, plural, other {# 个用户已选择}}",
"userProfileComponents.userProfilesSelectable.clearButtonLabel": "移除所有用户",
@ -11372,7 +11372,6 @@
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.dataSource": "数据源",
"xpack.csp.vulnerabilities.vulnerabilityOverviewTile.publishedDate": "发布日期",
"xpack.csp.vulnerabilityTable.column.fixVersion": "修复版本",
"xpack.csp.vulnerabilityTable.column.packageAndVersion": "软件包和版本",
"xpack.csp.vulnerabilityTable.column.resource": "资源",
"xpack.csp.vulnerabilityTable.column.severity": "严重性",
"xpack.csp.vulnerabilityTable.column.vulnerability": "漏洞",
@ -39739,4 +39738,4 @@
"xpack.painlessLab.title": "Painless 实验室",
"xpack.painlessLab.walkthroughButtonLabel": "指导"
}
}
}