Funções semânticas
Este artigo aborda funções semânticas e como elas podem ajudar cientistas de dados e engenheiros de dados a descobrir funções que são relevantes para o FabricDataFrame ou FabricSeries em que estão trabalhando.
Para o Spark 3.4 e superior, o link semântico está disponível no runtime padrão ao usar o Fabric e não há necessidade de instalá-lo. Se você estiver usando o Spark 3.3 ou inferior, ou se quiser atualizar para a versão mais recente do link semântico, poderá executar o comando:
python %pip install -U semantic-link
Os FabricDataFrames expõem dinamicamente funções semânticas com base na lógica definida por cada função.
Por exemplo, a função is_holiday
aparece nas sugestões de preenchimento automático quando você está trabalhando em um FabricDataFrame que contém uma coluna de data e hora e uma coluna de país/região.
Cada função semântica usa informações sobre os tipos de dados, metadados (como categorias de dados do Power BI) e os dados em um FabricDataFrame ou FabricSeries para determinar sua relevância para os dados específicos com os quais você está trabalhando.
Funções semânticas são automaticamente descobertas quando anotadas com o decorador @semantic_function
.
Você pode pensar em funções semânticas como sendo semelhantes a métodos de extensão C# aplicados ao popular conceito de DataFrame.
Uso da função semântica: sugestões de preenchimento automático
Funções semânticas estão disponíveis nas sugestões de preenchimento automático quando você trabalha com um FabricDataFrame ou FabricSeries. Você pode usar CTRL+Espaço para disparar o preenchimento automático.
No exemplo a seguir, os metadados para o FabricDataFrame são especificados manualmente.
from sempy.fabric import FabricDataFrame
df = FabricDataFrame(
{"country": ["US", "AT"],
"lat": [40.7128, 47.8095],
"long": [-74.0060, 13.0550]},
column_metadata={"lat": {"data_category": "Latitude"}, "long": {"data_category": "Longitude"}},
)
# Convert to GeoPandas dataframe
df_geo = df.to_geopandas(lat_col="lat", long_col="long")
# Use the explore function to visualize the data
df_geo.explore()
Alternativamente, você poderia ler de um modelo semântico em um FabricDataFrame, e nesse caso, os metadados serão autopreenchidos.
from sempy.fabric import FabricDataFrame
# Alternative: reading from semantic model
import sempy.fabric as fabric
df = fabric.read_table("my_dataset_name", "my_countries")
# Convert to GeoPandas dataframe
df_geo = df.to_geopandas(lat_col="lat", long_col="long")
# Use the explore function to visualize the data
df_geo.explore()
Funções semânticas internas
A biblioteca Python SemPy fornece um conjunto de funções semânticas internas que estão disponíveis prontas para uso. Alguns exemplos são
is_holiday(...)
, que retornatrue
se a data for um feriado no país/região determinado, usando o pacote python holidays.to_geopandas(...)
, que converte um FabricDataFrame em um GeoPandas GeoDataFrame.parse_phonenumber(...)
, que analisa um número de telefone em seus componentes, usando o pacote Python phone numbers.validators
, que realiza validação de dados para tipos de dados comuns, como email e números de cartão de crédito. A função semântica usa o pacote Python validators.
Funções semânticas personalizadas
Funções semânticas são construídas para extensibilidade.
Você pode definir suas próprias funções semânticas dentro do seu notebook ou como um módulo Python separado.
Para usar uma função semântica fora de um notebook, a função semântica precisa ser declarada dentro do módulo sempy.functions
.
Este exemplo de código mostra a definição de uma função semântica _is_captial
que retorna true
se a cidade for a capital do país.
from sempy.fabric import FabricDataFrame, FabricSeries
from sempy.fabric.matcher import CountryMatcher, CityMatcher
from sempy.functions import semantic_function, semantic_paramters
@semantic_function("is_capital")
@semantic_parameters(col_country=CountryMatcher, col_city=CityMatcher)
def _is_captial(df: FabricDataFrame, col_country: str, col_city: str) -> FabricSeries:
"""Returns true if the city is a capital of the country"""
capitals = {
"US": ["Washington"],
"AT": ["Vienna"],
# ...
}
return df[[col_country, col_city]] \
.apply(lambda row: row[1] in capitals[row[0]], axis=1)
Os pontos a seguir fornecem uma análise do trecho de código:
- Os parâmetros
col_country
ecol_city
são anotados comCountryMatcher
eCityMatcher
, respectivamente. Esta anotação permite que a função semântica seja automaticamente descoberta ao trabalhar com um FabricDataFrame que possui os metadados correspondentes. - Chamar a função também fornece tipos de dados padrão como
str
,int
,float
edatetime
para definir as colunas de entrada necessárias. - A anotação de tipo do primeiro parâmetro (
df
) mostra que a função é aplicável a um FabricDataFrame, em vez de um FabricSeries.
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de