Я новичок в написании sql с jinja в dbt. Я создал эту переменную, например:
{% set html_tags = [
'<td>',
'</td>',
' ',
'<td style = "background-color: #d8d8d8;">',
'<span style = "text-decoration: underline; font-family: arial; font-size: 16px;">',
'<span style = "font-family: arial;">',
'</span>',
'<span style = "font-family: arial; font-size: 16px;">',
'<span class = "Apple-tab-span" style = "white-space: pre;">'
%}
У меня есть столбец с именем question, и строка содержит эти HTML-теги. Я хотел бы перебрать свой список и заменить эти теги в столбце question для каждой записи на '', чтобы очистить текст. Это возможно?
Пример строки из столбца question: <tdstyle = "background-color:#d8d8d8;">Hemoglobin</td><tdstyle = "background-color:#d8d8d8;"> 14.6g/dL </td>
Я бы хотел почистить его до Hemoglobin 14.6g/dL
Я думаю, мне нужен цикл for или макрос? Я понимаю, что это может быть не лучший подход для очистки этих html-тегов, но на данный момент это единственный доступный мне инструмент.






Вероятно, наиболее простым является создание макроса, в котором вы определяете строки (теги HTML), от которых хотите избавиться, а затем применяете его к столбцам. Если эти теги не подлежат изменению, вы можете просто жестко закодировать их в макросе:
-- macros/cleanse_html_tags.sql
{% macro cleanse_html_tags(field_with_html_tags) %}
{% set html_tags = [
'<td>',
'</td>',
' ',
'<td style = "background-color: #d8d8d8;">',
'<span style = "text-decoration: underline; font-family: arial; font-size: 16px;">',
'<span style = "font-family: arial;">',
'</span>',
'<span style = "font-family: arial; font-size: 16px;">',
'<span class = "Apple-tab-span" style = "white-space: pre;">'
]
%}
regexp_replace({{ field_with_html_tags }}, '{{ html_tags|join('|') }}')
{% endmacro %}
Затем вам просто нужно будет вызвать макрос из вашей модели следующим образом, и все:
-- your_model.sql
select {{ cleanse_html_tags('my_html_string') }} as my_string_without_html_tags
from {{ ref('your_other_model') }}