Я пытаюсь использовать Terraform aws_glue_catalog_table
для создания Virtual_View, который, как я понимаю, должен отображаться в Афинах как представление.
Пока мой код создает таблицу каталогов в Glue, но ничего появляется в инвентаре Athena Views.
Трудно точно определить, какая часть является проблемой. Я попытался сравнить сгенерированную таблицу склеивания с существующей, созданной вручную, но с той же спецификацией, но в показанной информации нет различий, но часть «оригинального текста» трудно сравнивать при кодировании.
Есть попытался удалить раздел ser_de_info, но, похоже, ничего не изменилось.
Благодарен за любые подсказки здесь!
Действительно не уверен, почему TF не позволяет нам просто отправлять простой оператор SQL DDL для их создания, поскольку этот метод склеивания слишком сложен, чтобы иметь практический смысл - объявление столбцов дважды в 2 разных форматах, сценарий кодирования - оба просто плохи
resource "aws_glue_catalog_table" "aws_gluetable_getresources_vw" {
name = "getresources_vw"
database_name = "mydatabase"
table_type = "VIRTUAL _VIEW"
view_original_text = "/* Presto View: ${base64encode(file("${path.module}/originaltexts/getresources.txt"))} */"
view_expanded_text = "/* Presto View */"
parameters = {
presto_view = "true"
comment = "Presto View"
}
storage_descriptor {
ser_de_info {
name = " "
serialization_library = " "
}
columns {
name = "key"
type = "string"
}
columns {
name = "value"
type = "string"
}
columns {
name = "resourcearn"
type = "string"
}
columns {
name = "tags"
type = "array<struct<key:string,value:string>>"
}
.... more
}
}
}
getresources.txt
{
"catalog":"awsdatacatalog",
"schema":"mydatabase",
"columns":[
{"name":"key","type":"varchar"},
{"name":"value","type":"varchar"},
{"name":"resourcearn","type":"varchar"},
{"name":"tags","type":"array(row(key varchar,value varchar))"},
{"name":"arn1","type":"varchar"},
{"name":"arn2","type":"varchar"},
{"name":"arn3","type":"varchar"},
{"name":"arn4","type":"varchar"}
],
"originalSql":"SELECT g.tag.key, g.tag.value, t.resource.resourcearn, t.resource.tags, split_part(t.resource.resourcearn, ':', 1) arn1, split_part(t.resource.resourcearn, ':', 2) arn2, split_part(t.resource.resourcearn, ':', 3) arn3, split_part(t.resource.resourcearn, ':', 6) arn4 FROM ((ap_ath_meta_use_sbx.getresources h CROSS JOIN UNNEST(h.resourcetagmappinglist) t (resource)) CROSS JOIN UNNEST(t.resource.tags) g (tag))"
}