officetuning/skill-library

dax-udf

Funções DAX definidas pelo usuário (UDF) no padrão OfficeTuning — onde criar (DAX Query View, TMDL view, Model Explorer), sintaxe FUNCTION, tipos de parâmetro (ANYVAL, SCALAR, TABLE, MEASUREREF, COLUMNREF, TABLEREF, CALENDARREF), VAL × EXPR, parâmetro opcio…

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/officetuning/skill-library --skill dax-udf

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

UDF DAX

Uma UDF empacota lógica DAX com nome e parâmetros para reutilizar em medidas, colunas calculadas, cálculos visuais, formatos dinâmicos e outras UDFs. GA no Desktop e no Service desde junho/2026; exige nível de compatibilidade 1702 ou superior.

Antes de escrever uma função do zero, procure na Code Library UDF DAX (functionlibrary.officetuning.com.br/dax/udf/biblioteca): calendário, comparativo AV/AA/Δ (Delta.*), datas fiscais, feriados, texto, estatística.

Fluxo de trabalho

  1. Escreva e teste na DAX Query View com DEFINE FUNCTION … EVALUATE.

Nada vai para o modelo até você aprovar.

  1. Grave no modelo: CodeLens Update model: Add new function (uma) ou

Update model with changes (todas). Na TMDL view, botão Apply.

  1. Use na medida e confira o resultado num visual.
  2. Em .pbip, a função fica em definition/functions.tmdl e entra no Git

como qualquer medida (ver tmdl-pbir).

Anatomia (padrão da casa)

dax
DEFINE
    /// Aplica imposto sobre um valor.
    /// @param {NUMERIC} valor - Valor antes do imposto
    /// @param {NUMERIC} [aliquota] - Alíquota opcional; padrão 0,1 (10%)
    /// @returns O valor com imposto
    FUNCTION Fiscal.ComImposto =
        ( valor : NUMERIC, aliquota : NUMERIC = 0.1 ) =>
            valor * ( 1 + aliquota )

EVALUATE
    ROW (
        "Padrão", Fiscal.ComImposto ( 100 ),
        "Alíquota 20%", Fiscal.ComImposto ( 100, 0.2 )
    )
-- 110 e 120
RegraPadrão OfficeTuning
Nome da funçãoGrupo.Acao com ponto para agrupar: Vendas.Margem, Delta.AA, Formato.Escala. Sem espaço, sem ponto no início/fim, sem nome de função nativa ou palavra reservada
Nome do parâmetrocamelCase, sem ponto. Parâmetro EXPR termina em Expr (valorExpr) para quem chama saber que será calculado dentro da função
Documentação/// acima da função com @param {TIPO} nome - descrição, [nome] para opcional e @returns. Comentário // não aparece no IntelliSense
TipoO mais específico que resolve: o IntelliSense e a validação recusam o argumento errado já na chamada
TesteTodo exemplo traz um EVALUATE com o resultado esperado em comentário

Tipos de parâmetro

Forma: nome : [tipo] [subtipo] [modo] [= padrão]. Sem nada, vale ANYVAL VAL.

FamíliaTipoAceitaModo
ValorANYVALEscalar ou tabelaVAL (padrão) ou EXPR
ValorSCALAR + subtipoEscalarVAL (padrão) ou EXPR
ValorTABLETabelaVAL (padrão) ou EXPR
ExpressãoANYREFQualquer referênciasempre EXPR
ExpressãoMEASUREREF / COLUMNREF / TABLEREF / CALENDARREFReferência daquele tiposempre EXPR

Subtipos de SCALAR (declarar o subtipo já implica SCALAR): INT64, DECIMAL, DOUBLE, NUMERIC (qualquer dos três), STRING, DATETIME, BOOLEAN, VARIANT. Tipos de valor convertem implicitamente ("5" vira 5 num INT64); tipos de expressão não.

VAL × EXPR — a decisão que mais erra

ModoQuando calculaHerda do chamador
VALUma vez, antes de entrar na funçãoContexto de linha e de filtro
EXPRDentro da função, onde aparece (pode ser várias vezes, em outro contexto)Só o contexto de filtro
  • Use VAL para número, texto, data, tabela pronta.
  • Use EXPR quando a função precisa mudar o contexto da expressão

(CALCULATE, ALL, iterar e recalcular por linha).

  • Dentro de iterador, MEASUREREF faz transição de contexto sozinha;

