Справочная информация:
Этот вопрос, возможно, немного широк, но, надеюсь, интересен всем, кто использует реляционные данные, R, Power BI или все вышеперечисленное.
Я пытаюсь воссоздать реляционную модель для набора данных nycflights13
, описанного в книге R для Data Science от Wickham and Grolemund
.И я пытаюсь сделать это, используя R и Power BI.Набор данных состоит из 5 таблиц airlines
, ariports
, flights
, weather
и planes
.В разделе 13.2 nycflights13
есть отрывок, в котором говорится:
Полеты связаны с погодой через место происхождения (местоположение), а также год, месяц, день и час (время).
Отношения иллюстрируются этим рисунком:
![enter image description here](https://i.stack.imgur.com/m5tjk.png)
Вопрос 1. Как настроить эту модель в Power BI?
Использование следующего сценария R сделает наборы данных для Power BI доступными в папке c:/data
:
# install.packages("tidyverse")
# install.packages("nycflights13")
library(tidyverse)
library(nycflights13)
setwd("C:/data/")
#getwd()
airlines
df_airlines <- data.frame(airlines)
df_airports <- data.frame(airports)
df_planes <- data.frame(planes)
df_weather <- data.frame(weather)
df_flights <- data.frame(flights)
write.csv(df_airlines, file = "C:/data/airlines.txt", row.names = FALSE)
write.csv(df_airports, file = "C:/data/airports.txt", row.names = FALSE)
write.csv(df_planes, file = "C:/data/planes.txt", row.names = FALSE)
write.csv(df_weather, file = "C:/data/weather.txt", row.names = FALSE)
write.csv(df_flights, file = "C:/data/flights.txt", row.names = FALSE)
После импорта таблиц в Power BI я пытаюсьустановить отношения в Relationships tab
:
![enter image description here](https://i.stack.imgur.com/hUPQq.png)
И я могу сделать это в некоторой степени, но когда я пытаюсь подключиться flights
к weather
используя, например, year
, я получаю следующее сообщение об ошибке:
Невозможно создать связь между этими двумя столбцами, поскольку один из столбцов должен иметь уникальные значения.
И я понимаю, что это происходит потому, что первичные ключи должны содержать уникальные значения и не могутсодержат нулевые значения .Но как вы можете установить первичный ключ в Power BI, который состоит из нескольких полей?
Вопрос 2. Если нет ответа на вопрос 1, как вы можете сделать это в Rвместо этого?
Я действительно люблю эту книгу, и она даже может быть там уже описана, но как установить такие отношения в R?Или, может быть, вам не нужно, так как вы можете объединить несколько столбцов или составной ключ, используя dplyr , при этом вообще не «установив» связь?
Иными словами, являются ли отношенияпоказано на рисунке aboe со стрелками:
![enter image description here](https://i.stack.imgur.com/ViVnp.png)
и в Power BI со строками:
![enter image description here](https://i.stack.imgur.com/ExT4c.png)
действительно не требуется в R, если у вас есть необходимые глаголы и действительно существует связь между данными в разных таблицах?
Вопрос 3 - Почему рейс выделен в таблице рейсов:
Мне показалось, что выделенное имя столбца указывает на то, что между таблицами, использующими этот столбец, установлена связь.Но, насколько я могу судить, здесь дело обстоит не так, и на него не указывает стрелка:
![enter image description here](https://i.stack.imgur.com/UiRlC.png)
Возможно, это указывает на то, чтоэто первичный ключ в таблице flights
без какой-либо связи с другой таблицей?
Я знаю, что это немного широко, но мне действительно интересно узнать об этих вещахтак что я надеюсь, что некоторые из вас найдут это интересным!