Limitacións de consulta: delegación e límites de consulta

Comprensión da delegación

Power Apps funciona mellor cun back-end orixe de datos cando unha Power Fx consulta se pode traducir completamente nunha consulta equivalente que se pode executar no orixe de datos. Power Apps envía unha consulta que orixe de datos entende, a consulta realízase no orixe de datos e devólvense os resultados da consulta Power Apps. Por exemplo, o orixe de datos pode facer o traballo de filtrar os datos no orixe de datos e só devolver as filas que cumpran os criterios de filtro. Cando isto funciona correctamente, dicimos que a consulta está delegada no orixe de datos para facer o traballo da consulta.

Non obstante, Power Fx as consultas non sempre se poden traducir en consultas equivalentes en todas as fontes de datos. Por exemplo, Dataverse admite máis funcións de consulta que Excel. Dataverse admite o operador de consulta "in" (membresía) e Excel non. Dicimos que a consulta é non delegable se unha consulta utiliza unha función que o orixe de datos non admite. En xeral, se algunha parte dunha expresión de consulta non se pode delegar, non delegamos ningunha parte da consulta.

Cando unha consulta non se pode delegar, Power Apps só obtén os primeiros 500 rexistros do orixe de datos e despois realiza as accións da consulta. Este límite pódese aumentar ata 2.000 rexistros Ao cambiar o límite Power Apps limita o tamaño do resultado a 500 rexistros para preservar o bo rendemento de Power Apps. A través da experimentación descubrimos que os conxuntos de resultados superiores a estes tamaños presentan problemas de rendemento para a túa aplicación e Power Apps en xeral.

Non obstante, esta limitación pode ser un problema xa que a consulta pode devolver resultados incorrectos se os datos do orixe de datos superan os 500/2000 rexistros. Por exemplo, considere o exemplo no que o seu orixe de datos ten 10 millóns de rexistros e a súa consulta debe operar na última parte dos datos. (Por exemplo, os nomes de familia que comezan por "Z"). Non obstante, a túa consulta ten un operador non delegable (por exemplo, distinto). Neste caso, só obtén os primeiros rexistros 500/2000 e ten un operador incorrecto. resultados.

Crea as túas Power Fx consultas utilizando as táboas delegables para o teu orixe de datos. Só debería usar funcións de consulta que se poden delegar. É a única forma de manter a túa aplicación funcionando ben e de garantir que os usuarios poidan acceder a toda a información que necesitan.

Teña en conta as advertencias da delegación que identifiquen os lugares nos que a delegación non é posible. Se traballas con conxuntos de datos pequenos (menos de 500 rexistros), podes usar calquera orixe de datos e fórmula porque a aplicación pode procesar datos localmente se a fórmula non se pode delegar.

Nota

Os avisos da delegación axúdanlle a xestionar a súa aplicación para que teña resultados correctos. Se os datos do teu orixe de datos superan os 500 rexistros e non se pode delegar unha función, Power Fx marcará a fórmula cun subliñado azul.

Orixes de datos delegables

A delegación é compatible tan só para certas orixes de datos en forma de táboa. Se unha orixe de datos é compatible coa delegación, a súa documentación do conector describe esa compatibilidade. Por exemplo, estas orixes de datos en forma de táboa son as máis populares e admiten delegación:

Os libros de Excel importados (usando a orixe de datos Engadir datos estáticos á súa aplicación), as coleccións e as táboas almacenados en variables de contexto non precisan delegación. Todos estes datos xa están na memoria e pode aplicarse o idioma de Power Apps completo.

Funcións delegables

O seguinte paso é usar só aquelas fórmulas que se poden delegar. Aquí están incluídos os elementos da fórmula que se poderían delegar. Non obstante, cada orixe de datos é diferente e non todos eles admiten todos estes elementos. Comprobe os avisos de delegación da súa fórmula particular.

Filtrar funcións

Filtrar, Buscar, Primeiro e Buscar pódese delegar.