SCALAR EXPR com SUM(...) não — envolva em CALCULATE ( valorExpr ).

Exemplos completos (TABLE VAL × EXPR, TOP N com MEASUREREF, checagem de tipo): references/padroes-udf.md.

UDF em formato dinâmico de medida

O caso que mais economiza: a mesma lógica de formato em várias medidas. Na medida: Formato → Dinâmico e, na expressão de formato:

dax
Formato.Escala ( SELECTEDMEASURE () )

A medida continua numérica (gráficos funcionam), ao contrário de FORMAT() dentro da medida, que devolve texto. No visual, deixe Unidades de exibição = Nenhum, senão o visual reescala por cima. Código da Formato.Escala e variações: references/padroes-udf.md.

Onde usar e cuidados

OndeCuidado
Medida—
Coluna calculadaA função deve devolver sempre o mesmo tipo; fixe com CONVERT
Cálculo visualSó enxerga campos do visual; sem IntelliSense para UDF
Outra UDFSem recursão
Formato dinâmicoUnidades de exibição = Nenhum no visual

Limitações (confira a data no Microsoft Learn)

  • Sem recursão (nem mútua), sem sobrecarga, sem tipo de retorno declarado.
  • Não dá para ocultar, colocar em pasta de exibição nem traduzir a função.
  • Não funciona em modelo sem tabelas.
  • Conexão dinâmica: medidas de relatório chamam a UDF, sem IntelliSense.

Modelo composto: medidas do modelo local não chamam UDF do modelo de origem.

  • ⚠️ OLS não passa para a função. Não exponha objeto protegido em nome ou

descrição de função.

  • Nome sem tabela ([Valor]) é lido como medida: dentro de UDF, sempre

qualifique colunas (Vendas[Valor]).

  • Parâmetro EXPR não usado no corpo nunca é calculado.

Listar e auditar

dax
EVALUATE INFO.USERDEFINEDFUNCTIONS ()   -- nome, expressão, estado, erro

Metadados completos podem exigir permissão de escrita ou de administrador do modelo, conforme o host. State = Error + ErrorMessage mostram função quebrada depois de renomear tabela ou coluna.

Fontes

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills
officetuning
커뮤니티

bi-nomenclatura

Padrão Corporativo de Nomenclatura para SQL, ETL e modelo semântico Power BI — prefixos Tab/Vw/Pr/Fn/Cns, TabDim/TabFat/TabPon/TabFlt, fronteira entre camada física e semântica, nomes de medida e a convenção de comparativo temporal AV/AA/Δ/Δ%/Δi. Use ao nomear ou renomear tabela, view, procedure, consulta, coluna ou medida, ao escolher prefixo, ao criar alias SQL ou ao nomear medida que compara com o ano anterior.

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

bi-qa-documentacao

Documentar e validar um modelo Power BI antes de publicar — descrição de medida com /// na DAX Query View, QA em três camadas (Best Practice Analyzer pelo Tabular Editor CLI, smoke test de medidas via XMLA, binding visual.json × TMDL), pipeline de CI/CD e geração de documentação .docx a partir do TMDL/PBIR. Use para documentar medida no código, checklist de publicação automatizado, validar PBIP, CI/CD Power BI, testar medidas por script, visual quebrado, dicionário de dados, handoff ou "gerar Wo

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

dashboard-canvas

Método Dashboard Canvas (OfficeTuning) para planejar um relatório Power BI antes de abrir o Desktop — 12 blocos em 4 fases (Descoberta, Dados, Governança, Execução), taxonomia de tabela e campo, matrizes Tipo de Dado × Segmentação e Tipo de Dado × 5W2H, anatomia de página e revisão de modelo existente contra o Canvas. Use em briefing de BI, workshop com cliente, escopo de dashboard, cronograma de projeto BI, 5W2H ou "planejar dashboard". Para posição em pixel dos visuais use dashboard-layout.

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

dashboard-layout

Wireframe, grid e sistema visual de relatórios Power BI — base 8px, grid 12×9 sobre canvas 1920×1080, conversão para x/y/width/height do visual.json, zonas reservadas e modos de filtro do Background Builder, tooltip 400×304, paleta derivada de Accent/Navy e o bug de fuso horário em "última atualização" no Service. Use para definir onde cada visual fica, padronizar layout entre páginas, montar um relatório a partir do Background Builder, diagnosticar relatório desalinhado ou data de atualização e

설치 수
1
GitHub Stars
1
업데이트
10월 3일