Dentro das funcións Filtrar e Buscar, pode usalas con columnas da táboa para seleccionar os rexistros axeitados:

  • E (incluído &&), Ou (incluído ||), Non (incluído !)
  • No

    Nota

    En só se delega para columnas na orixe de datos base. Por exemplo, se a orixe de datos é a táboa Contas, entón Filter(Accounts, Name in ["name1", "name2"]) delega na orixe de datos para a súa avaliación. Non obstante, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) non delega xa que a columna Nome completo está nunha táboa diferente (PrimaryContact) a Contas. A expresión avalíase localmente.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Valores constantes que son iguais en todos os rexistros, como as propiedades de control e as variables globais e de contexto.

Tamén pode usar partes da súa fórmula que avalían a un valor constante para todos os rexistros. Por exemplo, Left( Language(), 2 ), Date( 2019, 3, 31 ) e Today() non dependen de ningunha columna do rexistro e, polo tanto, devolven o mesmo valor para todos os rexistros. Estes valores poden enviarse á orixe de datos como unha constante e non bloquearán a delegación.

A lista anterior non inclúe estes elementos salientables:

Limitacións de consulta

Niveis de busca

Power Apps admite dous niveis de busca. Isto significa que unha Power Fx expresión de consulta pode ter, como máximo, dúas funcións de busca. Esta limitación é para preservar o rendemento. Se unha expresión de consulta inclúe unha busca, Power Apps primeiro fai unha consulta para obter a táboa base. Despois, fai unha segunda consulta que amplía a primeira táboa coa información de busca. Apoiamos un nivel máis máis aló como máximo. Non obstante, para fóra de liña, só admitimos un nivel de ampliación de busca.

Avaliación da expresión: a propiedade da entidade debe estar no lado esquerdo "LHS" do operador de igualdade

É importante colocar a propiedade dunha entidade a comparar nunha expresión no lado esquerdo "LHS" dunha ecuación. Para ilustralo, no seguinte exemplo, a propiedade da entidade 'ID da unidade de negocio'.Name é un valor de propiedade e debe colocarse no LHS da expresión que se vai avaliar. A seguinte expresión ten éxito:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

Non obstante, esta expresión non:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

Funcións de ordenación

Ordenar e SortByColumns pódese delegar.

En Ordenar, a fórmula só pode ser o nome dunha única columna e non pode incluír outros operadores ou funcións.

Agregar funcións

Algunhas funcións agregadas pódense delegar dependendo da compatibilidade do back-end. Suma, Media, Mín e Máx pódese delegar. Tamén se poden delegar funcións de reconto como CountRows e Count . Só un número limitado de fontes de datos admiten estas funcións para a delegación neste momento. Para obter máis información, consulte Lista de delegacións.

RemoveIf e UpdateIf a compatibilidade de delegación está en Experimental e desactivada de forma predeterminada.

Funcións non delegables

Todas as outras funcións non admiten a delegación, incluído estas funcións notables:

Límites non delegables

As fórmulas que non se poden delegar procesaranse localmente. O procesamento local permite utilizar toda a amplitude da linguaxe de fórmula Power Apps . Pero a cambio dun prezo: en primeiro lugar hai que levar ao dispositivo todos os datos, o que podería implicar a recuperación dunha grande cantidade de datos a través da rede. Isto pode levar tempo, dando a impresión de que a súa aplicación vai lenta ou presenta erros.

Para evitar isto, Power Apps impón un límite á cantidade de datos que se poden procesar localmente: 500 rexistros por defecto. Escollemos este número para que aínda teña acceso completo a pequenos conxuntos de datos e poida refinar o uso de grandes conxuntos de datos ao ver resultados parciais.

Obviamente, hai que ter coidado ao usar esta instalación porque pode confundir aos usuarios. Por exemplo, considere a función Filtro cunha fórmula de selección que non se pode delegar, a través dunha orixe de datos que contén un millón de rexistros. Debido a que a filtraxe faise localmente, só se escanean os primeiros 500 rexistros. Se o rexistro desexado é o rexistro 501 ou 500.001, non será considerado nin devolto por Filtrar.

As funcións agregadas tamén poden causar confusión. Tome a Media nunha columna desa mesma orixe de datos dun millón de rexistros. Media non se pode delegar neste caso xa que a expresión non está delegada (consulte a nota anterior), polo que só se promedian os primeiros 500 rexistros. Se non ten coidado, unha resposta parcial podería ser mal interpretada como unha resposta completa por parte do usuario da súa aplicación.

Cambio do límite

500 é o número predeterminado de rexistros, pero pode cambiar este número para unha aplicación completa:

  1. Seleccione Configuración.
  2. En Xeral, cambie a configuración Límite de filas de datos de 1 a 2000.

Nalgúns casos, sabes que 2.000 (ou 1.000 ou 1.500) satisfarán as necesidades do teu escenario. Con coidado, pode aumentar este número para adaptalo ao seu escenario. A medida que aumente este número, o rendemento da aplicación pode reducirse, especialmente con táboas amplas con moitas columnas. Aínda así, a mellor resposta é delegar o máximo que poida.

Para garantir que a túa aplicación poida escalar a grandes conxuntos de datos, reduce esta configuración a 1. Todo o que non se poida delegar devolverá un único rexistro, o cal debe ser fácil de detectar ao probar a súa aplicación. Isto pode axudar a evitar sorpresas ao tentar levar unha aplicación de proba de concepto á fase de produción.

Avisos de delegación

Para que resulte máis fácil saber que se está delegando e que non, Power Apps fornece un aviso (triángulo amarelo) cando crea unha fórmula que contén algo que non se pode delegar.

Os avisos sobre delegacións aparecen só en fórmulas que funcionan en orixes de datos delegables. Se non ves unha advertencia e cres que a túa fórmula non se está a delegar correctamente, comproba o tipo de orixe de datos na lista de fontes de datos delegables ao principio desta artigo.

Exemplos

Para este exemplo, xerará automaticamente unha aplicación de tres pantallas baseada nunha táboa de SQL Server chamada [dbo].[Fruit]. Para obter información sobre como xerar a aplicación, podes aplicar principios similares no artigo sobre Dataverse a SQL Server.

Aplicación de tres pantallas.

A propiedade Items da galería está establecida nunha fórmula que contén as funcións SortByColumns e Buscar, as cales poden delegarse.

Na caixa de busca, escriba "Mazá".

Aparecerán puntos en movemento momentaneamente preto da parte superior da pantalla mentres a aplicación se comunica con SQL Server para procesar a solicitude de busca. Aparecerán todos os rexistros que cumpren os criterios de busca, aínda que a orixe de datos conteña millóns de rexistros.

Control da entrada de texto da busca.

Entre os resultados da busca inclúense "Mazás", "Piña" porque a función Buscar realiza buscas en todas as partes dunha columna de texto. Se quería atopar só rexistros que conteñan o termo de busca ao comezo do nome da froita, pode usar outra función delegable, Filtro, cun termo de busca máis complicado. (Para maior simpleza, elimine a chamada SortByColumns).

Eliminar a chamada SortByColumns.

Os novos resultados inclúen "Mazás", pero non "Piña". Non obstante, aparecerá un triángulo amarelo xunto á galería (e na miniatura da pantalla se a barra de navegación da esquerda mostra miniaturas), así como unha liña azul e ondulada baixo unha parte da fórmula. Cada un destes elementos indica unha advertencia. Se pasa o punteiro do rato sobre o triángulo amarelo situado a carón da galería, aparecerá esta mensaxe:

Pase o punteiro do rato sobre o aviso de delegación.

SQL Server é unha orixe de datos delegable e Filtro é unha función delegable, non obstante, Medio e Len non se poden delegar a ningunha orixe de datos.

Pero funcionou, non si? Ben, máis ou menos. Ese é o motivo polo que isto é unha advertencia e non un garabato vermello e ondulado.

  • Se a táboa contén menos de 500 rexistros, a fórmula funcionou perfectamente. Todos os rexistros foron levados ao dispositivo e aplicouse Filtro localmente.
  • Se a táboa contén máis de 500 rexistros, a fórmula non devolverá o rexistro 501 nin ningún superior, aínda que coincida cos criterios.

Consulte tamén

Impacto do uso de funcións non delegables e límites de filas de datos inadecuado no rendemento
Suxestións e procedementos recomendados de desempeño para usar a delegación

Nota

Pode indicarnos as súas preferencias para o idioma da documentación? Realice unha enquisa breve. (teña en conta que esa enquisa está en inglés)

Esta enquisa durará sete minutos aproximadamente. Non se recompilarán datos persoais (declaración de privacidade).